定义向量列(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
支持
不支持
不支持