Agent 记忆系统
Agent 记忆系统是赋予智能体"状态"和"连续性"的核心组件。没有记忆,Agent 只能处理孤立的请求,无法积累经验、保持上下文连贯或实现个性化交互。
一、为什么 Agent 需要记忆系统?
1.1 记忆系统的必要性
Agent 面临的核心挑战:
| 挑战 | 无记忆时的表现 | 有记忆后的改善 |
|---|---|---|
| 上下文连贯 | 每次对话都是全新的,无法理解指代 | 保持多轮对话连贯性 |
| 知识积累 | 无法保留学到的新信息 | 持久化存储重要知识 |
| 个性化服务 | 无法记住用户偏好 | 根据用户历史提供定制服务 |
| 任务连续性 | 长任务中断后无法恢复 | 保存中间状态,支持断点续传 |
| 经验复用 | 重复犯同样的错误 | 从历史中学习,避免重复错误 |
1.2 记忆系统的演进
┌─────────────────────────────────────────────────────────────┐
│ Agent 记忆系统演进历程 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 2022 2023 2024 2025 │
│ │ │ │ │ │
│ ↓ ↓ ↓ ↓ │
│ ┌──────┐ ┌────────┐ ┌────────┐ ┌────────┐ │
│ │单一 │ ─→ │分层 │ ─→ │智能 │ ─→ │自适应 │ │
│ │Context│ │记忆 │ │检索 │ │记忆 │ │
│ └──────┘ └────────┘ └────────┘ └────────┘ │
│ │
│ 仅依赖LLM 短期+长期 RAG检索增强 动态压缩 │
│ 上下文窗口 向量数据库 混合检索策略 智能遗忘 │
│ │
│ 简单对话 多轮对话 知识密集型 长期交互 │
│ 无状态服务 有状态Agent 企业级应用 个性化Agent │
│ │
└─────────────────────────────────────────────────────────────┘二、记忆系统分类
2.1 三层记忆模型
Agent 记忆系统借鉴人类认知心理学,分为三类:
┌─────────────────────────────────────────────────────────────┐
│ Agent 三层记忆模型 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────┐ │
│ │ 用户输入 │ │
│ └────────┬────────┘ │
│ │ │
│ ↓ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ 工作记忆 │ │
│ │ Working Memory (推理中) │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ • 当前推理过程中的临时"草稿纸" │ │ │
│ │ │ • 存储:内存变量、Scratchpad │ │ │
│ │ │ • 生命周期:单次任务执行期间 │ │ │
│ │ │ • 示例:ReAct 中的 Thought/Observation │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ └──────────────────────┬───────────────────────────────┘ │
│ │ │
│ ↓ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ 短期记忆 │ │
│ │ Short-Term Memory (上下文窗口) │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ • 当前对话的上下文窗口 │ │ │
│ │ │ • 存储:LLM Context Window │ │ │
│ │ │ • 生命周期:会话期间 │ │ │
│ │ │ • 示例:最近 N 轮对话、系统提示词 │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ └──────────────────────┬───────────────────────────────┘ │
│ │ │
│ │ (定期归档) │
│ ↓ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ 长期记忆 │ │
│ │ Long-Term Memory (持久化存储) │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ • 持久化存储的历史信息 │ │ │
│ │ │ • 存储:向量库、关系型数据库 │ │ │
│ │ │ • 生命周期:永久 │ │ │
│ │ │ • 示例:用户偏好、历史知识库、任务状态 │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘2.2 记忆类型对比
| 记忆类型 | 定义 | 存储介质 | 生命周期 | 典型应用场景 |
|---|---|---|---|---|
| 短期记忆 | 当前对话的上下文窗口 | LLM Context Window | 会话期间 | 多轮对话连贯性、指代消解 |
| 长期记忆 | 持久化存储的历史信息 | 向量库、关系型数据库 | 永久 | 用户偏好、历史知识库、任务状态 |
| 工作记忆 | 当前推理过程中的临时"草稿纸" | 内存变量、Scratchpad | 单次任务执行期间 | ReAct框架中的Thought/Observation |
三、核心组件概览
3.1 记忆系统架构
┌─────────────────────────────────────────────────────────────────────┐
│ Agent 记忆系统完整架构 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ 用户输入 │ ─→ │ 感知层 │ ─→ │ 记忆写入 │ │
│ └─────────────┘ └─────────────┘ └──────┬──────┘ │
│ │ │
│ ┌─────────────────────────────────────┼────────────────┐ │
│ │ │ │ │
│ ↓ ↓ │ │
│ ┌─────────────┐ ┌─────────────┐ │ │
│ │ 短期记忆 │ ←─────────────────── │ 记忆检索 │ │ │
│ │ Context │ │ Retrieval │ │ │
│ └──────┬──────┘ └──────┬──────┘ │ │
│ │ │ │ │
│ │ ┌─────────────────────┼──────────────┐ │ │
│ │ │ │ │ │ │
│ ↓ ↓ ↓ │ │ │
│ ┌───────────────────────────┐ ┌─────────────┐ │ │ │
│ │ 上下文组装 │ │ 长期记忆 │ │ │ │
│ │ Context Assembly │ │ Vector DB │ │ │ │
│ └───────────┬───────────────┘ └─────────────┘ │ │ │
│ │ │ │ │
│ ↓ │ │ │
│ ┌───────────────────────────┐ ┌─────────────┐ │ │ │
│ │ LLM 推理 │ ←──── │ 工作记忆 │ │ │ │
│ └───────────────────────────┘ └─────────────┘ │ │ │
│ │ │ │
│ ┌────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ ↓ │ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
│ │ 记忆压缩 │ ─→ │ 记忆更新 │ ─→ │ 记忆遗忘 │ │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │ │
│ │ │
│ 【记忆管理层】 │ │
│ │ │
└───────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘3.2 核心功能模块
| 模块 | 功能 | 关键技术 |
|---|---|---|
| 记忆存储 | 不同类型记忆的持久化 | 向量数据库、关系数据库、内存缓存 |
| 记忆检索 | 根据查询召回相关记忆 | 语义检索、关键词检索、混合检索 |
| 记忆压缩 | 减少记忆占用空间 | 摘要生成、关键信息提取 |
| 记忆更新 | 保持记忆的时效性 | 冲突检测、增量更新 |
| 记忆遗忘 | 清理无效或过时记忆 | TTL 过期、LRU 淘汰、重要性评分 |
四、存储技术选型
4.1 技术对比
| 存储技术 | 代表产品 | 优势 | 劣势 | 适用记忆类型 |
|---|---|---|---|---|
| 向量数据库 | Milvus, Pinecone, Chroma, Weaviate | 支持语义相似度检索 | 不支持复杂关系查询 | 长期记忆(非结构化文本) |
| 关系型数据库 | PostgreSQL, MySQL, SQLite | 支持复杂查询、事务 | 无法直接进行语义检索 | 长期记忆(用户画像、任务状态) |
| 文件系统/键值对 | JSON, Redis, Pickle | 读写速度极快 | 难以扩展,无查询能力 | 短期记忆、缓存、配置 |
4.2 选型决策树
┌─────────────────────────────────────────────────────────────┐
│ 存储技术选型决策树 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ │
│ │ 需要语义检索 │ │
│ └──────┬──────┘ │
│ │ │
│ ┌──────────────┴──────────────┐ │
│ ↓ ↓ │
│ ┌─────────┐ ┌─────────┐ │
│ │ 是 │ │ 否 │ │
│ └────┬────┘ └────┬────┘ │
│ │ │ │
│ ↓ ↓ │
│ ┌───────────────┐ ┌───────────────┐ │
│ │ 向量数据库 │ │ 需要复杂查询? │ │
│ │ Chroma/Milvus│ └───────┬───────┘ │
│ └───────────────┘ │ │
│ ┌────────────┴────────────┐ │
│ ↓ ↓ │
│ ┌─────────┐ ┌─────────┐│
│ │ 是 │ │ 否 ││
│ └────┬────┘ └────┬────┘│
│ │ │ │
│ ↓ ↓ │
│ ┌───────────────┐ ┌───────────┐ │
│ │ 关系型数据库 │ │ Redis/JSON│ │
│ │ PostgreSQL │ │ 文件缓存 │ │
│ └───────────────┘ └───────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘五、章节内容导航
六、学习建议
6.1 学习路径
入门 → 记忆系统概述(理解三层记忆模型)
↓
基础 → 短期记忆(掌握 Context Window 管理)
↓
进阶 → 长期记忆(学习向量数据库使用)
↓
深入 → 记忆检索(掌握 RAG 和混合检索)
↓
高级 → 记忆压缩与管理(优化记忆系统性能)6.2 实践建议
| 阶段 | 实践内容 | 预期收获 |
|---|---|---|
| 入门 | 理解三层记忆模型的区别 | 建立记忆系统整体认知 |
| 基础 | 实现多轮对话的上下文管理 | 掌握短期记忆使用 |
| 进阶 | 使用 Chroma 构建向量记忆 | 掌握长期记忆存储 |
| 深入 | 实现 RAG 检索增强 | 提升记忆检索准确性 |
| 高级 | 添加记忆压缩和遗忘机制 | 优化记忆系统性能 |
七、总结
| 概念 | 一句话总结 | 面试关键词 |
|---|---|---|
| 记忆系统 | Agent 的"大脑存储",赋予状态和连续性 | 短期记忆、长期记忆、工作记忆 |
| 三层模型 | 短期对话、长期存储、工作推理三种记忆 | Context Window、向量数据库 |
| 存储选型 | 根据检索需求选择向量库或关系数据库 | Chroma、Milvus、PostgreSQL |
| 检索策略 | 语义+关键词混合检索,RAG 是主流 | 语义检索、混合检索、RAG |
| 记忆管理 | 压缩摘要、遗忘机制、优先级管理 | 记忆压缩、TTL、LRU |
一句话总结:Agent 记忆系统分为短期、长期、工作三层,通过合理的存储选型、检索策略和管理机制,实现智能体的状态保持和知识积累。
最后更新:2026年3月18日