更新时间:2025-07-18 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结合使用以启用分页。

约束限制:

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

2.当sub_search数量为1时,以sub_search中的top_k和offset为准。

取值范围:

[1, 16384]

默认取值:

10

offset

Integer

参数解释:

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

约束限制:

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

2.当sub_search数量为1时,以sub_search中的top_k和offset为准。

取值范围:

大于等于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

entities_data object

参数解释:

响应数据。

约束限制:

不涉及。

表5 entities_data

参数

参数类型

描述

entities

Array of entity objects

参数解释:

查询到的信息。

约束限制:

不涉及。

表6 entity

参数

参数类型

描述

{自定义key}

Map<String,Object>

参数解释:

collection中的一个基本结构化数据实体,包含向量和标量等字段数据。

约束限制:

必须满足目标collection field schema。

取值范围:

不涉及。

默认取值:

不涉及。

状态码:400

表7 响应Body参数

参数

参数类型

描述

code

String

参数解释:

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

约束限制:

不涉及。

取值范围:

不涉及。

默认取值:

不涉及。

message

String

参数解释:

描述信息。

约束限制:

不涉及。

取值范围:

不涉及。

默认取值:

不涉及。

请求示例

/v1/entities/hybrid-search

{
  "store_name" : "test-storename",
  "collection_name" : "test-collection-sparse",
  "output_fields" : [ "vector", "scalar" ],
  "sub_search" : [ {
    "vector_field" : "vector",
    "top_k" : 10,
    "vector" : [ [ 0.3123, 0.43, 0.213 ] ],
    "filter" : "pk > 0",
    "params" : {
      "search_list" : 100
    }
  }, {
    "vector_field" : "sparse_vector",
    "top_k" : 10,
    "vector" : [ {
      "123" : 0.3,
      "234" : 0.5
    } ],
    "filter" : "pk > 100",
    "params" : {
      "cut_off_frequency" : 1
    }
  } ],
  "top_k" : 2,
  "offset" : 0,
  "rerank" : {
    "strategy" : "rrf",
    "params" : {
      "k" : 60
    }
  }
}

响应示例

状态码:200

搜索成功

{
  "code" : "LMS.00000000",
  "data" : {
    "entities" : [ {
      "distance" : 0.016393442,
      "id" : 3,
      "scalar" : "文档3",
      "vector" : [ 0.314, 0.251, 0.236 ]
    }, {
      "distance" : 0.016129032,
      "id" : 1,
      "scalar" : "文档1",
      "vector" : [ 0.324, 0.21, 0.2456 ]
    } ]
  },
  "message" : "search entities success"
}

状态码:400

搜索失败

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

状态码

状态码

描述

200

搜索成功

400

搜索失败

错误码

请参见错误码

相关文档