【要約】Lakebase × LangGraph × Qwen3で作る、セッションを跨ぐ記憶を持つAIエージェント (連載 第2回) [Qiita_Trend] | Summary by TechDistill
> Source: Qiita_Trend
Execute Primary Source
// Problem
従来のthread_id単位の短期メモリ(Checkpointer)では、セッション終了時に会話文脈を全て喪失する。これにより、以下の課題が生じる。
- ・ユーザーの好みや属性を次回のセッションに引き継げない。
- ・「数日前の会話」に基づいたパーソナライズが不可能。
- ・会話履歴と永続的なユーザー知識の管理が混在する。
// Approach
LangGraphのPostgresStoreを活用し、以下の構成で解決する。
1.PostgresSaverによる短期メモリ(thread_id単位)の維持。
2.PostgresStoreによる長期メモリ(user_id単位のnamespace)の実装。
3.save_memoryツールによる情報の構造化保存。
4.recall_memoriesツールによるpgvectorを用いた意味検索。
5.Qwen3-Embeddingによる日本語対応のベクトル化。
6.create_react_agentへのstore引数の注入。
// Result
thread_idを変更しても、同一user_idであれば過去の嗜好(趣味や食べ物)を正確に参照可能。短期メモリ(直前の会話)と長期メモリ(過去の知識)が独立して動作することを確認。LLMが三人称視点で情報を整形して保存する挙動も確認された。
Senior Engineer Insight
> 短期メモリと長期メモリの分離は、エージェント設計におけるSeparation of Concernsの観点から極めて重要だ。thread_idに依存しないuser_idベースのnamespace設計により、マルチセッション環境下でのパーソナライズが容易になる。ただし、ライブラリ間の依存競合や、Embeddingモデルの出力型(int/float)の不一致といった、実装時のエッジケースへの厳格な対処が、本番環境での安定稼働には不可欠である。