Agent的“老年痴呆”,靠向量数据库是治不好的
最近给学校一个项目做智能助手,上线前测试,被它气笑了:
聊到第四十轮,它把第一轮定好的需求忘得干干净净;第二天再开会话,它像见了陌生人;上周刚被纠正过的错误,这周原样再犯一遍,理直气壮。
这不是个例。任何把 Agent 往真实场景里搬过的人,都撞过这堵墙——我管它叫 Agent 的”老年痴呆”:知识它样样都会,事它一件都记不住。
于是大家自然地想到一副药方:向量数据库 + RAG。把所有对话、所有文档统统塞进向量库,用的时候检索出来喂给模型。听起来很对:记不住?给你装个外接硬盘。
我按这个方子抓过药,也带着学生抓过。结论先放在这儿:这副药治得好”查不到资料”,治不好”记不住事”。 下面慢慢说为什么。
先看这副药是怎么起效的

RAG 的原理不复杂:用户提问 → 把问题变成向量 → 去向量库里捞最相似的 Top-K 片段 → 塞进上下文 → 模型照着回答。
看明白没有?它本质上是一间带搜索功能的资料室,不是记忆。 它解决的问题是”外部知识太大,窗口装不下”——模型背不下全公司的文档,用的时候现查。这一仗,RAG 打得非常漂亮。
但”查资料”和”记得住事”,是两种完全不同的病。
病症一:检索是被动的,而记忆要主动
RAG 起作用有个前提:你得问对问题。
检索靠的是当前问题和库里内容的相似度。可”该想起什么”这件事,往往藏在当前问题之外——用户问”这个方案怎么改”,真正该想起的是”上个月我们刚否过一个类似的”。但”方案怎么改”和”上个月否掉的会议记录”在向量空间里八竿子打不着,捞不上来。
人的记忆是联想式激活的:看到咖啡杯,想起那次会议,想起会上定的规矩。Agent 的”回忆”只能被当前问题触发,而当前问题恰恰不知道自己该想起什么。
遗忘最要命的悖论就在这:你不知道自己该想起什么。
病症二:碎片化记忆,有片段没前因后果

就算检索成功,回来的也是几段”相似文本”。可记忆的价值往往不在片段本身,在结构里:这件事发生在什么之前、由什么引起、后来又变了没有。
拿碎片就像抓着一把撕碎的照片——你能认出照片上的脸,却拼不出那一年的故事。
更要命的是时间感。向量相似度不编码时间,“上个月的决策”和”上周推翻它的会议纪要”在库里平起平坐,检索出来模型一脸茫然:到底听谁的?Agent 做决策要的是因果和时间线,这恰恰是向量空间里不存在的两样东西。
还有一个更隐蔽的变种:时空重叠。用户在不同时间、不同地点重复做同一件事——比如去年在老东家的食堂吃午饭,今年在新公司的食堂吃午饭——这两批记录在向量库里长得极其相似,一检索就一起端上来。模型收到两份”各自都真、合起来矛盾”的材料,只能硬着头皮融合,于是”我今天吃的午饭”可能变成一个根本不存在于今天的食堂。幻觉就是这么长出来的:不是模型撒谎,是喂给它的料里,分不清哪个是哪个时候的。
心理学把记忆分成四层:工作记忆、情景记忆、语义记忆、程序记忆。对着这张图看,RAG 的覆盖范围一目了然——它勉强够得着语义记忆的一角,而 Agent 最缺的全是别的层。
病症三:没有遗忘,也没有沉淀

向量数据库一视同仁:一次关键的架构决策,和一句”在吗?好的收到”,躺在同一个空间里,地位完全平等。存得越多,噪音越响,检索质量越往下掉——这副药吃着吃着,剂量越大,副作用越大。
人脑是怎么干的?每晚睡觉,不是休息,是”沉淀”:把白天的记忆从海马体往大脑皮层搬,压缩、建立关联、把不重要的忘掉。睡眠是记忆的消化系统。
RAG 的世界里没有睡眠。那个库只会一直涨,永远涨。不遗忘的系统,最后都会被自己淹没。
病症四:塞得越多,越糊涂
还有最后一道坎:检索回来的片段,终究要塞进上下文窗口。
塞十个片段,一半相关一半擦边,模型的注意力就被稀释了——该看的没看仔细,不该看的占了地方。“迷失在中间”是实打实的现象:上下文越长、料越多,模型抓重点的能力反而越差。
老年痴呆没治好,又添一个新病:糊涂。
真正的记忆系统长什么样

先说清楚:我不是要砸 RAG 的场子。查外部知识,RAG 至今仍是最优解,没有之一。 但 Agent 的记忆,需要另起一摊,照人脑的样子来:
第一,分层。 工作记忆靠滚动摘要维护,情景记忆存原件事,语义记忆存提炼出的事实,程序记忆存做事的规矩。不同的记忆,不同的容器。
第二,沉淀。 定期”睡觉”:把最近的事件翻出来反思,压缩成几条经验、几条规则。原始记录归档,经验留在手边。
第三,遗忘。 给记忆加衰减和权重,不被反复提起的慢慢沉底。忘得掉,才记得住。
第四,结构。 给记忆带上时间、因果、标签。时间线、小图谱,都好过一堆平铺的向量。
这其实就是最近 Agent 圈子里 harness 方向最热的一块——记忆模块、反思机制、给项目放一份长期维护的”记忆文件”。我在《DeepSeek Harness》里聊过,harness 是模型外面那一整套”外挂器官”,而记忆系统,是这套器官里最值钱的一个。
一个能上手的小药方
给同样在折腾的朋友一个我自己用着的轻量方案,三件套:
一个记忆文件,分三格:长期规则(永远生效的)/ 近期事件(最近发生的)/ 当前任务(这轮在干的)。每次开工先把三格喂进去,小而全,不靠检索。
每周一次”睡觉”:跑个脚本或干脆手动,把近期事件过一遍,能提炼成规则的提炼进长期规则,剩下的归档。归档的部分才轮到向量库出场。
检索分两步:先查规则区(小到可以整段塞进窗口),真要细节再去向量库捞归档。向量库从”记忆本体”降级成”档案室”,地位一降,副作用全消。
这套东西我拿自己当小白鼠跑了一段时间,也准备搬进大模型课上给学生当实训项目——它坑不少,时间线怎么存、规则冲突怎么办,踩一遍比讲十节课都管用。
写在最后
向量数据库是图书馆,记忆是人。
家里装了全世界最好的图书馆,不会让你变成学者——除非有个会整理、会消化、会建立关联的人住在里面。Agent 的老年痴呆,病根从来不在”查不到资料”,而在那些资料没有一个主人去消化它们。
RAG 治好你的知识焦虑,记忆系统治好你的遗忘。两副药,各治各的病,别混着吃。
顺带说一句:如果你也在给学校或企业做 Agent 系统,被”记不住”折腾过,欢迎找我聊——从知识库到 Agent 记忆这一路我踩过的坑,比这篇文章长得多。