通過使用VECTOR資料類型,能夠高效地編碼和處理向量。此資料類型支援語義向量搜尋和檢索應用,如基於RAG的應用,以及向量處理應用中常見的向量操作。
資料類型文法
使用以下文法指定 VECTOR 類型
VECTOR( FLOAT <type>, <dimension> )
-- 定義一個 768 維浮點型向量
VECTOR(FLOAT, 768)type:向量元素的資料類型。當前僅支援FLOAT類型。dimension:向量維度,必須為正整數,取值範圍為[1, 4096]。
使用限制
VECTOR 類型的列不支援作為
PRIMARY KEY、CLUSTER KEY。VECTOR 類型的列不支援作為
ORDER BY、GROUP BY、JOIN的KEY。VECTOR 類型資料暫不支援算術運算(如 +、-、*、/、%)、比較操作(如 =、>、<)以及彙總函式計算(如 SUM、MIN、MAX、AVG、MEDIAN)。
僅支援通過 MaxCompute SQL 引擎處理。
開發工具僅支援本地用戶端(odpscmd)、Python SDK 和DataWorks。
SQL文法
SET
使用VECTOR資料類型,需設定如下flag:
SET odps.sql.type.system.odps2=true;
SET odps.sql.type.vector.enable=true;DDL
支援在 MaxCompute 表中直接儲存向量資料:
-- 建立一個含VECTOR欄位的表
CREATE OR REPLACE TABLE products (
description_embedding VECTOR(FLOAT, 3)
);DML
構造 VECTOR 類型資料主要有兩種方式。
支援ARRAY<FLOAT>類型 CAST 為VECTOR類型。轉換時,系統會自動校正ARRAY維度和目標VECTOR類型維度定義是否匹配。
支援使用AI_EMBEDDING直接產生 VECTOR 類型資料。
使用樣本
-- 支援通過ARRAY類型顯示或隱式轉換,需要校正array 維度和目標VECTOR類型維度定義是否匹配 INSERT INTO products select CAST(array(1.1,2.2,3.3) as VECTOR(FLOAT,3)); SELECT * FROM products; -- 返回結果 +-----------------------+ | description_embedding | +-----------------------+ | [1.1, 2.2, 3.3] | +-----------------------+
VECTOR函數
目前支援的VECTOR函數有:
VECTOR_SEARCH、L2_DISTANCE、INNER_PRODUCT_DISTANCE和 COSINE_DISTANCE。
VECTOR INDEX
為進一步提升大規模向量檢索效率,MaxCompute 支援基於 VECTOR 欄位建立向量索引(Vector Index),實現高效的近似最近鄰(ANN)查詢。詳細資料請參見VECTOR INDEX。