通過SQL導(dǎo)入向量數(shù)據(jù)
在進行向量分析前,您需要在數(shù)據(jù)庫中導(dǎo)入數(shù)據(jù),本教程將指導(dǎo)您如何通過SQL導(dǎo)入數(shù)據(jù)至AnalyticDB PostgreSQL版實例。
前提條件
已開啟向量檢索引擎功能,目前已支持如下兩種方式開啟:
在創(chuàng)建實例時開啟向量引擎優(yōu)化,更多信息,請參見創(chuàng)建實例。
如果已創(chuàng)建實例未開啟向量引擎優(yōu)化,您還可以在控制臺手動開啟該功能,更多信息請參見開啟或關(guān)閉向量檢索引擎優(yōu)化。
數(shù)據(jù)庫已安裝向量檢索插件FastANN,您可以通過
\dx fastann
命令查看是否安裝,如果返回FastANN插件的相關(guān)信息,表示已安裝;如果沒有返回任何信息,請提交工單聯(lián)系技術(shù)支持進行安裝。
測試數(shù)據(jù)
為方便您測試,AnalyticDB PostgreSQL版提供了測試數(shù)據(jù),下載鏈接,請參見vector_sample_data.csv。
測試數(shù)據(jù)的表結(jié)構(gòu)如下。
字段 | 類型 | 說明 |
id | bigint | 編號。 |
market_time | timestamp | 汽車上市時間。 |
color | varchar(10) | 汽車的顏色。 |
price | int | 汽車的價格。 |
feature | float4[] | 汽車照片的特征向量。 |
以下示例為Linux系統(tǒng)的服務(wù)器下載測試數(shù)據(jù)的命令。
wget https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20230606/uzkx/vector_sample_data.csv
導(dǎo)入數(shù)據(jù)
本教程將使用\COPY
命令導(dǎo)入本地數(shù)據(jù)。
創(chuàng)建一個新的數(shù)據(jù)庫并切換到該庫。
-- 創(chuàng)建一個名為testdb的數(shù)據(jù)庫 CREATE DATABASE testdb; -- 切換到該庫 \c testdb
根據(jù)測試數(shù)據(jù)創(chuàng)建一張包含向量列的表。
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);
創(chuàng)建索引。
本次教程將為汽車的上市時間、顏色、價格等字段創(chuàng)建結(jié)構(gòu)化索引,為汽車照片特征向量創(chuàng)建向量索引。
-- 修改向量列的存儲格式為PLAIN ALTER TABLE vector_test.car_info ALTER COLUMN feature SET STORAGE PLAIN; -- 創(chuàng)建結(jié)構(gòu)化索引 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); -- 創(chuàng)建向量索引 CREATE INDEX ON vector_test.car_info USING ann(feature) WITH (dim='10', pq_enable='0');
將測試數(shù)據(jù)加載至數(shù)據(jù)表中。
\COPY vector_test.car_info FROM '/DATA_PATH/vector_sample_data.csv';
請將示例中的
/DATA_PATH/vector_sample_data.csv
替換為測試數(shù)據(jù)所在的路徑,例如,測試數(shù)據(jù)下載到了/home
目錄下,那么此處應(yīng)該為/home/vector_sample_data.csv
。導(dǎo)入成功后,系統(tǒng)會返回
COPY 10000
。