Skip to main content

Agent Memory

Agent Memory は、agent が 過去の会話、観測、学んだ事実、ユーザー嗜好 を保持し、必要時に取り出す仕組みです。LLM の context window 制約と、long-horizon task の両方に効きます。

Memory の階層

種類内容実装例
Working memory現在 task の scratchpadContext window
Episodic memory個別の出来事・会話DB + timestamp
Semantic memory一般化された事実Vector store + KG
Procedural memoryスキル / playbookFew-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 costRetrieval 結果が context を圧迫
Generalization個別事例から正しい一般化が難しい

数式で見る memory retrieval

Agent memory は、過去の observation や document を embedding として保存し、現在の query に近いものを取り出す仕組みとして書けます。Memory item mim_i の embedding を ei\mathbf{e}_i、現在の query embedding を q\mathbf{q} とすると、retrieval score は cosine similarity で表せます。

si=qeiqeis_i=\frac{\mathbf{q}^\top\mathbf{e}_i}{\|\mathbf{q}\|\|\mathbf{e}_i\|}

Top-k retrieval は、sis_i が大きい memory を選びます。

Mk=TopKi(si)\mathcal{M}_k=\operatorname{TopK}_{i}(s_i)

この式の気持ちは、「現在の問題に意味的に近い過去の経験や知識だけを context に戻す」というものです。すべての memory を入れると context が溢れるため、retrieval と要約が agent memory の中心になります。

関連ページ

主なソース