检索功能由多个接口组成,分别对应不同的检索模式和业务场景。
接口说明
V2 接口将不同检索模式对应到不同的接口,更加清晰,便于您针对自己的业务场景选择合适的检索方式。
检索类接口通用请求体参数
名称 | 类型 | 必选 | 子参数 | 类型 | 描述 |
|---|
resource_id | str | 二选一 | | | Collection 的资源 ID。 |
collection_name | str | | | | Collection 名称。 |
index_name | str | 是 | | | 索引名称。 |
output_fields | List[str] | 否 | | | 要返回的标量字段列表。 - 未设置时返回集合内所有标量字段。
- 传入空列表表示不返回任何标量字段。
- 字段名必须存在于 collection schema,否则请求报错。
|
filter | Dict[str, Any] | 否 | | | 标量过滤条件,格式见下文,默认不设置。 |
limit | int | 否 | | | 返回结果上限,默认 10,最大值 100000。 |
offset | int | 否 | | | 分页偏移量,默认 0,过大时会触发深分页性能损耗。 |
Advance | SearchAdvance | 否 | dense_weight | Optional[float] | 混合向量场景下 dense / sparse 权重,默认 0.5,范围 [0.2, 1]。 |
| | | ids_in | Optional[List[Any]] | 仅在该主键集合范围内检索。 |
| | | ids_not_in | Optional[List[Any]] | 排除指定主键列表。 |
| | | post_process_ops | Optional[List[Dict[str, Any]]] | 后置处理算子列表,串行执行,详见《检索后处理算子-PostProcess》。 |
| | | post_process_input_limit | Optional[int] | 进入后处理阶段的候选条数。 |
| | | scale_k | Optional[float] | 分配给后续 rerank 的候选倍率。 |
| | | filter_pre_ann_limit | Optional[int] | 先执行标量过滤时的最大候选条数。 |
| | | filter_pre_ann_ratio | Optional[float] | 先执行标量过滤时的候选比例。 |
filter 结构
使用 filter 的前提是,相应的标量字段已经设置为标量索引(scalar_index)。
算子 | 适用字段类型 | | 示例 |
|---|
must | string、int64、bool、list | 针对指定字段名生效,语义为必须在 [...] 之中,即 "must in" | JSON <br> { <br> "op": "must", <br> "field": "region", <br> "conds": ["cn", "sg"] <br> } <br>
|
must_not | string、int64、bool、list | 针对指定字段名生效,语义为必须不在 [...] 之中,即 "must not in" | JSON <br> { <br> "op": "must_not", <br> "field": "data_type", <br> "conds": [1,2,3] <br> } <br>
|
and | / | 逻辑算子,针对逻辑查询需求,对多个条件取交集 | JSON <br> { <br> "op": "and", // 算子名 <br> "conds": [ // 条件列表,支持嵌套逻辑算子和 must/must_not 算子 <br> { <br> "op": "must", <br> "field": "type", <br> "conds": [1] <br> }, <br> { <br> ... // 支持>=1的任意数量的条件进行组合 <br> } <br> ] <br> } <br>
|
or | / | 逻辑算子,针对逻辑查询需求,对多个条件取并集 | JSON <br> { <br> "op": "or", // 算子名 <br> "conds": [ // 条件列表,支持嵌套逻辑算子和 must/must_not 算子 <br> { <br> "op": "must", <br> "field": "type", <br> "conds": [1] <br> }, <br> { <br> ... // 支持>=1的任意数量的条件进行组合 <br> } <br> ] <br> } <br>
|
range | int64、float32 | 针对指定字段名生效,语义为必须在指定范围内。配置使用gte(大于等于), gt(大于), lte(小于等于), lt(小于),用以圈定一维范围。 | Python <br> # price在[100.0, 500.0) <br> { <br> "op": "range", <br> "field": "price", <br> "gte": 100.0, <br> "lt": 500.0 <br> } <br> <br> //price >= 100.0 <br> { <br> "op": "range", <br> "field": "price", <br> "gte": 100.0 <br> } <br>
|
time_range | date_time | 时间点筛选,配置使用gte(大于等于), gt(大于), lte(小于等于), lt(小于),用以圈定一维范围。 | JSON <br> { <br> // 检索北京时间 2025-08-12 00:00:00 ~ 2025-08-13 00:00:00 之间的数据 <br> "op": "time_range", <br> "field": "f_date_time", <br> "gt": "2025-08-12T00:00:00+08:00", <br> "lt": "2025-08-13T00:00:00+08:00" <br> } <br>
|
geo_range | geo_point | 地理距离筛选,使用 center 为中心点,radius 为距离半径。 | JSON <br> { <br> "op": "geo_range", <br> "field": "f_geo_point", <br> "center": "116.412138,39.914912", <br> "radius": "10000m" <br> } <br>
|
后置处理结构
算子 | 适用字段类型 | 介绍 | 示例 |
|---|
score_fusion | string | 分数融合算子,用于融合指定的时空标量的分数。 | JSON <br> { <br> "op": "score_fusion", <br> "fusion_by": "add", <br> "addition_score_weight": 0.6, //附加score的权重为0.6 ann score的权重为1-0.6=0.4 <br> "addition_score": [ <br> { <br> "factor": 1.0, <br> "base_value_from": "scalar_field", <br> "field": "f_sales" <br> }, <br> { <br> "factor": -10.0, // 投诉多的商品,score应该降低 <br> "base_value_from": "scalar_field", <br> "field": "f_complain" <br> } <br> ] <br> } <br>
|
string_contain | string | 关键词匹配过滤算子。表示该字段内容包含 pattern。 | JSON <br> { <br> "op": "string_contain", <br> "field": "name", <br> "pattern": "bar" <br> } <br>
|
string_match | string | 正则匹配过滤算子。 | JSON <br> { <br> "op": "string_match", <br> "field": "name", <br> "pattern": "^[0-9A-Za-z_]+$" <br> } <br>
|
enum_freq_limiter | string | 频控算子。用于保证一次召回的结果中,一个特定取值出现的总数不超过 threshold 次。 | JSON <br> { <br> "op": "enum_freq_limiter", <br> "field": "city", <br> "threshold": 5 <br> } <br>
|
请求接口补充
适用接口
| 能力 | 方法与路径 |
|---|
| 向量检索 | POST /api/vikingdb/data/search/vector |
| 随机检索 | POST /api/vikingdb/data/search/random |
| 关键词检索 | POST /api/vikingdb/data/search/keywords |
| ID 检索 | POST /api/vikingdb/data/search/id |
| 标量排序检索 | POST /api/vikingdb/data/search/scalar |
| 多模态检索 | POST /api/vikingdb/data/search/multi_modal |
错误处理补充
错误码
本接口的业务错误码、触发条件和处理建议统一参见向量库 V2 错误码。排查时请同时记录响应中的 request_id,以便定位具体请求。