Database

Amazon ElastiCache

インメモリのキャッシュサービス。AIP-C01ではD4(コスト・性能最適化)の文脈で、「意味が近い問いへの回答を再利用するセマンティックキャッシュ」として出ます。

  • B|実装まわり
  • D4 運用効率と最適化

ひとことで言うと

インメモリのキャッシュ/データストアです。GenAI文脈での主役はセマンティックキャッシュ——文言が違っても意味が近い問いなら、FM(基盤モデル)を再度呼ばずにキャッシュ済みの回答を返す仕組みです。

要するに、聞き覚えのある質問に答える受付です。「返品したい」と「返品の手続き教えて」は文字列としては別物ですが、意味は同じ。ふつうのキャッシュ(完全一致)はこの2つを別物として扱いますが、ElastiCacheのベクトル検索を使えば「似た意味の質問はキャッシュヒットにする」ができます。

なぜ生まれたか

生成AIアプリは、同じような質問が言い回しを変えて何度も来るという性質を持ちます。FM呼び出しはトークン課金かつレイテンシがかかるため、毎回律儀に推論すると無駄にコストとレイテンシが積み上がります。

起きる不便ElastiCacheでの解決
同じ意味の質問なのに文字列が違うとキャッシュが当たらないベクトル検索(HNSW/FLAT)による意味の近さでのヒット判定
推論のたびにFM呼び出し課金が発生する類似プロンプトはキャッシュ応答で完結、FM呼び出しを回避
キャッシュのレイテンシがボトルネックになるマイクロ秒〜1ミリ秒未満のインメモリ検索

何に使うか

用途使い方関連ドメイン
セマンティックキャッシュ質問を埋め込みベクトル化→類似検索→閾値内ならキャッシュ応答を返すD4
会話メモリ(パーソナライズ)LangGraphやmem0と連携し、ユーザーごとの好み・履歴を保持D1・D4
RAGのコンテキストストア検索結果を一時的にキャッシュし、再利用するD1・D4

試験でどう問われるか

問われ方正解に寄る条件引っかけの選択肢
似た質問が繰り返され、FM呼び出しコストとレイテンシを削りたいElastiCacheでのセマンティックキャッシュプロビジョンドスループットを増やして力技で捌く(コストが上がるだけ)
完全一致のキャッシュでは効率が悪いベクトル検索対応のElastiCache(Valkey 8.2以降)で意味の近さ判定に切り替える従来のキー完全一致キャッシュのTTLを短くする(問題の本質を外す)
マイクロ秒級のレイテンシが要件インメモリのElastiCacheが候補になるOpenSearch ServiceやAuroraのようなディスクベースの選択肢

ベクトル検索は特定バージョン限定。ElastiCacheのベクトル検索はElastiCache for Valkey バージョン8.2以降の話です。「ElastiCaseだから何でもベクトル検索できる」わけではなく、対応バージョンの確認が前提になります。

実務でどう使うか

  • キャッシュヒットの判定は「完全一致」ではなく「類似度の閾値」。 閾値を緩くしすぎると、意味が微妙に違う質問にも同じ回答を返してしまう副作用があります
  • セマンティックキャッシュは万能ではありません。 公式ガイダンスの構成では、キャッシュミス時にRAGの検索・生成へフォールバックする設計が前提です。キャッシュだけで完結させる設計は想定されていません
  • 会話メモリとセマンティックキャッシュは別の目的。 同じElastiCacheに同居させられますが、「ユーザー個人の好みを覚える」ことと「同じ質問への回答を使い回す」ことは分けて設計する必要があります

ハマりどころ: 公式ガイダンスの数値は「25%というささやかなキャッシュヒット率でも」コスト削減効果が出ると紹介されています。ヒット率が低い環境でも導入効果はゼロではない一方、「導入すれば必ず大幅削減になる」と過大評価しないこと。効果はトラフィックの質問の重複度に依存します。

取り違えやすいもの

迷う相手切り分けの一言
Bedrock Knowledge BasesKB=正確な根拠を検索して回答を生成する仕組み。ElastiCache=過去に生成した回答をそのまま使い回す仕組み。目的が「検索」か「再利用」かで分かれる
プロンプトキャッシュ(Bedrock側)プロンプトキャッシュはFM呼び出し内部でプロンプトの共通接頭辞を再利用する機能。ElastiCacheのセマンティックキャッシュはアプリ側でFM呼び出し自体を丸ごとスキップする仕組みで、レイヤーが異なる
OpenSearch Service(ベクトルストア)OpenSearchはRAGの正式な検索対象データを持つ場所。ElastiCacheは応答の再利用のための一時的なキャッシュ層

想起チェック

Q1. 似た言い回しの質問が繰り返し来て、FM呼び出しのコストとレイテンシが問題になっています。何を検討しますか?

ElastiCache(Valkey 8.2以降)のベクトル検索を使ったセマンティックキャッシュです。意味が近い質問はFMを呼ばずキャッシュ応答を返すことで、コストとレイテンシの両方を削減できます。

Q2. セマンティックキャッシュとBedrockのプロンプトキャッシュの違いは?

プロンプトキャッシュはFM呼び出しの内部で共通接頭辞の再計算を省く機能。セマンティックキャッシュ(ElastiCache)はアプリ側でFM呼び出し自体をスキップする、レイヤーの異なる仕組みです。

出典(AWS公式)