在进行向量分析前,您需要在数据库中导入数据,本教程将指导您如何通过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
命令导入本地数据。
创建一个新的数据库并切换到该库。
-- 创建一个名为testdb的数据库 CREATE DATABASE testdb; -- 切换到该库 \c testdb
根据测试数据创建一张包含向量列的表。
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);
创建索引。
本次教程将为汽车的上市时间、颜色、价格等字段创建结构化索引,为汽车照片特征向量创建向量索引。
-- 修改向量列的存储格式为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');
将测试数据加载至数据表中。
\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
。