Agent Memory
Agent Memory は、agent が 過去の会話、観測、学んだ事実、ユーザー嗜好 を保持し、必要時に取り出す仕組みです。LLM の context window 制約と、long-horizon task の両方に効きます。
Memory の階層
| 種類 | 内容 | 実装例 |
|---|---|---|
| Working memory | 現在 task の scratchpad | Context window |
| Episodic memory | 個別の出来事・会話 | DB + timestamp |
| Semantic memory | 一般化された事実 | Vector store + KG |
| Procedural memory | スキル / playbook | Few-shot prompt、tool prompt |
Short-term: context window
最も基本的な memory は、LLM の context window です。
- 直近 N turn を入れる
- 古い turn は要約して圧縮
- System prompt に role / constraints
問題: long context は cost / latency / lost-in-the-middle が増える。
Long-term: vector memory
Vector memory は、過去の発話や知識を embedding して vector DB に保存し、必要時に retrieve します。
RAG と同じ technique です。違いは、
- 知識ベースではなく agent 自身の経験
- 時系列の重要度減衰 (recency)
- User 個別のプロファイル
Reflection ベースの memory
Reflexion 系の agent では、失敗・成功の経験を 自然言語 reflection として保存します。次の試行で参照することで、self-improvement のループを作ります。
Context engineering
近年は context engineering という言葉で、agent への入力 context (system prompt、retrieval、history、tools、files) を 動的かつ適切に構成する 設計が重要視されています。Prompt engineering の延長で、agent の性能を左右する core skill です。
Memory の問題
| 問題 | 内容 |
|---|---|
| 古い情報の整合性 | User 設定が変わったのに古い memory が出る |
| Privacy | 機密情報の永続化 |
| Memory poisoning | 悪意ある input が memory に入る |
| Token cost | Retrieval 結果が context を圧迫 |
| Generalization | 個別事例から正しい一般化が難しい |
数式で見る memory retrieval
Agent memory は、過去の observation や document を embedding として保存し、現在の query に近いものを取り出す仕組みとして書けます。Memory item の embedding を 、現在の query embedding を とすると、retrieval score は cosine similarity で表せます。
Top-k retrieval は、 が大きい memory を選びます。
この式の気持ちは、「現在の問題に意味的に近い過去の経験や知識だけを context に戻す」というものです。すべての memory を入れると context が溢れるため、retrieval と要約が agent memory の中心になります。
関連ページ
- AI Agents Overview
- Retrieval-Augmented Generation
- ReAct and Reasoning Agents
- Long Context and Position Encoding
主なソース
- Generative Agents (Park et al.): https://arxiv.org/abs/2304.03442
- MemGPT: https://arxiv.org/abs/2310.08560
- LangGraph memory docs: https://langchain-ai.github.io/langgraph/concepts/memory/
- Lilian Weng on LLM Agents: https://lilianweng.github.io/posts/2023-06-23-agent/