查询数据
更新时间:
向向量表中插入数据后,您可以通过ANN查询的方式查询向量数据。
示例
以下SQL将从
TEST_TABLE
表中检索float_feature
,返回与输入向量'[0.5,0.6,0.3,0.1]'
最接近的前10条记录。ann_distance
是输入向量和返回结果之间的真实相似度,相似度计算方法由float_feature
列定义指定。select id, ann_distance from
ann(test_table, float_feature, '[0.5,0.6,0.3,0.1]', 10);
返回向量计算距离小于0.2的记录。
select id, ann_distance from
ann(test_table, float_feature, '[0.5,0.6,0.3,0.1]', 10,'DISTANCE_THRESHOLD=0.2');
返回数据写入时间小于24小时且向量计算距离小于0.2的记录。
select id, ann_distance from
ann(test_table, float_feature, 'AAAAP5qZGT+amZk+zczMPQ==', 10,'DISTANCE_THRESHOLD=0.2,IGNORE_INC=true');
ANN查询支持的参数
参数(不区分大小写) | 作用 | 使用方法 |
---|---|---|
DISTANCE_THRESHOLD | ann_distance 的筛选阈值。 | 例如DISTANCE_THRESHOLD=0.5 ,系统根据DistanceMeasure 自动判断并筛选符合条件的数据。 |
IGNORE_INC | 数据写入流量非常大时,为保证检索响应时间,您可以选择不查询部分实时数据(一般指数据写入时间小于24小时的数据)。 | IGNORE_INC=true |
PREFER_INDEX | 在同一个向量列上定义多个索引时,您可以使用PREFER_INDEX 参数建议系统采用哪一个索引算法,也可以通过PREFER_INDEX 参数强制不使用索引。 | 例如建议系统采用PREFER_INDEX=FAST_INDEX 索引算法。
|
DISTANCE_MEASURE | 必选参数,设置ANN查询使用的DISTANCE_MEASURE (向量距离计算公式)。 | DISTANCE_MEASURE 参数的值可能是SquaredL2 、Hamming 或者DotProduct ,必须与CREATE TABLE中DistanceMeasure 设置的值相同。 |
向量分析碰撞
通过JOIN实现向量碰撞,以下SQL从TEST_TABLE
表中检索向量DotProduct
距离小于0.8的向量集合。
/*+ engine= mpp*/select a.feature,
b.feature,
vector_distance(a.feature, b.feature, 'DotProduct')
from `test_table` as a cross join `test_table` as b
where vector_distance(a.feature, b.feature, 'DotProduct')< 0.8
文档内容是否对您有帮助?