全部产品

查询数据

更新时间:2019-08-01 15:57:08

本文介绍如何查询向量数据。

示例

  • 以下SQL将从TEST_TABLE表中检索float_feature,返回与输入向量'[0.5,0.6,0.3,0.1]'最接近的前10条记录。ann_distance是输入向量和返回结果之间的真实相似度,相似度计算方法由float_feature列定义指定。

    1. select id, ann_distance from
    2. ann(test_table, float_feature, '[0.5,0.6,0.3,0.1]', 10);
  • 返回向量计算距离小于0.2的记录。

    1. select id, ann_distance from
    2. ann(test_table, float_feature, '[0.5,0.6,0.3,0.1]', 10,'DISTANCE_THRESHOLD=0.2');
  • 返回数据写入时间小于24小时且向量计算距离小于0.2的记录。

    1. select id, ann_distance from
    2. 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索引算法。

PREFER_INDEX=NOINDEX,强制不使用索引。

DISTANCE_MEASURE 必选参数,设置ANN查询使用的DISTANCE_MEASURE(向量距离计算公式)。 DISTANCE_MEASURE参数的值可能是SquaredL2Hamming或者DotProduct,必须与CREATE TABLEDistanceMeasure设置的值相同。

向量分析碰撞

通过JOIN实现向量碰撞,以下SQL从TEST_TABLE表中检索向量DotProduct距离小于0.8的向量集合。

  1. /*+ engine= mpp*/select a.feature,
  2. b.feature,
  3. vector_distance(a.feature, b.feature, 'DotProduct')
  4. from `test_table` as a cross join `test_table` as b
  5. where vector_distance(a.feature, b.feature, 'DotProduct')< 0.8