从模型的"失忆症"说起
前面几篇反复提到一件事:大模型天生没有记忆。 每次调用都是独立的、失忆的——你不把上下文喂给它,它就什么都不知道,包括三秒钟前你俩聊过什么。
你可能会疑惑:那我用 ChatGPT 时,它明明记得我上一句说了什么啊?
秘密是:每次发消息,程序都偷偷把前面的对话一整段重新发给了模型。 模型"记得",是因为你每次都把整本"聊天记录"塞给了它看。它并没有真的记住,只是每次都重读了一遍。
这就带出了记忆系统的两层设计:短期记忆和长期记忆。
短期记忆:把对话历史一直带着
短期记忆就是当前这次任务的上下文——刚才调了什么工具、返回了什么、用户提了什么要求。实现方式很朴素:不断往对话历史里追加,每轮都整个带上。 这正是 ReAct 循环里"把 Observation 塞回历史"在做的事。
但它有个硬天花板:上下文窗口。模型一次能读的文字量是有限的(虽然逐年在变大)。对话或任务一长,历史就会装不下。这时怎么办?有几种常见招数:
- 截断:只保留最近的 N 轮,老的直接丢。简单但会"忘事"。
- 摘要:把前面的长对话让模型压缩成一小段摘要,用摘要替代原文。省空间但会丢细节。
- 外部存储 + 按需检索:把内容存到外面,用到哪段再捞哪段回来。——这就通向了长期记忆和 RAG。
长期记忆:存到外面,用时再查
长期记忆是跨任务、跨天、甚至跨月的知识:你的偏好、历史结论、一整套产品文档、一个知识库。这些东西量太大,根本不可能全塞进上下文。
解决思路很直接,和人用图书馆一样:
平时把知识存进"书库",需要时只借出相关的那几本,而不是把整个图书馆背进脑子。
这个"用时再查、只取相关部分喂给模型"的机制,就是大名鼎鼎的 RAG。
RAG 到底是什么
RAG 全称 Retrieval-Augmented Generation(检索增强生成)。拆开看就三个字:查、加、答。
回答之前,先去资料库检索相关内容,把检索到的塞进上下文,模型再基于这些真实资料生成答案。
举个例子。你问 Agent:"我们公司的报销上限是多少?"
- 没有 RAG:模型不知道你们公司规定,只能瞎猜或说不知道。
- 有 RAG:先拿"报销上限"去公司制度库里检索,捞出"差旅报销单笔上限 2000 元"这段,连同问题一起喂给模型,模型据此回答"单笔上限 2000 元"。
好处很明显:模型能回答它本来不知道的、你私有的、或者最新的知识,而且答案有据可查,大大减少胡编。
RAG 怎么"查得准":向量检索
这里有个关键问题:库里资料那么多,怎么找到"最相关"的那几段?靠关键词匹配太笨——用户问"报销能报多少",制度里写的是"费用上限",字面对不上。
RAG 常用的办法是语义检索(向量检索),直觉上是这样的:
- 把每段资料变成一串能代表其含义的数字(叫"向量",可以理解为"语义坐标")。
- 用户的问题也变成同样的一串数字。
- 找出坐标离得最近的几段资料——含义相近的,坐标就近。
这样"报销能报多少"和"费用上限"虽然字面不同,但意思相近,坐标就接近,照样能被检索到。这些资料通常存在专门的向量数据库里。细节可以很复杂,但抓住直觉就够了:按"意思像不像"来找,而不是按"字一不一样"来找。
2026 年的进化:Agentic RAG(会"边查边想"的 RAG)
传统 RAG 是"一锤子买卖":查一次 → 生成答案,结束。但复杂问题往往一次查不全。于是有了 Agentic RAG——把第 3 篇 ReAct的思路用到检索上:
不再是"查一次就答",而是把检索当成一个可以反复调用的工具。查完发现不够,就换个角度再查;问题太大,就拆成小问题分别查;查到矛盾的,就再交叉验证一下。
打个比方:传统 RAG 像去图书馆借一次书就回家写作业;Agentic RAG 像一边写一边发现缺资料,就再跑一趟图书馆,来回好几趟直到写清楚。
但要注意代价:这种反复检索、反复反思的循环,消耗的算力往往是传统 RAG 的三到十倍。所以它不是万能药——只有当任务确实复杂、值得这个开销时才用。这又一次呼应了专栏反复出现的主题:灵活和成本要权衡。
短期、长期、RAG 的关系
最后把三者串起来,别再混淆:
| 概念 | 管什么 | 怎么实现 | 类比 |
|---|---|---|---|
| 短期记忆 | 当前任务的上下文 | 对话历史一直带着 | 手边的草稿纸 |
| 长期记忆 | 跨任务的持久知识 | 存外部库,用时检索 | 书房里的书柜 |
| RAG | 长期记忆的"检索"环节 | 语义检索 + 塞回上下文 | 去书柜里找对的那本书 |
一句话:RAG 是"长期记忆"的取用方式,而短期记忆管的是"眼前这摊事"。
小结
- 大模型没有记忆,"记得"只是因为每次都把历史重新喂了进去。
- 短期记忆靠带着对话历史,受上下文窗口限制,长了要靠截断/摘要/外部存储。
- 长期记忆存在外部库里,用 RAG(检索增强生成) 按需取用——先查、再塞进上下文、后作答。
- RAG 靠语义检索找"意思相近"的资料,让模型能回答私有或最新的知识。
- Agentic RAG 让检索变成可反复调用的工具,更强但更贵。
到这里,单个 Agent 的五大零件就都讲完了。下一篇我们上一个台阶:一个 Agent 不够用时,怎么让"一群 Agent"协作——以及一个反常识的忠告。