AI Agent 的记忆是怎么实现的?短期与长期记忆
AI Agent 的记忆,本质是把对话和知识分两层存放:当前对话临时塞进”上下文窗口”(短期记忆),需要长期记住的内容写进”向量库”按需检索回来(长期记忆)。 大模型本身没有记忆,每次调用都是”失忆从头来”,所谓的记忆全靠 Agent 工程在模型外面搭出来。这篇讲清这两层记忆怎么存、怎么取、为什么会忘,以及它和 RAG 到底什么关系。
为什么 AI Agent 需要记忆
大模型是无状态的。你这一轮发的请求,它处理完就忘,下一轮全靠你把历史再发一遍。没有记忆机制,Agent 会有两个硬伤:
- 记不住刚说过的话:聊到第十轮就忘了你第一轮提的需求,反复问同样的问题。
- 记不住跨会话的事实:今天告诉它”我们公司用飞书”,明天开新对话它又不知道了。
数字员工要”像个真员工”,至少得做到会话内连贯(短期)和跨会话沉淀(长期)。记忆系统就是为了补上模型天生的这两个缺口。
短期记忆:上下文窗口
短期记忆就是把当前对话的历史,原文塞进模型每次调用的输入里。 这块装东西的地方叫上下文窗口(Context Window),有容量上限,按 token 计。
它的工作方式很朴素:
- 你发一条消息,Agent 把系统提示 + 历史对话 + 你的新消息拼成一大段,一起发给模型。
- 模型基于这整段生成回复。
- 回复又被追加进历史,等下一轮继续拼。
所以”记住上文”不是模型真的记得,而是 Agent 每轮都把上文重新喂了一遍。想深入理解这块怎么拼、怎么省 token,可以看 上下文窗口是什么。
短期记忆的特点很鲜明:
| 维度 | 表现 |
|---|---|
| 速度 | 最快,无需额外检索,原文直接在输入里 |
| 容量 | 有限,受上下文窗口 token 上限约束 |
| 保留 | 临时,会话一长就被挤掉,换会话就清零 |
长期记忆:向量库检索
当对话超出窗口容量,或者你想让 Agent 跨会话记住事实,就需要长期记忆。长期记忆的主流做法是把内容向量化后存进向量库,用时按语义相似度检索回来,再拼进上下文窗口。
整个链路分写入和召回两步。
记忆写入
把要长期保存的内容(用户偏好、关键结论、知识片段)做三件事:
- 切分:长内容拆成小段(chunk)。
- 向量化:每段过一遍 Embedding 模型,变成一串数字(向量),代表它的语义。
- 入库:向量连同原文存进向量数据库。
写入时机有讲究:可以每轮自动写,也可以让模型自己判断”这条值得记吗”再写,避免把垃圾信息也存进去。
记忆召回
下次对话时,Agent 不会把整个库都塞进去(也塞不下),而是:
- 把你的新问题也向量化。
- 在向量库里找语义最接近的几段(不是关键词匹配,是意思相近)。
- 把检索到的几段拼回上下文窗口,连同问题一起发给模型。
这样模型就”想起来”了相关的事——本质是临时把相关记忆调回短期记忆里用。长期记忆的容量几乎无限,但每次只召回最相关的一小撮。
为什么 AI Agent 会”忘事”
理解了上面两层,“失忆”的原因就清楚了。常见有三种:
- 被窗口挤掉了:短期记忆满了,旧对话被截断。表现为”聊久了忘了开头”。这是窗口容量限制,不是 bug。
- 根本没写进长期记忆:你以为它记住了,其实只在短期记忆里待过,会话一关就没了。跨会话”失忆”基本都是这个原因。
- 写进去了但没召回:长期记忆里有,但这次检索没把它捞出来——可能是问法和存的内容语义对不上,或召回数量设太少。
对应的排查思路也简单:聊久了忘 → 看是不是超窗口;换会话忘 → 看有没有持久化写入;明明存了却答不出 → 看检索召回质量。
AI Agent 记忆和 RAG 是什么关系
很多人分不清,其实长期记忆的实现技术,和 RAG 几乎是同一套:都是”向量化 → 存库 → 检索 → 拼进上下文”。差别在目的和数据来源:
| RAG | Agent 长期记忆 | |
|---|---|---|
| 数据来源 | 外部知识库、文档 | 对话中产生的事实、用户偏好 |
| 主要目的 | 让模型答得准(基于资料) | 让 Agent 记得你(个性化、连贯) |
| 数据是否变 | 相对静态的知识 | 随交互不断新增 |
可以这么理解:RAG 是”查资料”,记忆是”记住和你打交道的过程”,但底层都靠向量检索。想把 RAG 这套机制吃透,看 RAG 是什么,对理解 Agent 记忆是直接复用的。
搭建记忆系统能落地什么
把记忆做好,数字员工能解锁这些场景:
- 客服/助手记住用户:记得对方的历史问题、偏好、上次聊到哪。
- 个人助理沉淀习惯:你说过一次”报告别用表格”,以后都照办。
- 长流程任务不丢线索:多步骤任务里,记住前面几步的中间结论。
- 团队知识复用:把项目结论写进长期记忆,全员问答都能调用。
主流 Agent 框架(如 Dify、Coze 等)大多内置了对话记忆和知识库检索,不用从零造轮子。具体配置和参数以各家官方文档为准。
常见问题
AI Agent 的记忆是存在大模型里吗? 不是。大模型本身无状态、不存任何东西。记忆全部存在模型外面——短期在上下文窗口(每轮重新喂),长期在向量库(用时检索回来)。
短期记忆和长期记忆有什么区别? 短期记忆是当前对话原文,直接在上下文窗口里,快但容量有限、会话级;长期记忆是向量化存库、按语义检索回来,容量近乎无限、可跨会话,但需要写入和召回两步。
为什么我的 Agent 总是忘记之前说的话? 三种可能:对话太长把旧内容挤出了上下文窗口;内容根本没写进长期记忆(只待过短期);写进去了但这次检索没召回到。按”聊久了忘 / 换会话忘 / 存了答不出”分别排查。
Agent 记忆和 RAG 是一回事吗? 底层技术几乎一样(都是向量检索),但目的不同:RAG 让模型基于外部资料答得准,记忆让 Agent 记住你这个用户的事实和偏好。一句话:RAG 是查资料,记忆是记过程。
记忆是不是存得越多越好? 不是。存太多噪音会拉低召回质量,让检索把不相关的内容捞回来。更好的做法是让 Agent 判断”哪些值得记”,只持久化高价值信息。
👉 看看 AI 数字员工落地指南,或了解 数字员工搭建实战课。需要为企业落地方案,欢迎找我们聊 企业服务。