Agent 记忆系统
在构建能够进行多轮交互的 AI Agent 时,记忆系统是其核心组件之一。记忆使 Agent 能够保留先前交互的信息,从而学习反馈、适应用户偏好,并高效处理复杂任务。
Agent 记忆可分为短期记忆和长期记忆。
在 LangGraph 中,记忆就是"持久化的状态(Persisted State)"。记忆系统是 Agent 实现上下文感知和个性化服务的核心能力。
记忆类型概览
┌─────────────────────────────────────────────────────────────┐
│ Agent 记忆系统 │
├─────────────────────────────────────────────────────────────┤
│ 短期记忆 (Checkpointer) │
│ └── 与 thread_id 绑定,会话级生命周期 │
│ - InMemorySaver: 内存存储(开发用) │
│ - PostgresSaver: 数据库存储(生产用) │
├─────────────────────────────────────────────────────────────┤
│ 长期记忆 (Store) │
│ └── 跨会话持久化,用户级生命周期 │
│ - InMemoryStore: 内存存储(开发用) │
│ - PostgresStore: 数据库存储(生产用) │
└─────────────────────────────────────────────────────────────┘
短期记忆 vs 长期记忆
| 维度 | 短期记忆 | 长期记忆 |
|---|---|---|
| 生命周期 | 与会话(thread)绑定,会话结束即清理 | 与用户/业务实体绑定,跨会话持久 |
| 存储机制 | Checkpointer(检查点保存器) | Store(键值存储 / 向量存储) |
| 检索方式 | 自动加载到上下文 | 需主动调用工具或在节点中检索 |
| 存储形态 | 对话历史(完整上下文) | 结构化档案 / 知识片段 |
| 核心场景 | 多轮对话维持、失败恢复 | 用户偏好、经验积累、个性化服务 |
| 隔离级别 | thread_id | user_id / namespace |
核心组件
短期记忆三要素
- State(状态):定义存储消息的结构(通常是
MessagesState) - Checkpointer(检查点保存器):在每一步结束后把状态保存下来
- Thread ID(线程 ID):通过
config传入,隔离不同用户的对话上下文
长期记忆三要素
- Store(存储):提供跨会话的持久化键值存储
- Namespace(命名空间):层次化路径组织数据,实现用户级隔离
- Memory Tool / Node(记忆工具/节点):在 Agent 中读写长期记忆的入口
记忆类型选择指南
| 场景 | 推荐方案 | 说明 |
|---|---|---|
| 单会话多轮对话 | Checkpointer | 自动管理对话历史 |
| 跨会话用户偏好 | Store | 精确存取结构化数据 |
| 模糊知识检索 | Store + 向量索引 | 语义搜索相关记忆 |
| 企业级全场景 | Checkpointer + Store | 短期 + 长期组合使用 |