记忆管理系统
在 LangGraph 中,记忆就是"持久化的状态(Persisted State)"。LangChain 1.0 的记忆管理与 LangGraph 的状态机制深度绑定。
你需要掌握三个核心要素:
- State (状态): 定义用来存储消息的结构(通常是
MessagesState)。 - Checkpointer (检查点保存器): 负责在每一步结束后把状态保存下来(短期记忆通常用
MemorySaver)。 - Thread ID (线程ID): 在调用时通过
config传入,用来隔离不同用户的对话上下文。
记忆类型概览
┌─────────────────────────────────────────────────────────────┐
│ Agent 记忆系统 │
├─────── ──────────────────────────────────────────────────────┤
│ 短期记忆 (Checkpointer) │
│ └── 与 thread_id 绑定,会话级生命周期 │
│ - InMemorySaver: 内存存储(开发用) │
│ - PostgresSaver: 数据库存储(生产用) │
├─────────────────────────────────────────────────────────────┤
│ 长期记忆 (VectorStore) │
│ └── 模糊知识片段,跨会话持久化 │
│ - Chroma: 本地向量数据库 │
│ - Pinecone/Milvus: 云端向量数据库 │
├─────────────────────────────────────────────────── ──────────┤
│ 跨线程记忆 (BaseStore) │
│ └── 结构化用户档案,跨会话精确检索 │
│ - PostgresStore: 数据库持久化 │
└─────────────────────────────────────────────────────────────┘
短期 vs 长期记忆的分界
| 维度 | 短期记忆 | 长期记忆 |
|---|---|---|
| 生命周期 | 与会话(thread)绑定,会话结束即清理 | 与用户/业务实体绑定,跨会话持久 |
| 检索方式 | 自动加载到上下文 | 需主动调用搜索工具 |
| 存储形态 | 对话历史(完整上下文) | 知识片段(语义向量) |
| 核心场景 | 长对话维持、失败恢复 | 用户偏好、经验积累 |