Vector数据类型

更新时间:
复制 MD 格式

通过使用VECTOR数据类型,能够高效地编码和处理向量。此数据类型支持语义向量搜索和检索应用,如基于RAG的应用,以及向量处理应用中常见的向量操作。

数据类型语法

使用以下语法指定 VECTOR 类型

VECTOR( FLOAT <type>, <dimension> )

-- 定义一个 768 维浮点型向量
VECTOR(FLOAT, 768)
  • type:向量元素的数据类型。当前仅支持 FLOAT类型。

  • dimension:向量维度,必须为正整数,取值范围为[1, 4096]

使用限制

  • VECTOR 类型的列不支持作为 PRIMARY KEYCLUSTER KEY

  • VECTOR 类型的列不支持作为ORDER BYGROUP BYJOINKEY。

  • VECTOR 类型数据暂不支持算术运算(如 +、-、*、/、%)、比较操作(如 =、>、<)以及聚合函数计算(如 SUM、MIN、MAX、AVG、MEDIAN)。

  • 仅支持通过 MaxCompute SQL 引擎处理。

  • 开发工具仅支持本地客户端(odpscmd)Python SDKDataWorks

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_SEARCHL2_DISTANCEINNER_PRODUCT_DISTANCECOSINE_DISTANCE

VECTOR INDEX

为进一步提升大规模向量检索效率,MaxCompute 支持基于 VECTOR 字段创建 向量索引(Vector Index),实现高效的近似最近邻(ANN)查询。详细信息请参见VECTOR INDEX