AI Search の類似キャッシュは、過去のリクエストと似たクエリに対して Cloudflare のキャッシュから応答を返します。毎回新しい応答を作る必要はありません。意味の近い質問の回答を再利用することで、応答が速くなり、コストも下がります。
基本的なキャッシュと違い、類似キャッシュを使うとリクエスト受信時に次の処理が行われます。
- AI Search は、選んだしきい値に基づき、似たプロンプトが以前に回答済みかを確認します。
- 一致すれば、キャッシュ済みの応答をすぐに返します。
- 一致しなければ、新しい応答を生成してキャッシュします。
応答がキャッシュ由来かどうかは、cf-aig-cache-status ヘッダーで確認します。キャッシュなら HIT、新規なら MISS です。
類似キャッシュを使うときは、次の挙動を踏まえてください。
- 揮発性キャッシュ: 似たリクエストが同時に来ると、最初の結果がキャッシュされる前に 2 件目が処理され、
MISSになることがあります。 - 期間を設定できる: キャッシュ済み応答は、インスタンスの
cache_ttl設定に従って期限切れになります。デフォルトは 48 時間です。 - データ依存: キャッシュ済み応答は特定のドキュメントチャンクに紐づきます。チャンクが変更または削除されると、回答を新しく保つためにキャッシュがクリアされます。
AI Search の類似キャッシュは MinHash と Locality-Sensitive Hashing (LSH) を使い、言い回しが似たプロンプトの応答を見つけて再利用します。
新しいプロンプトが来たときの流れは次のとおりです。
- プロンプトを、重なり合う短い単語のかたまり(シングルト)に分割します。たとえば "what's the" や "the weather" です。
- これらのシングルトを MinHash で「指紋」にします。2 つのプロンプトの重なりが多いほど、指紋は近くなります。
- 指紋を LSH バケットに入れます。AI Search は全件比較せずに、似たプロンプトを素早く見つけられます。
- 同じバケット内の過去のプロンプトが、設定したしきい値以上に似ていれば、そのキャッシュ済み応答を再利用します。
類似しきい値は、キャッシュ済み応答を再利用するために、2 つのプロンプトがどれだけ近ければよいかを決めます。インスタンス単位で設定するか、リクエストごとに上書きできます。
| しきい値 | API 値 | 説明 | 一致の例 |
|---|---|---|---|
| Exact | super_strict_match |
ほぼ同一の一致のみ | "What's the weather like today?" が "What is the weather like today?" と一致 |
| Strong | close_enough(デフォルト) |
意味の近さが高い | "What's the weather like today?" が "How's the weather today?" と一致 |
| Broad | flexible_friend |
中程度の一致で、ヒットが増える | "What's the weather like today?" が "Tell me today's weather" と一致 |
| Loose | anything_goes |
類似度は低く、再利用を最大化 | "What's the weather like today?" が "Give me the forecast" と一致 |
インスタンスの作成時または更新時に cache_ttl を設定し、キャッシュ済み応答の保持期間を制御します。使える値は次のとおりです。
| 期間 | API 値 |
|---|---|
| 10 分 | 600 |
| 30 分 | 1800 |
| 1 時間 | 3600 |
| 2 時間 | 7200 |
| 6 時間 | 21600 |
| 12 時間 | 43200 |
| 24 時間 | 86400 |
| 48 時間 | 172800 |
| 72 時間 | 259200 |
| 6 日 | 518400 |
インスタンスのキャッシュ済み応答をすぐすべて消すには、キャッシュ削除操作を使います。
curl -X POST "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/ai-search/namespaces/default/instances/$INSTANCE_NAME/purge_cache" \
-H "Authorization: Bearer $CLOUDFLARE_API_TOKEN"キャッシュを削除すると、インスタンス内部のキャッシュキーがローテーションします。新しいクエリは、以前のキャッシュ済み応答を再利用しません。
Cloudflare ダッシュボードのインスタンス設定ページからも、キャッシュ済み応答を削除できます。
ai_search_options の cache パラメータで、インスタンス単位のキャッシュ設定をリクエストごとに上書きできます。
const instance = env.AI_SEARCH.get("my-instance");
const results = await instance.search({
messages: [{ role: "user", content: "What is Cloudflare?" }],
ai_search_options: {
cache: {
enabled: true,
cache_threshold: "flexible_friend",
},
},
});