文档

定义向量列(2.0版)

更新时间:

本文将通过具体示例,为您介绍如何通过CREATE TABLE定义向量列。

前提条件

  • 只有ECU类型为H8的集群支持向量功能,其他类型ECU不支持向量功能。

  • 只支持在普通表(实时表)中定义向量列。

  • 创建普通表之前,需要先创建表组,否则系统执行建表语句时将提示出错。

  • 相同表组下普通表的HASH分区数必须相同。

示例

TEST_GROUP表组下创建一级分区表TEST_TABLE,通过feature float[4] COLPROPERTIES(DistanceMeasure=SquaredL2)定义向量列。

create table test_table (
rowkey varchar,
feature float[4] COLPROPERTIES(DistanceMeasure=SquaredL2),
seed_name varchar,cluster_label varchar,
ANN INDEX ecnn_index(feature) Algorithm=Graph_hnsw,
PRIMARY KEY (rowkey)
)
PARTITION BY HASH KEY (rowkey) PARTITION NUM 32
TABLEGROUP test_group
OPTIONS (UPDATETYPE='realtime')

TEST_GROUP表组下创建二级分区表TEST_TABLE2,通过feature float[4] COLPROPERTIES(DistanceMeasure=SquaredL2)定义向量列。

create table test_table2 (
rowkey varchar,
feature float[4] COLPROPERTIES(DistanceMeasure=SquaredL2),
seed_name varchar,
cluster_label varchar,
dt long,ANN INDEX ecnn_index(feature) Algorithm=Graph_hnsw,
PRIMARY KEY (rowkey, dt )
)
PARTITION BY HASH KEY (rowkey) PARTITION NUM 32
SUBPARTITION BY LIST KEY (dt)
SUBPARTITION OPTIONS (available_partition_num = 4)
TABLEGROUP test_group
OPTIONS (UPDATETYPE='realtime')

参数

  • feature:向量列的名称,用户自定义。

  • float[4]:向量列的数据类型和向量的维数,用户自定义。

  • COLPROPERTIES:系统关键字,定义向量列在进行ANN查询和构建索引时采用的向量距离计算公式。

  • DistanceMeasure:系统关键字,DistanceMeasure的值为向量距离计算公式,默认值为:

    • int[]Hammin

    • byte[]short[]或者float[]SquaredEuclidean

      重要

      向量距离计算公式定义后不支持更改

      AnalyticDB for MySQL支持的向量距离计算公式如下表所示。

      距离计算公式

      计算公式

      适用数据类型

      SquaredEuclidean(简称SquaredL2)

      (x1-y1)^2+(x2-y2)^2+…

      byte[]、short[]或者float[]

      Hamming

      Integer.bitCount(x1^y1)+Integer.bitCount(x2^y2)+Integer.bitCount(x3^y3)+…

      int[]

      DotProduct

      x1*y1+x2*y2+x3*y3+…

      byte[]、short[]或者float[]

      对数据的L2范数有如下要求:

      • float[]的L2范数为1

      • byte[]的L2范数为127

      • short[]的L2范数为32767

  • ANN:系统关键字。

  • INDEX:系统关键字。

  • ecnn_index:索引名,用户自定义。

  • Algorithm:向量距离计算公式使用的算法。AnalyticDB for MySQL支持的向量距离计算公式算法如下表所示。

    算法

    适用场景

    适用数据

    Native_FLAT(SSE线性计算)

    适用于单表数据量小于10万条、向量维度为256左右的小数据量场景。

    int[]、short[]、byte[]、float[]

    GRAPH_HNSW

    适用于单表数据量在百万级别到千万级别之间,对向量维度敏感的中等规模数据量场景。

    int[]、short[]、byte[]、float[]

    VG_PQ

    适用于单表数量在千万级别以上,向量维度高的大规模、超大规模数据量场景。

    short[]、byte[]、float[]

    向量算法(IndexAlgorithm)支持的向量距离计算公式(DistanceMeasure)如下表所示。

    算法

    SquaredEuclidean

    DotProduct

    Hamming

    Native_FLAT

    支持

    支持

    支持

    GRAPH_HNSW

    支持

    支持

    支持

    VG_PQ

    支持

    不支持

    不支持

  • 本页导读 (1)
文档反馈