跳到主要内容

hybrid_search()

此操作对 Collection 执行多向量搜索,并在重排序后返回搜索结果。

Notes

此方法仅适用于 Dedicated serving 集群和按需计算。

  • 若要在 serving 集群的 Collection 中执行此操作,请使用集群 Endpoint 创建 MilvusClient。

    • Free & Serverless

      https://{cluster-id}.serverless.{region}.vectordb.zillizcloud.com

    • Dedicated

      https://{cluster-id}.{region}.vectordb.zillizcloud.com:19530

  • 若要在按需计算的 Collection 中执行此操作,请使用项目 Endpoint 创建 MilvusClient,然后创建一个会话以连接到按需集群进行搜索。

    https://{project-id}.{region}.api.zillizcloud.com

请求语法​

python
hybrid_search(
collection_name: str,
reqs: List[AnnSearchRequest],
ranker: Union[BaseRanker, Function],
limit: int = 10,
output_fields: Optional[List[str]] = None,
timeout: Optional[float] = None,
partition_names: Optional[List[str]] = None,
**kwargs,
) -> SearchResult

参数:

  • collection_name (str) -
    [必需]
    要搜索的 Collection 名称。

  • reqs (List[AnnSearchRequest]) -
    [必需]
    混合搜索所组合的 ANN 搜索请求。请使用 AnnSearchRequest(data, anns_field, param, limit, expr=None, expr_params=None, filter=None) 构造每个请求。

    • data (Union[List, SparseMatrixInputType]) -
      [必需]
      用于此 ANN 搜索请求的查询向量或稀疏矩阵。

    • anns_field (str) -
      [必需]
      要搜索的向量字段名称。

    • param (Dict) -
      [必需]
      ANN 搜索参数,例如度量类型及特定于搜索的设置。

    • limit (int) -
      [必需]
      此 ANN 搜索请求返回的最大匹配数。

    • expr (Optional[str]) -
      默认值:None
      在 ANN 搜索前应用的布尔过滤表达式。请勿同时提供 expr 和 filter。

    • expr_params (Optional[dict]) -
      默认值:None
      替换到表达式模板占位符中的值。

    • filter (Optional[str]) -
      默认值:None
      expr 的别名。请勿同时提供这两个值。解析后的表达式可通过只读属性 filter 获取,即 request.filter。

  • ranker (Union[BaseRanker, Function]) -
    [必需]
    用于合并各搜索请求的结果并对其进行排序的 Ranker。

  • limit (int) -
    默认值:10
    要返回的最大记录数,也称为 topk。

  • output_fields (Optional[List[str]]) -
    默认值:None
    要包含在每个搜索结果中的标量字段。

  • timeout (Optional[float]) -
    默认值:None
    等待 RPC 的最长时间(秒)。如果省略此参数,客户端将一直等待,直到服务器响应或发生错误。

  • partition_names (Optional[List[str]]) -
    默认值:None
    要搜索的 Partition 名称。

  • kwargs (Any) -
    其他搜索选项,包括分页偏移量和一致性级别。

返回类型:

SearchResult

返回值:

在应用各请求的表达式或过滤器后,返回组合 ANN 请求的搜索结果。

异常:

  • MilvusException
    当服务器拒绝请求或 RPC 失败时抛出。请查看服务器错误消息以了解确切的失败详情。

示例​

以下示例构造一个 ANN 请求并执行混合搜索。

python
from pymilvus import AnnSearchRequest, MilvusClient

client = MilvusClient(uri="YOUR_CLUSTER_ENDPOINT")
request = AnnSearchRequest(
data=[[0.1, 0.2, 0.3]],
anns_field="vector",
param={"metric_type": "COSINE"},
limit=10,
filter='category == "paper"',
)
results = client.hybrid_search(
collection_name="book_chunks",
reqs=[request],
ranker=None,
limit=10,
)
print(request.filter)
print(results)
最低 SDK 版本v2.6.x