メモリとは
対象読者: 複数回のやり取りやセッションをまたいでAIに情報を覚えさせたい方、会話が長くなると前提を忘れてしまう問題を解決したい方
前提知識: コンテキストエンジニアリング の基礎
メモリとは、AIエージェントが会話のターンやセッションをまたいで情報を保持し、必要なときに呼び出す仕組みです。コンテキストエンジニアリングが「今この瞬間に何を見せるか」を扱うのに対し、メモリは「あとで使うために何を残しておくか」を扱います。
コンテキストとメモリの違い
| 観点 | コンテキスト | メモリ |
|---|---|---|
| 時間軸 | 今この瞬間に見えている情報 | ターンやセッションをまたいで保持される情報 |
| 役割 | 直接の判断材料を渡す | あとで呼び出すための貯蔵庫 |
| 例 | 現在の指示、直前のツール結果 | ユーザーの好み、過去のタスク履歴 |
メモリに保存された情報も、実際に使われるときはコンテキストとしてモデルへ渡されます。つまりメモリは、コンテキストへ後から読み込まれる「情報の貯蔵庫」です。
短期メモリと長期メモリ
| 種類 | 説明 | 実装例 |
|---|---|---|
| 短期メモリ | 現在のセッション内でのみ有効な作業状態 | 会話履歴、直前のツール実行結果 |
| 長期メモリ | セッションをまたいで保持される情報 | ユーザーの好み、過去のタスク結果、ドキュメント |
長期メモリの実装パターン
1. 要約による圧縮
会話やログをすべて残すのではなく、重要な決定事項・未解決事項・制約を要約して保存します。長くなった履歴を毎回すべて渡すと、コンテキストウィンドウを圧迫し重要情報が埋もれます。
2. ベクトル検索による想起
過去の情報をベクトル化して保存し、現在のタスクに関連する情報だけを類似検索で呼び出します。この仕組みはRAGの考え方と共通しています。
3. 構造化ストレージ
ユーザーの設定・プロフィール・プロジェクトの制約などは、自由文ではなく構造化されたファイルやレコードとして保存すると、後から正確に参照できます。
# ユーザープロフィール例
好みの回答スタイル: 簡潔・箇条書き中心
使用言語: 日本語
プロジェクトの制約: 本番デプロイは承認後のみメモリ設計で気をつけること
- 古い情報を混ぜない: 解決済みの問題や過去の仮説が残ると、AIが誤った前提で判断することがあります
- 何でも保存しない: すべてを記憶させるとノイズが増え、重要な情報が埋もれます
- 出所を残す: いつ・どのタスクで得られた情報かを記録すると、古くなった情報を検証しやすくなります
このセクションのページ一覧
| ページ | 内容 |
|---|---|
| 短期メモリと長期メモリ | 2種類のメモリの寿命と書き込み基準 |
| メモリとRAGの違い | 似た仕組みをどう使い分けるか |
| 長期メモリの保存方式 | ファイル・構造化・ベクトル検索・要約の比較 |
まとめ
- メモリは、ターンやセッションをまたいで情報を保持・呼び出す仕組み
- コンテキストが「今見せる情報」なら、メモリは「あとで使うために残す情報」
- 短期メモリは会話履歴、長期メモリは要約・ベクトル検索・構造化ストレージで実装する
- 何でも保存するのではなく、古い情報の整理と出所の記録が品質を左右する
クイズ