通过使用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。