クエリ語を正確に含むチャンクを照合するには、キーワード検索を有効にします。検索モードの概要は 検索モード を参照してください。
インスタンスの作成時または更新時に、index_method.keyword を true に設定します。キーワード検索は単独でも使えます。ベクトル検索と組み合わせて ハイブリッド検索 にもできます。
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
vector |
boolean | true |
ベクトル(セマンティック)検索を有効にします。 |
keyword |
boolean | false |
キーワード(BM25)検索を有効にします。 |
vector または keyword の少なくとも一方は true である必要があります。index_method を変更すると、コンテンツのフル再インデックスが実行されます。
const instance = await env.AI_SEARCH.create({
id: "my-instance",
index_method: {
vector: false,
keyword: true,
},
});keyword_tokenizer フィールド(indexing_options 内)は、テキストをトークンに分割する方法を制御します。変更するとフル再インデックスが実行されます。
| 値 | デフォルト | 説明 |
|---|---|---|
porter |
はい | Porter stemming を適用します。「running」が「run」に一致します。自然言語向けです。 |
trigram |
いいえ | 重なる 3 文字のウィンドウです。「config」が「configuration」に一致します。コード向けです。 |
keyword_match_mode フィールド(retrieval_options 内)は、複数のクエリ語の組み合わせ方法を制御します。
| 値 | デフォルト | 説明 |
|---|---|---|
and |
はい | すべてのクエリ語が出現する必要があります。精度は高く、結果は少なくなります。 |
or |
いいえ | いずれかのクエリ語で一致します。再現率は高く、結果は多くなります。 |
リクエストごとに keyword_match_mode を上書きできます。
const instance = env.AI_SEARCH.get("my-instance");
const results = await instance.search({
messages: [{ role: "user", content: "What is Cloudflare?" }],
ai_search_options: {
retrieval: {
keyword_match_mode: "or",
},
},
});キーワード検索を有効にしたインスタンスは、Workers Paid プランでインスタンスあたり最大 500,000 ファイルです。ベクトル検索のみのインスタンスは 1,000,000 ファイルです。制限の一覧は 制限と料金 を参照してください。