ひとことで言うと
インメモリのキャッシュ/データストアです。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 Bases | KB=正確な根拠を検索して回答を生成する仕組み。ElastiCache=過去に生成した回答をそのまま使い回す仕組み。目的が「検索」か「再利用」かで分かれる |
| プロンプトキャッシュ(Bedrock側) | プロンプトキャッシュはFM呼び出し内部でプロンプトの共通接頭辞を再利用する機能。ElastiCacheのセマンティックキャッシュはアプリ側でFM呼び出し自体を丸ごとスキップする仕組みで、レイヤーが異なる |
| OpenSearch Service(ベクトルストア) | OpenSearchはRAGの正式な検索対象データを持つ場所。ElastiCacheは応答の再利用のための一時的なキャッシュ層 |
想起チェック
Q1. 似た言い回しの質問が繰り返し来て、FM呼び出しのコストとレイテンシが問題になっています。何を検討しますか?
ElastiCache(Valkey 8.2以降)のベクトル検索を使ったセマンティックキャッシュです。意味が近い質問はFMを呼ばずキャッシュ応答を返すことで、コストとレイテンシの両方を削減できます。
Q2. セマンティックキャッシュとBedrockのプロンプトキャッシュの違いは?
プロンプトキャッシュはFM呼び出しの内部で共通接頭辞の再計算を省く機能。セマンティックキャッシュ(ElastiCache)はアプリ側でFM呼び出し自体をスキップする、レイヤーの異なる仕組みです。