メインコンテンツまでスキップ

hybrid_search()

この操作は、コレクションに対してマルチベクトル検索を実行し、再ランキング後に検索結果を返します。

📘Notes

このメソッドは、Dedicated サービングクラスターとオンデマンドコンピュートにのみ適用されます。

  • サービングクラスターのコレクションでこの操作を実行するには、クラスターエンドポイントを指定して MilvusClient を作成してください。

    • Free & Serverless

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

    • Dedicated

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

  • オンデマンドコンピュートのコレクションでこの操作を実行するには、プロジェクトエンドポイントを指定して 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) -
    [必須]
    検索対象のコレクションの名前。

  • 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]) -
      Default: None
      ANN 検索の前に適用するブールフィルタリング式。exprfilter の両方を指定しないでください。

    • expr_params (Optional[dict]) -
      Default: None
      式テンプレートのプレースホルダーに代入する値。

    • filter (Optional[str]) -
      Default: None
      expr のエイリアス。両方の値を指定しないでください。解決された式は、読み取り専用の filter プロパティで request.filter として利用できます。

  • ranker (Union[BaseRanker, Function]) -
    [必須]
    検索リクエストの結果を統合して順序付けるために使用するランカー。

  • limit (int) -
    Default: 10
    返すレコードの最大数。topk とも呼ばれます。

  • output_fields (Optional[List[str]]) -
    Default: None
    各検索結果に含めるスカラーフィールド。

  • timeout (Optional[float]) -
    Default: None
    RPC を待機する最大時間(秒)。省略した場合、クライアントはサーバーが応答するか、エラーが発生するまで待機します。

  • partition_names (Optional[List[str]]) -
    Default: None
    検索対象のパーティションの名前。

  • 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)
Ctrl I