一文读懂 Context / Memory 设计:AI Agent 的核心能力
一文读懂 Context / Memory 设计:AI Agent 的核心能力
在传统软件系统中,程序的状态通常由数据库或缓存管理。但在 LLM 和 AI Agent 系统中,情况稍有不同:大语言模型本身是**无状态(Stateless)**的,每一次调用模型都是一次全新的推理过程。
这就意味着,如果系统不做额外设计,模型不会记住任何历史信息。
例如:
1 | |
如果系统没有提供历史上下文,模型实际上只看到:
1 | |
显然它无法回答。
因此在 AI Agent 系统中,需要设计一套 Memory 与 Context 管理机制,用于存储历史信息并在适当的时候提供给模型。这也是现代 Agent 架构中非常重要的一部分。
本文将系统介绍:
- Agent Memory 的类型
- Context 管理方式
- Memory 与 RAG 的关系
- 工程实现思路
一、Agent Memory 的四种类型
在 AI Agent 系统中,Memory 通常可以分为四种类型。
1. 短期记忆(Short-term Memory)
短期记忆主要用于存储当前会话中的上下文信息。例如:
- 用户输入
- 模型回复
- 当前任务状态
- Agent 在推理过程中生成的中间问题
一般来说,短期记忆就是 Conversation History。
例如:
1 | |
工程实现中通常使用一个 messages 列表来管理:
1 | |
短期记忆通常存储在:
- 内存
- Redis
- Session Store
主要用于管理当前会话上下文。
2. 长期记忆(Long-term Memory)
长期记忆用于存储用户的长期信息和历史数据。
例如:
- 用户名字
- 用户偏好
- 历史任务
- 个性化信息
长期记忆的实现方式通常是:
- 向量数据库
- 关系数据库
在 AI Agent 系统中,很多长期记忆会被转换为向量,然后存储在向量数据库中,例如:
- FAISS
- Milvus
- Pinecone
- Weaviate
当用户发起请求时,系统会通过 Embedding + Vector Search 检索相关信息。
流程一般是:
1 | |
3. 事件记忆(Episodic Memory)
事件记忆用于记录 Agent 在过去执行过的任务和交互事件。
它记录的是 “发生过什么事情”,而不是简单的知识。
通常包含以下信息:
- 事件 ID
- 时间戳
- 用户查询
- Agent 计划
- 执行动作
- 工具调用
- 任务结果
- 执行状态
例如:
1 | |
事件记忆的作用包括:
- 任务回溯
- Agent 调试
- 系统监控
- 多步骤任务恢复
常见存储方式包括:
- 关系数据库(PostgreSQL / MySQL)
- 文档数据库(MongoDB)
- 向量数据库(用于相似任务检索)
4. 知识记忆(Semantic Memory)
知识记忆用于存储系统的知识和事实。
例如:
- 产品文档
- 公司政策
- 技术资料
- FAQ
- 知识库
这种类型的 Memory 通常通过 RAG(Retrieval Augmented Generation) 实现。
流程如下:
1 | |
因此可以理解为:
1 | |
二、上下文管理(Context Management)
Memory 并不能直接全部提供给模型,因为 LLM 的 Context Window 是有限的。
例如:
- GPT-4:128k tokens
- Claude:200k tokens
但在真实系统中:
1 | |
因此系统必须进行 Context Selection(上下文选择)。
1. Sliding Window(滑动窗口)
滑动窗口是最简单的方式。
只保留最近的 N 轮对话,例如:
1 | |
优点:
- 实现简单
- 性能好
缺点:
- 可能丢失重要历史信息
2. Summary Memory(摘要记忆)
系统会对旧对话进行总结,例如:
1 | |
然后将摘要加入新的上下文。
优点:
- 减少 token 使用
- 保留关键事实
缺点:
- 需要额外 LLM 调用
3. Retrieval Memory(检索式记忆)
通过向量检索找到与当前问题相关的历史信息。
流程:
1 | |
这种方式可以保证:
- 只选择相关信息
- 提高上下文质量
三、Memory 与 RAG 的区别
很多人会混淆 Memory 和 RAG。
实际上它们的用途不同。
| 技术 | 主要用途 |
|---|---|
| Memory | 存储状态 |
| RAG | 检索知识 |
例如:
1 | |
属于:
1 | |
而:
1 | |
属于:
1 | |
简单来说:
1 | |
四、AI Agent 中的 Memory 架构
在典型的 Agent 系统中,Memory 模块通常如下:
1 | |
整个系统中会有两个关键操作:
1 | |
五、总结
在 AI Agent 系统中,Memory 和 Context Management 是保证多轮推理和任务连续性的核心模块。
Memory 主要包括四类:
1 | |
而 Context Management 的核心问题是:
1 | |
因此系统需要通过:
- Sliding Window
- Summary Memory
- Retrieval Memory
等方式进行上下文管理。
六、面试常见问题与答案
1 为什么 LLM 需要 Memory?
LLM 本身是无状态模型,每次调用都无法记住历史信息,因此需要 Memory 模块存储用户历史、任务状态以及系统信息,以支持多轮对话和复杂任务执行。
2 Context 和 Memory 的区别
Memory 是系统长期存储的信息,而 Context 是当前输入给 LLM 的 Prompt 内容。
通常流程是:
1 | |
3 Agent Memory 有哪些类型?
常见类型包括:
- Short-term Memory(会话记忆)
- Long-term Memory(长期用户信息)
- Episodic Memory(事件记忆)
- Semantic Memory(知识记忆)
4 如何解决 Context Window 限制?
常见方法包括:
- Sliding Window
- Conversation Summary
- Retrieval-based Memory
这些方法可以在有限的上下文窗口中保留最重要的信息。
5 Memory 如何实现?
常见实现方式包括:
- Conversation History(短期记忆)
- Vector Database(长期记忆)
- SQL / Document Store(事件记忆)
- Knowledge Base + RAG(知识记忆)
6 Memory 和 RAG 的区别
Memory 用于存储系统状态,例如用户信息或历史任务;
RAG 用于检索知识,例如文档或知识库。
因此可以理解为:
1 | |