CREATE TABLE
本文将通过具体示例,为您介绍如何通过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 支持 不支持 不支持