晨光里的AI

固定版本 · 查看当前页面

RAG 的前世今生:AI Agent 的记忆真相

晨旭 · 内容日期 2025-11-11。此页保留当时的文本、性质和段落,不用于判断现在是否仍然有效。

版本 35b79a531b458eacd4ea95bf39277c9630bf35f1d4b558cae44a0b95f308b7b3 · 读取 JSON

p1

最近看了一些关于 RAG 的论文,以及一篇讲「从 RAG 到 Agentic RAG 再到 Agent Memory 的演进历程」的博客。

p2

一直都有听说 RAG 已死,于是有了 Agentic RAG。刚搞明白 Agentic RAG,又出现了 Agent Memory。于是我就有了以下问题:

p3

- RAG 是不是已经过时了?是不是已死? - Agentic RAG 和 Agent Memory 到底有什么区别? - Agent Memory 究竟是啥?它和 RAG 是替代关系吗?

p4

这篇文章就是我在解决以上疑惑过程中所整理出来的。

p5

一、RAG → Agentic RAG → Agent Memory

p6

RAG 1.0:Naïve RAG

p7

首先,RAG 并没有死,它是这一切的基石。先回忆一下朴素 RAG 是什么:

p8

LLM 已有知识是旧的(训练完就定了),而且它不知道具体某公司的内部文档。RAG 就相当于给它一本参考书,通过检索外部知识来增强 LLM 的回答。

p9

工作流是这样的:线下先把文档资料存入知识库(比如向量数据库);线上用户提问后,系统必须先去知识库里搜相关资料(单步检索),把搜到的资料和用户问题一起扔给 LLM,LLM 参考着回答。

p10

这就好比开卷考试,LLM 每回答一个问题,就必须翻一次书。

p11

局限性:这种 RAG 是静态、单步的。它有些傻,不管问题复不复杂,都只会翻一次书,而且是只读的,无法在对话中学习新东西。

p12

RAG 2.0:Agentic RAG

p13

Agentic RAG 是 RAG 的第一次重大升级,核心是引入了自治智能体。LLM 不再是被动的,它变成了一个会主动思考、会规划、会用工具的研究助理。

p14

以「帮我查查苹果公司最近的财报,并总结下市场反应」为例,工作流变成了:

p15

1. Agent 开始思考和规划:这个任务得分两步,先搜财报,再搜市场反应。 2. Agent 调用工具执行「搜索苹果财报」。 3. Agent 反思:财报拿到了,现在执行第二步。 4. Agent 再次调用工具执行「搜索市场对苹果财报的反应」。 5. 汇总所有多轮检索到的信息,生成最终答案。

p16

和 RAG 1.0 的核心区别在于:RAG 1.0 是「必须搜,搜一次」,Agentic RAG 是「Agent 自己决定搜不搜、搜几次、用什么工具搜」,检索变成了动态的、多步的。

p17

但请注意:Agentic RAG 核心解决的是「读」的问题。它让读变得更智能、更动态了,可本质上还是只读的(知识库仍然是离线预加载的)。它在对话中了解到的新信息,对话结束了就忘了。

p18

RAG 3.0?:Agent Memory

p19

如果说 Agentic RAG 是一个出色的研究助理(会查资料),那么 Agent Memory 就是一个能记住你、持续学习的私人管家。

p20

核心定义:Agent Memory 是指智能体具备调用工具读写外部知识库的能力,让模型能在对话中记住新的信息。

p21

和 Agentic RAG 最大的区别就一个字:写。Agent Memory 不仅有搜索工具(读),它还有了存储、写入、更新工具。

p22

举个例子:

p23

用户:我下周要去上海出差,帮我规划下。 Agent:(调用工具规划)好的,已规划。顺便问下,你有什么饮食偏好吗? 用户:哦对了,我海鲜过敏,千万别安排海鲜。 Agent:(思考「这是个重要信息」→ 调用 WriteTool.store("用户偏好:海鲜过敏"))

p24

下次对话时:

p25

