ASADASHI
バイブコーディング
バイブコーディング2026.10.03·読了 2分·難易度: むずかしい

AIエージェントに「長期記憶」を持たせる2層構造

朝の出汁版(通勤2分)

  • ポイント1: GoogleがAIエージェント向けに、短期バッファ(Valkey)と長期保存(AlloyDB)を組み合わせた2層メモリ構成を公開し、トークン消費を最大70%削減できると発表した。
  • ポイント2: AIエージェントはセッションをまたぐと記憶がリセットされる構造上の問題があり、「非停止便のみ希望」「グルテンフリー対応」のような前提条件を複数日にわたって保持するには、短期・長期で役割を分けた設計が必要になる。
  • ポイント3: 公式ブログにアーキテクチャ図と実装パターンが記載されているので、自前のエージェント(旅行・営業・コンテンツ制作など)で同様の仕組みを作りたい場合の設計たたき台として読むところから始めるのがおすすめ。

出汁の素(深読みモード)

AIエージェントが「昨日の会話」を忘れる理由

LLMは設計上ステートレス、つまり「状態を持たない」構造になっています。会話ごとにコンテキストウィンドウが初期化されるため、セッションをまたぐと前回のやり取りは原則リセットされます。

たとえば旅行を計画するエージェントを作ったとします。ユーザーが1日目に「乗り継ぎなしの便だけで」「ホテルは1泊2万円以内」と伝えても、翌日のセッションでは白紙に戻る。観光スポットの話が盛り上がれば、それ以前に確定していたはずの前提条件がコンテキストから押し出される。こういった問題は、旅行エージェントに限らず、営業フォローやコンテンツ制作の補助エージェントでも同様に起きます。

「記憶が続くエージェント」を実現するには、LLMの外側に記憶を保持する仕組みが必要です。それをどう設計するかがここ数か月の実装上の核心テーマになっています。

Googleが示した「短期+長期」2層メモリの構成

Googleが公式ブログで公開したアーキテクチャは、役割の異なる2つのストレージを組み合わせたものです。

短期バッファ:Memorystore for Valkey Redis互換の高速インメモリDBで、セッション内の会話履歴や一時的な判断ログを置きます。レイテンシが低く、直近の文脈を素早く読み書きするのに向いています。ただしインメモリなので揮発性があり、長期保存には向きません。

長期ストレージ:AlloyDB AI PostgreSQL互換のフルマネージドDBで、「この人は非停止便しか使わない」「グルテンフリー対応が必要」といったユーザーの根本的な条件や過去の意思決定を永続化します。ベクトル検索にも対応しており、関連する過去情報を意味的に引き出すことができます。

注目すべきはトークン消費が最大70%削減できるという点です。毎回すべての会話履歴をプロンプトに詰め込む代わりに、「今のセッションに関係する情報だけ」を長期ストレージから取り出してコンテキストに加える設計なので、無駄なトークンを積まなくて済む。コスト面での合理性が明確です。

公式ブログにはアーキテクチャ図と実装パターンが記載されており、構成のたたき台として読める内容になっています。

この設計が使えるエージェントのパターン

2層メモリが効くのは「複数日にわたって状態が積み上がっていくエージェント」です。具体的には以下のようなケースが当てはまります。

  • 営業フォローエージェント:「先方は価格より導入工数を気にしている」「担当者交代があった」などの商談文脈を保持したまま、複数のフォローメールを生成する
  • コンテンツ制作補助:「このブランドは丁寧語ベースで、横文字は最小限」といったトーン定義を毎回プロンプトに書かずに済む
  • 社内QAエージェント:ユーザーごとの役職や権限、過去の問い合わせ履歴に基づいた回答の出し分け

一方、単発の検索タスクや「会話が1セッションで完結する用途」には、この2層構成はやや重いかもしれません。実装コストとユースケースを照らし合わせて判断するのが現実的です。

なお、先日のGoogleがAIエージェントにクラウド操作を丸投げできる仕組みを公開でも触れたように、Googleはエージェント周辺のインフラを段階的に整備しています。ストレージ・オーケストレーション・実行基盤と、レイヤーごとに選択肢が増えてきているタイミングです。

自前のエージェントに組み込む最初の一手

公式ブログ(https://cloud.google.com/blog/products/databases/implementing-long-term-ai-agent-memory-in-alloydb-and-memorystore/)にはアーキテクチャ図と概念的な実装パターンが掲載されています。まずこれを読んで、自分が作りたいエージェントの「何を長期保存すべきか」を書き出すところから始めるのがおすすめです。

具体的な確認順序としては:

  1. 長期保存の候補を洗い出す:ユーザーの固定条件・過去の意思決定・設定値など。「毎回プロンプトに書き直していること」が保存候補のサイン
  2. 短期と長期の境界を決める:「会話内で完結する情報」はValkey、「セッションをまたいで使う情報」はAlloyDB、と役割を分ける
  3. AlloyDBのベクトル検索で引き出す設計を検討する:単純なキー検索だけでなく、「意味的に近い過去の会話」を取ってくる構成にすると精度が上がる

Google CloudのAlloyDB・Memorystore(Valkey)はどちらも無料トライアルが使える期間があります。試す環境を作るコストは低いので、まず小さなPoCとして「1ユーザーの設定情報をDBに永続化する」だけを実装してみる入り方が現実的です。

なお、ストレージコスト面が気になる場合はGoogleのAI向けストレージが月6円/GBで使えるようになったも参照すると、コスト感覚の整理に役立ちます。

OSS側で同様の記憶管理を実装したい人へ

Googleのマネージドサービスを使わずに同様の構成を作りたい場合、参考になるOSSがあります。

opensre(https://github.com/Tracer-Cloud/opensre / Python / 約11,000 stars)は、AIエージェントがインフラ監視・運用を担うSREエージェントを構築するためのオープンソースツールキットです。エージェントが複数のセッションにまたがって状態を追跡する仕組みを持っており、長期メモリ設計の実装参考として読めます。

またSentry(https://github.com/getsentry/sentry / Python / 約45,000 stars)はエラートラッキングが主用途ですが、エージェントが「過去にどんなエラーパターンを見たか」を記録・参照する構成を組む際に、イベントストアとしての活用パターンが参考になります。

マネージドかOSSかという選択は、チームの運用負荷と要件次第です。まず公式ブログのアーキテクチャを理解してから、実装レイヤーで使うコンポーネントを選ぶ順序が効率的です。

参照ソース