エピソード記憶(セッションごとの履歴)
何が起きたかを会話ごとのログとして記録し、時刻とセッションidでインデックス化します。
「エピソード記憶(セッションごとの履歴)」はCoddyKit上の無料AI Agentsレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAI Agents学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AI Agentsコースには全4レッスンが含まれています。
このレッスンの一部はまだ翻訳されておらず、英語で表示されています。
メモリの3つの種類
エージェントのメモリは、認知科学に着想を得て、通常次の3種類に分けられます。
- Episodic — 起きたこと(この会話、先週のセッション)
- Semantic — 世界やユーザーに関する事実
- Procedural — スキル(成功したアクションの手順)
このレッスンではEpisodicを扱います。
エピソード記憶とは
エピソード記憶には、タイムスタンプとコンテキスト付きで具体的な出来事が保存されます。エージェントにとっては、セッションごとの会話ログにあたります。
これは最も基本的なメモリの形であり、最も構築しやすいものです。
データモデル
ターンごと、またはセッションごとに1行を保存します。
CREATE TABLE episodes (
id BIGSERIAL PRIMARY KEY,
user_id TEXT NOT NULL,
session_id TEXT NOT NULL,
role TEXT NOT NULL, -- system/user/assistant/tool
content TEXT NOT NULL,
created_at TIMESTAMPTZ DEFAULT NOW(),
metadata JSONB
);Saving Each Turn
def save_turn(user_id, session_id, role, content, metadata=None):
conn.execute('''
INSERT INTO episodes (user_id, session_id, role, content, metadata)
VALUES (%s, %s, %s, %s, %s::jsonb)
''', (user_id, session_id, role, content, json.dumps(metadata or {})))Loading a Session
def load_session(session_id):
rows = conn.execute('SELECT role, content FROM episodes WHERE session_id = %s ORDER BY id', (session_id,))
return [{'role': r[0], 'content': r[1]} for r in rows]複数セッションの履歴
同じユーザーの過去のセッションからコンテキストを取得したい場合があります。たとえば、「Aliceは昨日何を尋ねたか」のような場合です。
def recent_sessions(user_id, n=5):
rows = conn.execute('''
SELECT DISTINCT session_id, MIN(created_at) AS started
FROM episodes WHERE user_id = %s
GROUP BY session_id ORDER BY started DESC LIMIT %s
''', (user_id, n))
return [r[0] for r in rows]過去のセッションを埋め込み化
トピックで過去のエピソードを取得するには、各セッションの要約を埋め込み化します。
def index_session(session_id):
summary = summarise(load_session(session_id))
vec = embed(summary)
save_to_vector_db(session_id, vec, summary)エピソード検索
ユーザーが「先週、料金について何を話したか」と尋ねたら、埋め込みで検索します。
def search_episodes(user_id, query):
qvec = embed(query)
candidates = vector_db.query(qvec, k=10, filter={'user_id': user_id})
return [load_session(c.id) for c in candidates]プライバシーと保持期間
エピソードログにはPIIが大量に含まれます。次の対策を適用します。
- 保存時の暗号化
- アカウント閉鎖時のユーザー単位の削除
- N日後の自動削除
- 分析を行う前のマスキングまたは仮名化
古いエピソードを要約
最近のターンはそのまま保持し、古いターンは要約にまとめます。
if session_age_days > 30:
summary = summarise(load_session(sid))
conn.execute('UPDATE episodes SET content = %s WHERE session_id = %s', (summary, sid))
conn.execute('DELETE FROM episodes WHERE session_id = %s AND created_at < NOW() - INTERVAL \'1 day\'', (sid,))エピソード記憶と短期コンテキスト
短期コンテキストは現在のメッセージ一覧(モデルが今見ているもの)です。エピソード記憶はデータベースであり、検索可能で永続的、さらに大容量です。
エピソード記憶を他のメモリに結び付ける
エピソードから次の情報を抽出できます。
- 意味記憶の事実(「ユーザーは摂氏を好む」)
- 手続き記憶のスキル(うまくいったツール呼び出しの手順)
これらは他の2種類のメモリに取り込まれます。
評価のためのリプレイ
生のエピソードを保存して、リプレイできるようにします。エージェントを変更したら、過去のエピソードを再実行し、新しい出力も良好か確認します。
エピソード記憶とは
エピソード記憶には何が保存されますか。
まとめ
エピソード記憶は、DBに保存されたタイムスタンプ付きのセッションログです。ユーザー別、セッション別、埋め込み別に検索できます。古いものは要約します。意味記憶と手続き記憶に取り込みます。
AI チューターと学ぶ AI Agents — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 60
- レッスン
- 239
よくある質問
「エピソード記憶(セッションごとの履歴)」レッスンは無料ですか?
はい。「エピソード記憶(セッションごとの履歴)」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AI Agentsコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AI Agentsコースには全4レッスンが含まれています。
「エピソード記憶(セッションごとの履歴)」で何を学びますか?
何が起きたかを会話ごとのログとして記録し、時刻とセッションidでインデックス化します。 ブラウザで直接実行するハンズオンコードでAI Agentsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
AI Agentsを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAI Agentsは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「エピソード記憶(セッションごとの履歴)」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAI Agentsレッスンでコードを書いて実行できますか?
はい。すべてのAI Agentsレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- エピソード記憶(セッションごとの履歴)
- 意味記憶(ベクトル化された事実)
- 手続き記憶(スキルライブラリ)
- 記憶の減衰とガベージコレクション