はじめに
記憶はエージェントを「金魚」(会話のたびに忘れる)から真のアシスタントに変えます。好みを覚え、間違いから学び、時間をかけて知識を蓄積します。
1. メモリの種類
1.1 短期記憶 (作業記憶)
- 現在のセッションでの会話履歴
- コンテキストウィンドウによる制限
1.2 長期記憶
- セッション間で永続的
- ベクターDBまたはデータベースに保存
- 例: ユーザーの好み、重要な事実
1.3 エピソード記憶
- 「エピソード」を覚えておいてください — エージェントがタスクを完了した回数
- エージェントが経験から学ぶのを支援します
- 「前回ユーザーが同じことを尋ねたので、これを実行したらうまくいきました。」
2. 実装
class AgentMemory:
def __init__(self):
self.short_term = []
self.long_term = chromadb.Collection("long_term")
self.episodes = chromadb.Collection("episodes")
def remember(self, content, memory_type="long_term"):
if memory_type == "long_term":
self.long_term.add(documents=[content], ...)
def recall(self, query, n=5):
return self.long_term.query(query_texts=[query], n_results=n)
def save_episode(self, task, steps, outcome):
episode = f"Task: {task}\nSteps: {steps}\nOutcome: {outcome}"
self.episodes.add(documents=[episode], ...)
概要
- 3 種類の記憶: 短期 (会話)、長期 (事実)、エピソード (経験)
- Vector DB は長期記憶とエピソード記憶のバックボーンです
- 要約記憶により、長い会話をコンテキスト ウィンドウに収めるのに役立ちます
- エピソード記憶は、エージェントが時間の経過とともに改善するのに役立ちます
演習
- 完全な AgentMemory クラスを実装する
- セッション全体でユーザー設定を「記憶」するエージェントを構築する
- エピソード記憶を実装すると、テスト エージェントは改善されますか?
- 比較: 長い会話のバッファ メモリと要約メモリ