CREATE TABLE

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

前提条件

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

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

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

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

示例

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

  1. create table test_table (
  2. rowkey varchar,
  3. feature float[4] COLPROPERTIES(DistanceMeasure=SquaredL2),
  4. seed_name varchar,
  5. cluster_label varchar,
  6. ANN INDEX ecnn_index(feature) Algorithm=Graph_hnsw,
  7. PRIMARY KEY (rowkey)
  8. )
  9. PARTITION BY HASH KEY (rowkey) PARTITION NUM 32
  10. TABLEGROUP test_group
  11. OPTIONS (UPDATETYPE='realtime')

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

  1. create table test_table2 (
  2. rowkey varchar,
  3. feature float[4] COLPROPERTIES(DistanceMeasure=SquaredL2),
  4. seed_name varchar,
  5. cluster_label varchar,
  6. dt long,
  7. ANN INDEX ecnn_index(feature) Algorithm=Graph_hnsw,
  8. PRIMARY KEY (rowkey, dt )
  9. )
  10. PARTITION BY HASH KEY (rowkey) PARTITION NUM 32
  11. SUBPARTITION BY LIST KEY (dt)
  12. SUBPARTITION OPTIONS (available_partition_num = 4)
  13. TABLEGROUP test_group
  14. 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 支持 不支持 不支持
阿里云首页 云原生数据仓库AnalyticDB MySQL版 相关技术圈