云搜索服务 CSS-示例:使用PV_GRAPH算法实现向量检索:查询向量数据
查询向量数据
基于现有的Elasticsearch接口,在vector下新增filter参数支持向量标量联合过滤特性。标签过滤使用的过滤字段,当前支持json格式 ,支持should、must、must_not、term、terms查询, 语法与Elasticsearch查询语法一致。具体的限制如下。
当前过滤嵌套深度最大为4层 , 其中 :
- must_not不支持嵌套和被嵌套。
- 第一级必须只有一个查询关键词(must等),不支持多个关键词并列。
涉及指定联合过滤的标量字段,即创建索引时sub_fields所定义的字段,仅在向量索引类型为PV_GRAPH类型生效。当指定的过滤字段不存在时,过滤请求失效,当作无过滤条件处理。
# 单标签单值匹配查询示例 GET my_index/_search { "query": { "vector": { "my_vector": { "vector": [1.0, 1.0], "topk": 10, "filter": { "term": { "country": "cn" } } } } } } # 单标签多值匹配查询示例 GET my_index/_search { "query": { "vector": { "my_vector": { "vector": [1.0, 1.0], "topk": 10, "filter": { "terms": { "country": ["cn", "eu"] } } } } } } # 多标签匹配查询示例 GET my_index/_search { "query": { "vector": { "my_vector": { "vector": [1.0, 1.0], "topk": 10, "filter": { "must": [ { "term": {"country": "cn"} }, { "terms": {"category": ["1", "2"]} } ] } } } } } # must_not匹配查询示例 GET my_index/_search { "query": { "vector": { "my_vector": { "vector": [1.0, 1.0], "topk": 10, "filter": { "must_not": [ { "term": {"country": "eu"} } ] } } } } }
向量查询参数说明请见表1。