ハイブリッド検索は、ベクトル検索とキーワード検索を並行して実行し、結果を統合します。キーワード検索 が有効である必要があります。検索モードの概要は 検索モード を参照してください。
index_method.vector と index_method.keyword の両方を true に設定します。
const instance = await env.AI_SEARCH.create({
id: "my-instance",
index_method: {
vector: true,
keyword: true,
},
fusion_method: "rrf",
});ハイブリッド検索を無効にするには、index_method.keyword を false にします。キーワードインデックスは削除されます。
各検索方法について、取得の動きを調整するために次を設定できます。
- ベクトル検索: 埋め込みモデル を設定します。
- キーワード検索: トークナイザーと照合モード を設定します。
fusion_method フィールドは、ベクトル結果とキーワード結果の統合方法を制御します。
| Value | Default | Description |
|---|---|---|
rrf |
はい | Reciprocal Rank Fusion。両方の検索方法での順位にもとづいて結果をスコアします。ほとんどの用途で推奨します。 |
max |
いいえ | 正規化したベクトルスコアとキーワードスコアのうち高い方を使います。一方の検索方法が常に関連性が高い場合に使います。 |
融合のあと、任意でリランキングを適用し、意味的な関連性で結果を並べ替えられます。リランキングは、クエリと各チャンクをまとめて評価するクロスエンコーダーモデルを使い、融合だけよりも精度を上げられます。
リランキングはデフォルトで無効です。有効化と設定は リランキング を参照してください。
個別のリクエストでは、ai_search_options.retrieval で検索設定を上書きできます。
| Field | Type | Description |
|---|---|---|
retrieval_type |
"vector"、"keyword"、または "hybrid" |
特定の検索モードを強制します。index_method と互換である必要があります。 |
fusion_method |
"rrf" または "max" |
融合方法を上書きします。 |
const instance = env.AI_SEARCH.get("my-instance");
const results = await instance.search({
messages: [{ role: "user", content: "What is Cloudflare?" }],
ai_search_options: {
retrieval: {
retrieval_type: "hybrid",
fusion_method: "rrf",
},
},
});ハイブリッド検索が有効なとき、各チャンクには scoring_details オブジェクトが含まれます。
| Field | Type | Description |
|---|---|---|
vector_score |
number | ベクトル類似度スコア(0 から 1)。 |
keyword_score |
number | 生の BM25 キーワードスコア。 |
vector_rank |
number | ベクトル結果セット内の順位。 |
keyword_rank |
number | キーワード結果セット内の順位。 |
fusion_method |
string | 使った融合方法(rrf または max)。 |
reranking_score |
number | リランキングモデルのスコア。有効な場合のみ。 |
キーワード検索を有効にしたインスタンスは、Workers Paid プランでインスタンスあたり最大 500,000 ファイルです。ベクトルのみのインスタンスは 1,000,000 ファイルです。上限の一覧は 上限と料金 を参照してください。