Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

類似キャッシュ

最終更新 Markdown で表示Agent セットアップ

AI Search の類似キャッシュは、過去のリクエストと似たクエリに対して Cloudflare のキャッシュから応答を返します。毎回新しい応答を作る必要はありません。意味の近い質問の回答を再利用することで、応答が速くなり、コストも下がります。

仕組み

基本的なキャッシュと違い、類似キャッシュを使うとリクエスト受信時に次の処理が行われます。

  1. AI Search は、選んだしきい値に基づき、似たプロンプトが以前に回答済みかを確認します。
  2. 一致すれば、キャッシュ済みの応答をすぐに返します。
  3. 一致しなければ、新しい応答を生成してキャッシュします。

応答がキャッシュ由来かどうかは、cf-aig-cache-status ヘッダーで確認します。キャッシュなら HIT、新規なら MISS です。

類似キャッシュを使うときの注意

類似キャッシュを使うときは、次の挙動を踏まえてください。

  • 揮発性キャッシュ: 似たリクエストが同時に来ると、最初の結果がキャッシュされる前に 2 件目が処理され、MISS になることがあります。
  • 期間を設定できる: キャッシュ済み応答は、インスタンスの cache_ttl 設定に従って期限切れになります。デフォルトは 48 時間です。
  • データ依存: キャッシュ済み応答は特定のドキュメントチャンクに紐づきます。チャンクが変更または削除されると、回答を新しく保つためにキャッシュがクリアされます。

類似マッチングの仕組み

AI Search の類似キャッシュは MinHash と Locality-Sensitive Hashing (LSH) を使い、言い回しが似たプロンプトの応答を見つけて再利用します。

新しいプロンプトが来たときの流れは次のとおりです。

  1. プロンプトを、重なり合う短い単語のかたまり(シングルト)に分割します。たとえば "what's the" や "the weather" です。
  2. これらのシングルトを MinHash で「指紋」にします。2 つのプロンプトの重なりが多いほど、指紋は近くなります。
  3. 指紋を LSH バケットに入れます。AI Search は全件比較せずに、似たプロンプトを素早く見つけられます。
  4. 同じバケット内の過去のプロンプトが、設定したしきい値以上に似ていれば、そのキャッシュ済み応答を再利用します。

しきい値を選ぶ

類似しきい値は、キャッシュ済み応答を再利用するために、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_optionscache パラメータで、インスタンス単位のキャッシュ設定をリクエストごとに上書きできます。

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",
		},
	},
});

役に立ちましたか?