1485 字
4 分钟
Agent 教学笔记(三):记忆与 RAG,治好 Agent 的「失忆症」
Agent 教学笔记(三):记忆与 RAG,治好 Agent 的「失忆症」
前两篇写了「会做事」和「手脚」,这一篇写「记性」。我一度以为记忆就是把历史对话全塞进去,后来才发现,这是个特别容易翻车的想法。
一、先确诊:Agent 的「失忆症」
大模型本身是「无状态」的:每一次对话都会被重置。它可能有几十亿参数,却记不住一小时前聊过什么。
这不是 bug,这是它的出厂设定。而「记忆模块」,就是为了治这个病而生的。
二、三个最容易混的词,一次摆清
这三个词我以前老是混着用,后来才摆清楚:
| 名词 | 是什么 | 类比 |
|---|---|---|
| 上下文窗口 | 模型一次能「看见」多少字 | 视野的大小 |
| 短期记忆 | 当前这轮对话的内容 | 桌面上摊开的纸 |
| 长期记忆 | 跨会话保留的信息,存在外部 | 后面的档案柜 |
一句话记住:上下文是「视野」,短期记忆是「此刻在想什么」,长期记忆是「存在笔记里的东西」。
三、记忆还能再细分成四类(进阶)
如果再把长期记忆拆开,大致有这么四种:
| 类型 | 存什么 | 例子 |
|---|---|---|
| 工作记忆 | 当前任务状态 | 这次任务做到第几步了 |
| 情景记忆 | 过往的交互经历 | 上次你说过喜欢简洁回答 |
| 语义记忆 | 概念与事实知识 | 公司产品的功能清单 |
| 过程记忆 | 成功执行过的路径 | 上次修复这类 bug 的步骤 |

四、为什么不能「全都塞进去」
我最早的方案特别朴素:把所有历史对话都拼进提示词。结果撞了三面墙:
- 贵:每轮都要重传一遍,token 哗哗地烧。
- 慢:上下文越长,响应越慢。
- 乱:无关信息太多,模型反而抓不住重点,甚至被带偏。
所以记忆的核心不是「记得多」,而是在对的时候,想起对的那一点。
五、RAG:给模型配一场「开卷考试」
RAG 治的是另一个老毛病:知识过期。模型的知识停在训练那一天,之后发生的事它一无所知。
一个特别好的类比是:模型像一个知识渊博、但记忆停在某天的人。RAG(检索增强生成)就是允许他在回答前,先翻一下手边的资料。
1. 把资料切小块,转成向量,存进向量库
2. 用户提问时,把问题也转成向量,去库里找最相近的几块
3. 把找到的内容 + 问题,一起交给模型
4. 模型基于这些内容回答(还能附上出处)它最妙的地方在于:模型的知识可以「更新」,我只要换掉库里的资料,不用重新训练。
六、RAG 也不是万能:几个进阶点
- 切块策略:切太碎会断章取义,太大又浪费上下文,按语义切通常更稳。
- 重排(rerank):先粗召回一批,再用更精细的模型重排,效果会好很多。
- 混合检索:向量(语义)+ 关键词(精确)混着来,兼顾「意思相近」和「字面精确」。
- Agentic RAG:让 Agent 自己决定「要不要检索、检索几次、换什么关键词」,而不是每次机械地检索一遍。
七、一个生产级的记忆流水线:五个动作
很多团队会把记忆拆成这条流水线:抽取 → 整合 → 存储 → 检索 → 遗忘。
| 动作 | 干什么 |
|---|---|
| 抽取 | 从对话里挑出值得记的(偏好、结论、事实) |
| 整合 | 和已有记忆合并去重,处理矛盾 |
| 存储 | 转成向量 + 元数据,存起来 |
| 检索 | 用到时按语义 + 过滤条件取回 |
| 遗忘 | 过期或无关的定期清掉(这条最容易被忘,也最容易出事) |
最后那个「遗忘」,我要单独提一句。一个只记得加、从不删的 Agent,早晚会被自己过去的臆话淹没。
八、三层记忆架构(工程视角)
如果把记忆按覆盖面分,大概长这样:
| 层级 | 名字 | 覆盖范围 | 存哪里 |
|---|---|---|---|
| L1 | 工作记忆 | 当前会话 | 直接放进上下文 |
| L2 | 情景记忆 | 跨会话的个人历史 | 外部存储(键值 / 文档库) |
| L3 | 语义记忆 | 组织知识库 | 向量库 + RAG |
大部分翻车案例都长一个样:只做了 L1,另两层要么没做,要么做了没接好。
九、我踩过的坑
- 切块切太碎:一句话被切成三块,检索到一半,回答自然残缺。
- 只召回不重排:找回来的前几条质量很差,加了重排才好转。
- 什么都想记:不是所有对话都值得长期记忆。我现在只保留「结论」和「偏好」,而不是原封不动的聊天记录。
- 忘了「遗忘」:过期的信息一直留在库里,会持续污染后面的回答。
十、一句话总结
记忆不是为了装下一切,而是为了在该想起来的时候,刚好想得起来。
下一篇是这个小系列的最后一篇:规划和反思,也就是 Agent 的「主见」怎么养成。
参考资料
- Microsoft Learn:Build agent memory with Azure Managed Redis — https://learn.microsoft.com/en-us/azure/redis/tutorial-agent-memory
- LLM Agent 设计:记忆模块(SegmentFault) — https://segmentfault.com/a/1190000047331927
- Agentic AI and RAG Guide(Programming Club IITK) — https://pclub.in/roadmap/2025/11/01/agentic-ai-and-rag-guide/
分享
如果这篇文章对你有帮助,欢迎分享给更多人!
Agent 教学笔记(三):记忆与 RAG,治好 Agent 的「失忆症」
http://www.zhima778.cloud/posts/agent-notes-03-memory/ 部分信息可能已经过时
相关文章 智能推荐
1
Agent 教学笔记(二):工具调用,给模型装上「手脚」的说明书
技术分享 从协议层讲清工具调用:模型只负责「开口申请」,程序才负责执行。附工具描述、参数设计与错误处理的实战心法。
2
Agent 教学笔记(四):规划与反思,让 Agent 先想清楚再动手
技术分享 ReAct、Plan-and-Execute、Reflexion、Tree of Thoughts:用对照表讲清几种规划范式怎么选,以及我理解的三个取舍维度。
3
Agent 教学笔记(一):从「会聊天」到「会做事」
技术分享 一份写给新手的 Agent 教学笔记:用一个公式讲清它是什么,用对照表拆开四大件,再聊聊五个智能层级和我踩过的认知坑。





