混合搜索 - HybridSearch
功能介绍
基于相似度匹配的查询方式,用于查找与给定多个向量进行相似性搜索,支持密集向量,稀疏向量等多路召回,并对结果进行重排处理,最终返回指定的 Top K 个最相似的 Entity。
URI
POST /v1/entities/hybrid-search
请求参数
参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
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算法。 |
参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
vector_field | 是 | String | 参数解释: 要搜索的向量字段名称。 约束限制: 必须是collection field schema中存在的向量字段名称。 取值范围: 不涉及。 默认取值: 不涉及。 |
vector | 是 | Array of objects | 参数解释: 要搜索的向量字段数据。 约束限制: 与collection field schema中定义的对应向量字段的类型和维度一致。 取值范围: 不涉及。 默认取值: 不涉及。 |
top_k | 否 | Integer | 参数解释: 返回的entity个数限制。可以将此参数与offset结合使用以启用分页。 约束限制: 当sub_search数量为1时,top_k与offset取值的总和应小于16384。 取值范围: [1, 16384] 默认取值: 10 |
offset | 否 | Integer | 参数解释: 在搜索结果中跳过的记录数。可以将此参数与 top_k 参数结合使用以启用分页。 约束限制: 1.与top_k取值的总和应小于16384。 2.当sub_search数量为1时才生效。 取值范围: 大于等于0 默认取值: 0 |
filter | 否 | String | 参数解释: 用于过滤匹配entity的标量过滤条件。可以将此设置为空字符串以跳过标量过滤。 约束限制: 要构建标量过滤条件,请参阅filter表达式规则。 取值范围: 不涉及。 默认取值: 空字符串,不进行标量过滤。 |
params | 否 | Map<String,Object> | 参数解释: 额外的搜索参数配置。 可以配置的参数:
约束限制: 不涉及。 取值范围: 当sub_search数量为1时: ef: [top_k + offset, int32_max] search_list: [top_k + offset, int32_max] cut_off_frequency:[0, 1.0] 当sub_search数量大于1时: ef: [top_k, int32_max] search_list: [top_k, int32_max] cut_off_frequency:[0, 1.0] 默认取值: 当sub_search数量为1时: ef: top_k + offset search_list: top_k + offset cut_off_frequency: 0 当sub_search数量大于1时: ef: top_k search_list: top_k cut_off_frequency: 0 |
响应参数
状态码:200
参数 | 参数类型 | 描述 |
|---|---|---|
code | String | 参数解释: 返回码。参见错误码章节。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 |
message | String | 参数解释: 描述信息 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 |
data | entities_data object | 参数解释: 响应数据。 约束限制: 不涉及。 |
参数 | 参数类型 | 描述 |
|---|---|---|
{自定义key} | Map<String,Object> | 参数解释: collection中的一个基本结构化数据实体,包含向量和标量等字段数据。 约束限制: 必须满足目标collection field schema。 取值范围: 不涉及。 默认取值: 不涉及。 |
状态码:400
参数 | 参数类型 | 描述 |
|---|---|---|
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 | 搜索失败 |
错误码
请参见错误码。

