hybrid_search()
この操作は、コレクションに対してマルチベクトル検索を実行し、再ランキング後に検索結果を返します。
このメソッドは、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
リクエスト構文
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 検索の前に適用するブールフィルタリング式。exprとfilterの両方を指定しないでください。 -
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 リクエストを構築し、ハイブリッド検索を実行します。
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)