更新时间:2025-06-19 GMT+08:00
分享

混合搜索

功能介绍

基于相似度匹配的查询方式,用于查找与给定多个向量进行相似性搜索,支持密集向量,稀疏向量等多路召回,并对结果进行重排处理,最终返回指定的 Top K 个最相似的 Entity。

URI

POST /v1/entities/hybrid-search

请求参数

表1 请求Body参数

参数

是否必选

参数类型

描述

store_name

String

参数解释:

知识仓实例名称,region内唯一。

约束限制:

长度范围为3到63个字符,支持小写字母、数字、中划线(-),第一个字符只能够是小写字母,中划线(-)不得出现在字符串末尾。

取值范围:

不涉及。

默认取值:

不涉及。

collection_name

String

参数解释:

collection名称,知识仓内唯一。

约束限制:

长度范围为1到255个字符,支持字母、数字、中划线(-)和下划线(),大小写敏感。第一个字符只能够是下划线()和字母,中划线(-)不得出现在字符串末尾。

取值范围:

不涉及。

默认取值:

不涉及。

output_fields

Array of strings

参数解释:

field名称列表,配置需与搜索结果一起返回的字段。

约束限制:

不涉及。

取值范围:

不涉及。

默认取值:

[ ],不返回任何额外的字段数据。

top_k

Integer

参数解释:

返回的entity个数限制。可以将此参数与offset结合使用以启用分页。

约束限制:

与offset取值的总和应小于16384。

取值范围:

[1, 16384]

默认取值:

10

offset

Integer

参数解释:

在搜索结果中跳过的记录数。可以将此参数与 top_k 参数结合使用以启用分页。

约束限制:

与top_k取值的总和应小于16384。

取值范围:

大于等于0

默认取值:

0

sub_search

Array of sub_search objects

参数解释:

rerank策略。

约束限制:

不涉及

取值范围:

不涉及。

默认取值:

默认使用rrf算法。

rerank

rerank object

参数解释:

rerank策略。

约束限制:

不涉及

取值范围:

不涉及。

默认取值:

默认使用rrf算法。

表3 rerank

参数

是否必选

参数类型

描述

strategy

String

参数解释:

重排序的策略名称。

约束限制:

不涉及

取值范围:

["weighted", "rrf"]

默认取值:

"rrf"

params

Map<String,Object>

参数解释:

rerank策略的算法参数。

可以设置的参数:

  • k:平滑值。(仅对rrf策略生效)

  • weights:各个向量搜索结果的权值。(仅对weighted策略生效,且当策略为weighted时该参数必填)

  • weights:[0, 1]

  • k:(0, 16384)

  • k:60

重排序的策略名称。

约束限制:

不涉及。

取值范围:

默认取值:

响应参数

状态码:200

表4 响应Body参数

参数

参数类型

描述

code

String

参数解释:

返回码。参见错误码章节。

约束限制:

不涉及。

取值范围:

不涉及。

默认取值:

不涉及。

message

String

参数解释:

描述信息

约束限制:

不涉及。

取值范围:

不涉及。

默认取值:

不涉及。

data

Map<String,Array>

参数解释:

响应数据。

约束限制:

不涉及。

表5 entities

参数

参数类型

描述

[数组元素]

Array of entity objects

参数解释:

查询返回的entity列表,其中包括相似度得分distance。

约束限制:

不涉及。

取值范围:

不涉及。

默认取值:

不涉及。

表6 entity

参数

参数类型

{自定义key}

Map<String>

状态码:400

表7 响应Body参数

参数

参数类型

描述

code

String

参数解释:

返回码。参见错误码章节。

约束限制:

不涉及。

取值范围:

不涉及。

默认取值:

不涉及。

message

String

参数解释:

描述信息。

约束限制:

不涉及。

取值范围:

不涉及。

默认取值:

不涉及。

请求示例

/v1/entities/hybrid-search

{
  "store_name" : "store_test",
  "collection_name" : "collection_test",
  "output_fields" : [ "primary_key", "vector", "scalar_1" ],
  "sub_search" : [ {
    "vector_field" : "dense_vector",
    "top_k" : 10,
    "offset" : 0,
    "vector" : [ [ 0.3123, 0.43, 0.213 ] ],
    "filter" : "primary_key > 100"
  }, {
    "vector_field" : "sparse_vector",
    "top_k" : 10,
    "offset" : 0,
    "vector" : [ {
      "123" : 0.1,
      "234" : 0.9
    } ],
    "filter" : "primary_key > 100"
  } ],
  "top_k" : 10,
  "offset" : 0,
  "rerank" : {
    "strategy" : "rrf",
    "params" : {
      "k" : 60
    }
  }
}

响应示例

状态码:200

搜索成功

{
  "code" : "LMS.00000000",
  "message" : "hybrid search success",
  "data" : {
    "entities" : [ {
      "distance" : 0.025679013,
      "primary_key" : 200,
      "vector" : [ 22.33, 33.44, 44.55 ],
      "scalar_1" : "YouShangYun"
    }, {
      "distance" : 0.025674567,
      "primary_key" : 300,
      "vector" : [ 221.33, 331.441, 441.55 ],
      "scalar_1" : "NewYun"
    } ]
  }
}

状态码:400

搜索失败

{
  "code" : "LMS.00001001",
  "message" : "ErrInvalidParameter : the input parameter is incorrect."
}

状态码

状态码

描述

200

搜索成功

400

搜索失败

错误码

请参见错误码

相关文档

    OSZAR »