You need to enable JavaScript to run this app.
文档中心
向量数据库VikingDB

向量数据库VikingDB

复制全文
下载 pdf
检索(Search)
检索公共参数
复制全文
下载 pdf
检索公共参数

检索功能包括多个接口组成,分别对应不同的检索模式和业务场景。

接口说明

V2接口则将不同检索模式对应到不同的接口,更加清晰,便于您针对自己的业务场景,选择合适的检索方式。

检索类接口通用请求体参数
参数名类型必选子参数类型备注
resourceIdstring2选1资源id
collectionNameStringcollection名称
indexNameString是索引名称

outputFields

List[string]

否

要返回的标量字段列表。

  1. 用户不传 outputFields 时,返回所有标量字段
  2. 用户传一个空列表不返回标量字段
  3. outputFields 格式错误,或者字段不是 collection 里的字段时,接口返回错误
filterMap[String, Object]否过滤条件,格式见下文。默认为空,不做过滤
limitInteger否检索结果数量,默认为10, 上限是 100000
offsetInteger否偏移量。仅分页场景下使用,不建议设置过大值,否则有深分页影响。默认值为0。设置值至少为0,语义和mysql的offset相同。
advance(高级参数,不常使用)SearchAdvance否denseWeightfloat32如果collection带有sparse向量字段,这里可以指定检索时dense和sparse的权重。默认值0.5,可选范围[0.2, 1]
idsInList[Object]设定此参数,会限定仅在主键列表范围内进行检索。默认为空。
idsNotInList[Object]设定此参数,将把主键列表范围内的数据从检索结果中排除 。默认为空。
postProcessOpsList[Map[String, Object]]后置处理算子列表。在向量或标量召回阶段后,对候选数据进行进一步过滤处理,如字符串匹配、频控等。每个算子为一个map,串行执行。默认为空。详见下文后置处理算子。

postProcessInputLimit

Int

当设置了 postProcessOps 时,进入后置处理阶段的候选数量。
默认值为上述 limit 参数值 * 3。若显式设置,则不应该小于 limit 值。

scaleKfloat64检索 sef 是索引参数 sef 的 scale_k 倍。默认值为 1,取值范围 [0.1, 100],值越大检索结果越精确,但相应地会降低性能。
filterPreAnnLimitInteger
filterPreAnnRatioDouble

filter结构

使用 filter 的前提是,相应的标量字段设置了标量索引(scalarIndex)。

算子适用字段类型说明示例

must

string、int64、bool、list[string]、list[int64]

针对指定字段名生效,语义为必须在 [...] 之中,即 "must in"。

{
  "op": "must",
  "field": "region",
  "conds": ["cn", "sg"]
}

must_not

string、int64、bool、list[string]、list[int64]

针对指定字段名生效,语义为必须不在 [...] 之中,即 "must not in"。

{
  "op": "must_not",
  "field": "data_type",
  "conds": [1, 2, 3]
}

and

/

逻辑算子,针对逻辑查询需求,对多个条件取交集。

{
  "op": "and", // 算子名
  "conds": [ // 条件列表,支持嵌套逻辑算子和 must/must_not 算子
    {
      "op": "must",
      "field": "type",
      "conds": [1]
    },
    {
      // 支持 >= 1 的任意数量的条件进行组合
    }
  ]
}

or

/

逻辑算子,针对逻辑查询需求,对多个条件取并集。

{
  "op": "or", // 算子名
  "conds": [ // 条件列表,支持嵌套逻辑算子和 must/must_not 算子
    {
      "op": "must",
      "field": "type",
      "conds": [1]
    },
    {
      // 支持 >= 1 的任意数量的条件进行组合
    }
  ]
}

range

int64、float32

针对指定字段名生效,语义为必须在指定范围内。配置使用 gte(大于等于)、gt(大于)、lte(小于等于)、lt(小于),用以圈定一维范围。

// price 在 [100.0, 500.0)
{
  "op": "range",
  "field": "price",
  "gte": 100.0,
  "lt": 500.0
}

// price >= 100.0
{
  "op": "range",
  "field": "price",
  "gte": 100.0
}

time_range

date_time

时间点筛选,配置使用 gte(大于等于)、gt(大于)、lte(小于等于)、lt(小于),用以圈定一维范围。

{
  // 检索北京时间 2025-08-12 00:00:00 ~ 2025-08-13 00:00:00 之间的数据
  "op": "time_range",
  "field": "f_date_time",
  "gt": "2025-08-12T00:00:00+08:00",
  "lt": "2025-08-13T00:00:00+08:00"
}

geo_range

geo_point

地理距离筛选,使用 center 为中心点,radius 为距离半径。

{
  "op": "geo_range",
  "field": "f_geo_point",
  "center": "116.412138,39.914912",
  "radius": "10000m"
}

后置处理结构

算子适用字段类型介绍示例

score_fusion

string

分数融合算子,用于融合指定的时空标量的分数。

{
  "op": "score_fusion",
  "fusion_by": "add",
  "addition_score_weight": 0.6, // 附加 score 的权重为 0.6,ANN score 的权重为 1 - 0.6 = 0.4
  "addition_score": [
    {
      "factor": 1.0,
      "base_value_from": "scalar_field",
      "field": "f_sales"
    },
    {
      "factor": -10.0, // 投诉多的商品,score 应该降低
      "base_value_from": "scalar_field",
      "field": "f_complain"
    }
  ]
}

string_contain

string

关键词匹配过滤算子。表示该字段内容包含 pattern。

{
  "op": "string_contain",
  "field": "name",
  "pattern": "bar"
}

string_match

string

正则匹配过滤算子。

{
  "op": "string_match",
  "field": "name",
  "pattern": "^[0-9A-Za-z_]+$"
}

enum_freq_limiter

string

频控算子。用于保证一次召回的结果中,一个特定取值出现的总数不超过 threshold 次。

{
  "op": "enum_freq_limiter",
  "field": "city",
  "threshold": 5
}

请求接口补充

适用接口

能力方法与路径
向量检索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,以便定位具体请求。

最近更新时间:2026.09.17 15:11:54
这个页面对您有帮助吗?
有用
有用
无用
无用