用户:帮我推荐几个北京的餐厅。 Agent:(思考「先查查用户有啥偏好」→ 调用 SearchTool.search("用户偏好") → 检索到「海鲜过敏」) Agent:好的,已为您筛选了北京的几家餐厅,并自动排除了所有海鲜餐厅。

p26

通过动态的读写外部记忆,实现持续学习和个性化,让 LLM 成为有长期记忆的智能体,能跨会话累积经验。

p27

二、举例:一个智能客服的进化史

p28

阶段一:Naïve RAG(基础问答机器人)

p29

这个阶段的客服机器人就像一个只会照着说明书念的员工。知识库是静态的(产品手册、退货政策、发货时间表),并且它总是先查资料再回答。

p30

用户问「你好,我想退货」,系统会强制检索,命中「退货政策」文档,把检索到的片段和问题一起交给 LLM 生成答案。

p31

局限性有两个:

p32

- 答非所问:如果用户问「我的订单到哪了?」,LLM 去静态知识库里检索,找不到实时物流信息,可能会回复一个关于标准发货时间的通用答案,而不是用户想要的实时状态。 - 无法处理多任务:用户问「我的 A 订单什么状态?顺便帮我看看 B 产品有没有货?」,它会很困惑,可能只能回答第一个问题,或者两个都答不好。

p33

阶段二:Agentic RAG(多功能工具助理)

p34

这个阶段的客服机器人升级成了一个聪明的助理。它拥有多种工具,会思考该用哪个工具、甚至是否需要用工具。但它的知识库本身仍然是只读的。

p35

可用的工具包括 KnowledgeBaseSearch(搜索静态政策和说明书)、OrderTrackingAPI(实时查询订单物流)、InventoryCheckAPI(实时查询库存)。

p36

面对「我的 A 订单到哪了?顺便帮我看看 B 产品有没有货?」,它会先思考出这是两个问题,分别调用两个 API,再整合成一个完整答案。

p37

局限性:没有记忆。如果用户接着说「以后请叫我晨光,并且我只在工作日收货」,它会回答「好的」,但下次对话时会忘得一干二净,因为它没有写入新信息的能力。它只是一个出色的信息查询员。

p38

阶段三:Agent Memory(专属私人管家)

p39

这是目前最先进的阶段。客服机器人不仅拥有 Agentic RAG 的所有能力,还额外获得了写入工具,开始学习和记忆用户的偏好和历史。

p40

工具列表在只读工具之外,多了 MemoryTools.Search(user_id) 和 MemoryTools.Write(user_id, info)。

p41

场景 A:用户提出偏好

p42

用户:以后请叫我「晨光」,并且我只在工作日收货。 Agent:(思考「用户提出了两个关键偏好,需要记下来」) → MemoryTools.Write(user_id="123", info="Nickname: 晨光") → MemoryTools.Write(user_id="123", info="DeliveryPreference: workdays_only") Agent:好的,晨光。我记住了,以后会尽量安排在工作日为您配送。

p43

场景 B:几天后的下一次对话

p44

用户:你好,帮我查下我上次买的那个耳机型号。 Agent:(思考「用户开始了新对话,我应该先回忆一下关于她的信息」) → MemoryTools.Search(user_id="123") 返回昵称和配送偏好 → OrderTrackingAPI(user_id="123", history_limit=1, type="headphones") Agent:您好,晨光!我查到您上次购买的耳机型号是 M-Tech 降噪耳机 Pro。

p45

三、灵魂拷问:三者到底什么关系?

p46

RAG 死了吗? 没有。RAG 是地基。Agentic RAG 把 RAG 变成了它工具箱里一个更智能的工具;Agent Memory 则在 Agentic RAG 的基础上,又增加了一个写入工具。

p47

Agentic RAG vs Agent Memory?

p48

- Agentic RAG = 动态只读,重点在 Agent 如何更聪明地检索信息。 - Agent Memory = 动态读 + 动态写,重点在 Agent 如何管理信息。

p49

