通过SQL导入向量数据

更新时间:

在进行向量分析前,您需要在数据库中导入数据,本教程将指导您如何通过SQL导入数据至AnalyticDB PostgreSQL版实例。

前提条件

  • 已开启向量检索引擎功能,目前已支持如下两种方式开启:

  • 数据库已安装向量检索插件FastANN,您可以通过\dx fastann命令查看是否安装,如果返回FastANN插件的相关信息,表示已安装;如果没有返回任何信息,请提交工单联系技术支持进行安装。

测试数据

为方便您测试,AnalyticDB PostgreSQL版提供了测试数据,下载链接,请参见vector_sample_data.csv

测试数据的表结构如下。

字段

类型

说明

id

bigint

编号。

market_time

timestamp

汽车上市时间。

color

varchar(10)

汽车的颜色。

price

int

汽车的价格。

feature

float4[]

汽车照片的特征向量。

以下示例为Linux系统的服务器下载测试数据的命令。

wget https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20230606/uzkx/vector_sample_data.csv

导入数据

本教程将使用\COPY命令导入本地数据。

  1. 登录数据库

  2. 创建一个新的数据库并切换到该库。

    -- 创建一个名为testdb的数据库
    CREATE DATABASE testdb;
    
    -- 切换到该库
    \c testdb
  3. 根据测试数据创建一张包含向量列的表。

    CREATE SCHEMA IF NOT EXISTS vector_test;
    CREATE TABLE IF NOT EXISTS vector_test.car_info
    (
      id bigint NOT NULL,
      market_time timestamp,
      color varchar(10),
      price int,
      feature float4[],
      PRIMARY KEY(id)
    ) DISTRIBUTED BY(id);
    
  4. 创建索引。

    本次教程将为汽车的上市时间、颜色、价格等字段创建结构化索引,为汽车照片特征向量创建向量索引。

    -- 修改向量列的存储格式为PLAIN
    ALTER TABLE vector_test.car_info ALTER COLUMN feature SET STORAGE PLAIN;
    
    -- 创建结构化索引
    CREATE INDEX ON vector_test.car_info(market_time);
    CREATE INDEX ON vector_test.car_info(color);
    CREATE INDEX ON vector_test.car_info(price);
    
    -- 创建向量索引
    CREATE INDEX ON vector_test.car_info USING ann(feature) WITH (dim='10', pq_enable='0');
  5. 将测试数据加载至数据表中。

    \COPY vector_test.car_info FROM '/DATA_PATH/vector_sample_data.csv';

    请将示例中的/DATA_PATH/vector_sample_data.csv替换为测试数据所在的路径,例如,测试数据下载到了/home目录下,那么此处应该为/home/vector_sample_data.csv

    导入成功后,系统会返回COPY 10000

相关文档

下一步

向量分析