全部產品
Search
文件中心

OpenSearch:向量檢索文法

更新時間:Jul 13, 2024

通用查詢

HA3文法

query=index_name:'0.1,0.2,0.98,0.6;0.3,0.4,0.98,0.6...'
註:index_name為向量索引名,後面是要查詢的向量

SQL文法

query=select proxima_score('index_name') as score,id from table_name where MATCHINDEX('index_name', ?) order by score asc limit 5&&kvpair=timeout:1000,iquan.plan.cache.enable:true;urlencode_data:false;iquan.plan.prepare.level:jni.post.optimize;dynamic_params:[["0.892704,0.783731"]]
註:index_name為向量索引名,kvpair中的dynamic_params是要查詢的向量

指定topN查詢

HA3文法

query=index_name:'0.1,0.2,0.98,0.6;0.3,0.4,0.98,0.6&n=10'
註:index_name為向量索引名,後面是要查詢的向量,n指定向量檢索返回的top結果數。

SQL文法

query=select proxima_score('index_name') as score,id from table_name where MATCHINDEX('index_name', ?) order by score asc limit 5&&kvpair=timeout:1000,iquan.plan.cache.enable:true;urlencode_data:false;iquan.plan.prepare.level:jni.post.optimize;dynamic_params:[["0.892704,0.783731&n=10"]]
註:index_name為向量索引名,kvpair中的dynamic_params是要查詢的向量,n指定向量檢索返回的top結果數。

設定最低分閾值

HA3文法

query=index_name:'0.1,0.2,0.98,0.6;0.3,0.4,0.98,0.6&n=10&sf=4'
註:index_name為向量索引名,後面是要查詢的向量,sf指定要過濾分數的閾值。如果schema中配置的search_type參數是ip(內積距離)時,內積距離分數低於4.0的doc會被過濾掉。當使用者在schema中的search_type參數是l2(歐式距離)時,歐式距離分數高於2.0的doc會被過濾掉,之所以是2.0, 而不是4.0, 是從效能考慮, 引擎計算的分數是歐式距離的平方。

SQL文法

query=select proxima_score('index_name') as score,id from table_name where MATCHINDEX('index_name', ?) order by score asc limit 5&&kvpair=timeout:1000,iquan.plan.cache.enable:true;urlencode_data:false;iquan.plan.prepare.level:jni.post.optimize;dynamic_params:[["0.892704,0.783731&n=10&sf=4"]]
註:index_name為向量索引名,kvpair中的dynamic_params是要查詢的向量,sf指定要過濾分數的閾值。如果schema中配置的search_type參數是ip(內積距離)時,內積距離分數低於4.0的doc會被過濾掉。當使用者在schema中的search_type參數是l2(歐式距離)時,歐式距離分數高於2.0的doc會被過濾掉,之所以是2.0, 而不是4.0, 是從效能考慮, 引擎計算的分數是歐式距離的平方。

區分類目的查詢

HA3文法

query=aitheta_index_name:'16#0.1,0.2,0.98,0.6;1512#0.3,0.4,0.98,0.6&n=200'
// query需要做urlencode
query=aitheta_index_name:'16%230.1%2c0.2%2c0.98%2c0.6%3b1512%230.3%2c0.4%2c0.98%2c0.6%26n%3d200'
註:區分類目的情況下,參數值中需要指定類目id以及要查詢的向量,類目id和向量之間使用'#'分隔(query中需要對'#'做URLEncode),多個類目之間使用逗號分隔,多個向量之間以分號分隔。

SQL文法

query=select proxima_score('index_name') as score,id from table_name where MATCHINDEX('index_name', ?) order by score asc limit 5&&kvpair=timeout:1000,iquan.plan.cache.enable:true;urlencode_data:false;iquan.plan.prepare.level:jni.post.optimize;dynamic_params:[["16%230.1%2c0.2%2c0.98%2c0.6%3b1512%230.3%2c0.4%2c0.98%2c0.6%26n%3d200"]]
註:index_name為向量索引名,kvpair中的dynamic_params是要查詢的向量
註:dynamic_params內容需要做urlencode
註:區分類目的情況下,參數值中需要指定類目id以及要查詢的向量,類目id和向量之間使用'#'分隔(query中需要對'#'做URLEncode),多個類目之間使用逗號分隔,多個向量之間以分號分隔。

設定召回參數

HA3文法

query=index_name:'0.1,0.2,0.98,0.6;0.3,0.4,0.98,0.6&n=10&sf=0.8&search_params={"proxima.qc.searcher.scan_ratio":0.001,"proxima.general.searcher.scan_count":10000}'
註:search_params指定向量召回參數,為json格式。proxima.qc.searcher.scan_ratio含有同上,proxima.general.searcher.scan_count意義同min_scan_doc_cnt
註:n,sf,search_params出現的順序不能變

SQL文法

query=select proxima_score('index_name') as score,id from table_name where MATCHINDEX('index_name', ?) order by score asc limit 5&&kvpair=timeout:1000,iquan.plan.cache.enable:true;urlencode_data:false;iquan.plan.prepare.level:jni.post.optimize;dynamic_params:[["0.892704,0.783731&n=10&sf=0.8&search_params={"proxima.qc.searcher.scan_ratio":0.001,"proxima.general.searcher.scan_count":10000}"]]

註:index_name為向量索引名,kvpair中的dynamic_params是要查詢的向量,search_params指定向量召回參數,為json格式。proxima.qc.searcher.scan_ratio含有同上,proxima.general.searcher.scan_count意義同min_scan_doc_cnt
註:n,sf,search_params出現的順序不能變

查詢時按相似性排序

HA3文法

query=index_name:'0.1,0.2,0.98,0.6;0.3,0.4,0.98,0.6...'&&kvpairs=first_formula:proxima_score(index_name)&&sort=+RANK
註:index_name為向量索引名,後面是要查詢的向量,kvpairs子句指定粗排公式為proxima_score(索引名),sort子句指定按相似性得分從小到大排序

SQL文法

query=select proxima_score('index_name') as score,id from table_name where MATCHINDEX('index_name', ?) order by score asc limit 5&&kvpair=timeout:1000,iquan.plan.cache.enable:true;urlencode_data:false;iquan.plan.prepare.level:jni.post.optimize;dynamic_params:[["0.892704,0.783731"]]
註:index_name為向量索引名,kvpair中的dynamic_params是要查詢的向量,select中的proxima_score(索引名)函數用於擷取向量得分,通過order by 指定向量得分為排序依據,asc表示正序,desc 表示倒序