结论是:Agent Memory 吸收 RAG 能力,把它当作记忆读写的一部分工具来用,但不会废弃 RAG。尤其在涉及海量文档检索或信息密度很高的企业场景下,RAG 的向量检索仍然是不可替代的底层能力。

p50

四、Agent Memory,没那么简单

p51

那 Agent Memory 不就是加个写入吗?其实,真正的挑战不在于写入这个动作本身,而在于写入之后带来的一整套复杂的记忆管理难题。

p52

1、决定记什么——写入策略

p53

「你好」「哈哈」「嗯」这种无关紧要的词语不能全记下来,如果无序地记录一切,会导致记忆冗余和上下文污染。

p54

必须有智能的触发式写入:Agent 要学会判断什么是重要事实(如「海鲜过敏」「称呼:晨光」),或者采用摘要写入机制,只存储对话摘要而非全部记录。

p55

2、决定怎么读——读取策略

p56

用户的记忆库越来越大,当用户说「老样子」时,Agent 如何在成千上万条记忆中,精准找出「老样子」指的是「拿铁少冰」还是「周五下午开会」?

p57

这需要高效的检索,比如结合向量语义检索、重要性评分、新近度评分等。斯坦福的 Generative Agents 研究提出了「新近度 + 重要性 + 相关性」的三重检索评分机制。

p58

3、决定何时忘——遗忘策略

p59

一个只记不忘的 Agent 是灾难性的。如果用户搬家了,Agent 却还记着旧地址怎么办?如果信息冲突了怎么办?

p60

常见的遗忘机制包括:

p61

- 时间衰减:临时信息(如验证码)到期自动删除。 - 使用频率:长期不用的记忆被淘汰,类似 LRU 策略。 - 重要度:模型评估为不重要的信息被丢弃。 - 人工干预:允许用户一键忘记,满足 GDPR 等隐私法规。

p62

4、隐私与安全——记忆的保险箱

p63

记住「晨光」是小事,如果 Agent 记住了用户的身份证号、银行卡、家庭住址呢?这带来了巨大的隐私合规风险和记忆错乱的可能,需要严格的权限控制、数据加密以及用户授权机制。

p64

从 Agentic RAG 到 Agent Memory,最大的挑战,是从一个无状态的查询工具,进化为一个有状态的持久化系统。这个系统必须具备一套完整的「写—读—忘」循环策略,以确保记忆是高效、准确、安全且有用的。

p65

总结:RAG 在进化,而非死亡

p66

- RAG 1.0(Naïve RAG):静态的开卷考试,解决了 LLM 的知识局限性(只读)。 - RAG 2.0(Agentic RAG):聪明的研究助理,解决了 RAG 1.0 检索过程太死板的问题(智能读)。 - RAG 3.0(Agent Memory):会学习的私人管家,解决了 Agent 无法记住新信息、无法实现个性化的问题(智能读 + 智能写)。

p67

所以,RAG 远没有「已死」,它们三者将共同存在,构成更强大的「知识 + 记忆 + 推理」一体化代理,支撑着 Agent 走得更远。

该版本的判断

RAG 没有死,它是这一切的地基。Agentic RAG 把 RAG 变成了工具箱里一个更智能的工具,Agent Memory 又在它之上增加了写入能力,三者是叠加而非替代。

judgment · 2025-11-11 · 信心 high

Agentic RAG 和 Agent Memory 最大的区别就一个字——写。前者是动态只读,重点在更聪明地检索;后者是动态读加动态写,重点在管理信息。

judgment · 2025-11-11 · 信心 high

Agent Memory 真正的挑战不在写入这个动作本身,而在写入之后的一整套记忆管理难题:写入策略、读取策略、遗忘策略、隐私安全。

judgment · 2025-11-11 · 信心 high

一个只记不忘的 Agent 是灾难性的。用户搬家了却还记着旧地址、信息互相冲突,都需要时间衰减、使用频率、重要度评估和人工干预这些遗忘机制来兜底。

judgment · 2025-11-11

在海量文档检索或信息密度很高的企业场景下,RAG 的向量检索仍然是不可替代的底层能力,不会被记忆机制废弃。

judgment · 2025-11-11