AI代理记忆不是RAG:如何区分记忆、检索、状态和上下文

AI智能体记忆、检索增强生成(RAG)、运行时状态和模型上下文经常被当作可以互换的概念来讨论。但它们并非如此。将它们混为一谈会使智能体系统更难推理、更难调试,也更容易变得过时或不安全。
类别错误:把所有看似持久的东西都当作记忆
向量数据库可以存储对话片段。会话对象可以携带最近的轮次。数据库行可以保存当前工作流状态。摘要器可以压缩先前的工作。检索器可以获取旧证据。所有这些都可以让智能体看起来像是在“记住”,但它们并不具有相同的语义。
这种区分很重要,因为所需的正确性规则不同。当前状态必须是权威且新鲜的。记忆需要写入、修订、遗忘和冲突处理的生命周期规则。检索需要相关性和证据选择质量。上下文需要令牌预算纪律以及对无关或冲突材料的防护。
四层架构:状态、记忆、检索、上下文
| 层级 | 核心问题 | 典型示例 | 主要正确性关注点 |
|---|---|---|---|
| 状态 | 现在什么是真的? | 任务状态、购物车内容、工作流步骤、活动权限、当前游戏状态 | 新鲜度和权威性 |
| 记忆 | 过去哪些内容应该持久保留? | 用户偏好、先前决策、学到的约束、已解决的故障、持久项目事实 | 生命周期、修订、来源、遗忘 |
| 检索 | 现在应该选择哪些信息? | 向量搜索、关键词搜索、图查找、重排序、文档搜索 | 相关性和证据选择 |
| 上下文 | 模型在这次调用中看到什么? | 系统指令、当前请求、检索到的段落、工具结果、摘要 | 每令牌效用、排序、一致性、噪声 |
1. 状态:现在什么是真的
状态属于运行中的系统,而不是模型的回忆。如果订单被取消、部署被暂停、用户失去权限,或任务从“进行中”变为“已批准”,权威值应来自拥有该事实的系统。
一种危险的设计是让旧的对话摘要成为当前状态的替代品。智能体可能准确记得订单昨天是活跃的,但今天仍然是错的。因此,状态需要明确的所有权、相关情况下的版本控制或时间戳,以及在采取重大行动前重新读取真相来源的路径。
2. 记忆:过去哪些内容应该持久保留
记忆不仅仅是“我们能存储的一切”。有用的记忆层决定什么值得持久保留、以什么形式、保留多久、具有什么来源,以及在什么条件下必须修订或删除。
最近的智能体记忆研究越来越认为原始对话记录存储是不够的。微软的PlugMem工作专注于将原始交互历史转化为结构化、可复用的知识。Memora将丰富的存储内容与更轻量的抽象和检索线索分离,使长时程系统不必在细节和可扩展访问之间做出选择。
3. 检索:现在应该选择什么
检索是一种选择机制。它可以搜索外部文档、内部知识库、存储的记忆、日志、图、数据库或混合来源。RAG通常位于此处:检索证据,将选定的材料放入模型的工作输入中,然后生成答案。
仅仅因为检索语料库包含过去的交互,该机制并不会变成记忆。同一个检索器可以搜索智能体从未经历过的策略文档、来自另一个系统的产品数据,或用户的先前决策。检索描述的是信息如何被选择;记忆描述的是为什么某些信息会跨时间持久保留,以及这种持久性如何被管理。
4. 上下文:模型当前实际可以使用的内容
上下文是面向模型的层。Anthropic 将上下文工程描述为决定何种上下文配置最有可能产生期望行为,其中上下文是模型在生成期间可用的 token。OpenAI 的会话记忆指南同样将裁剪和压缩视为面向长时间运行的智能体交互的上下文管理技术。
这就是为什么一个系统可以拥有出色的记忆却仍然失败。相关记忆可能存在但未被检索到。它可能被检索到,但在上下文中被放置在更强的冲突文本旁边。它可能被压缩,直到决定性细节消失。或者模型可能接收到过多材料,以至于有用证据被噪声稀释。
各层如何交互
一种可能的生产流程
为什么 RAG 不是记忆
最简单的测试是:RAG 系统可以检索智能体从未见过的信息。仅这一点就表明,检索和记忆是不同的抽象。
RAG 回答的是:“我应该获取哪些证据?”记忆系统还必须额外回答诸如:“这个事件是否应该成为持久知识?”、“这个新信息是否取代了较旧的记忆?”、“这个记忆是否仍然可信?”、“谁被允许读取它?”以及“它应该在什么时候被遗忘?”
四层分离测试
当某个功能被称为“记忆”时,请问以下四个问题。答案通常会揭示实际涉及的是哪一层。
| 问题 | 如果答案是肯定的,你主要处理的是 |
|---|---|
| 这是否代表任务或环境的当前权威状况? | 状态 |
| 这些信息是否必须跨越当前运行而保留,因为它捕捉了有用的先前经验、偏好或决策? | 记忆 |
| 主要问题是否是决定哪些已存储或外部信息与当前请求相关? | 检索 |
| 主要问题是否是决定将哪些信息放入当前模型调用中? | 上下文 |
单个组件可以参与不止一层。数据库可以同时存储状态和记忆。向量索引可以同时检索外部知识和记忆。这种分离是语义上的,不一定是物理上的。
层被混同导致的失败模式
| 失败模式 | 发生了什么 | 结果 |
|---|---|---|
| 陈旧状态伪装成记忆 | 信任旧摘要,而不是重新读取权威系统 | 智能体基于曾经为真的事实行动 |
| 记忆被当作不可变事实 | 先前的偏好或决策被存储,却没有修订规则 | 已被取代的信息继续影响未来答案 |
| 检索命中被当作真相 | 高相似度被误认为事实权威 | 看起来相关但不正确的证据占据主导 |
| 上下文过载 | 注入过多检索段落、记忆、日志和指令 | 决定性证据被稀释或被矛盾信息抵消 |
| 不受控的记忆写入 | 模型生成的解释被自动存储为持久记忆 | 错误变得持久并自我强化 |
| 没有来源边界 | 系统无法区分用户陈述、来源事实、模型推断和生成摘要 | 后续检索丢失信息的证据地位 |
什么应该被记住、检索、重新计算或重新读取?
| 信息类型 | 首选处理方式 | 原因 |
|---|---|---|
| 当前权限、订单状态、库存、工作流状态 | 重新读取权威状态 | 新鲜度比回忆更重要 |
| 用户明确提供的稳定用户偏好 | 记忆,并具备编辑/删除语义 | 跨会话有用,且归用户所有 |
| 长期项目期间做出的决策 | 带时间戳、来源和取代规则的记忆 | 历史很重要,但决策可能改变 |
| 产品规格或公共政策文档 | 从来源检索 | 外部知识应与其证据保持关联 |
| 可以低成本重新计算的派生指标 | 重新计算 | 避免持久化陈旧的派生值 |
| 冗长的原始工具输出 | 外部存储;需要时检索或摘要 | 不要永久占用上下文 |
| 模型假设或不确定解释 | 不要自动提升为持久记忆 | 推断不等同于事实 |
记忆系统需要写入策略,而不仅仅是检索策略
RAG 架构的讨论通常聚焦于检索质量:分块、嵌入、重排序、混合搜索和接地。长期记忆引入了问题的另一面:首先,什么被允许进入持久化存储?
对于持久的智能体记忆,实用的写入策略应当对候选记忆进行分类、保留来源、检测与现有条目的冲突、区分观察与推断、定义敏感性和访问范围,并决定该信息应当过期、修订还是需要用户确认。
来源是记忆与可靠证据之间的桥梁
一条记忆条目理想情况下应保留足够的来源信息,以回答:这来自哪里、何时被观察到、是谁或什么断言了它、它是用户提供的还是模型推断的、有什么来源支持它,以及是否有任何东西取代了它?
没有来源,压缩后的记忆可能变得比创造它的证据更具权威性。这在长期运行的智能体中尤其危险,因为摘要和抽象会被反复复用。系统可能保留了结论,却丢失了结论成立的条件。
更多记忆并不意味着更多上下文
一个长期存在的智能体可能积累数 GB 的状态、历史、文档和学习到的信息。模型不需要——通常也不应该——在每一步都接收全部内容。检索、摘要、压缩和结构化记忆的目的是将庞大的持久信息空间转换为小而相关的工作上下文。
这也是为什么更大的上下文窗口并不能消除记忆架构。容量减轻了一些压力,但它并不能解决新鲜度、权威性、冲突证据、隐私范围、写入质量、修订或决定什么值得关注的问题。
生产设计检查清单
- 定义哪些系统拥有权威的运行时状态。
- 定义哪些信息有资格成为持久记忆。
- 保持用户提供的事实、外部证据和模型推断可区分。
- 为重要记忆附加时间戳、来源、范围和修订语义。
- 将检索相关性与事实权威性视为不同的事物。
- 有意识地构建上下文,而不是注入所有检索到的材料。
- 重新读取易变的事实,而不是信任旧记忆。
- 当陈旧代价高昂时,重新计算廉价的派生值。
- 像测试记忆读取一样仔细地测试记忆写入。
- 分别衡量失败:状态错误、记忆错误、检索错误、上下文构建错误、推理错误和行动错误。
什么会改变这个答案?
随着智能体平台的发展,这些层之间的边界可能会移动。供应商可能提供托管记忆服务,在内部执行存储、修订、检索、摘要和上下文构建。这可以合并实现组件,但并不能消除架构问题。你仍然需要知道返回的条目是当前状态、持久记忆、检索到的证据,还是仅仅放入上下文的文本。
对于没有跨会话连续性的系统、每个任务都从干净不可变语料库开始的系统,或者所有相关状态都能安全地放入一次调用的严格受限工作流,建议也会改变。在这些情况下,专用的长期记忆层可能增加复杂性而没有足够价值。
局限性
智能体系统中的术语仍在快速演变。一些框架将对话历史称为“记忆”,另一些使用“会话”、“检查点”、“存储”、“上下文”或“状态”。研究系统也在不同层面定义记忆,从持久查找表到学习到的内部适应。本文中的模型有意分离操作职责,而不是试图强加一套通用词汇。
结论
有用的问题不是“这个智能体有记忆吗?”而是:什么是状态,从经验中持久化了什么,相关信息如何被检索,以及最终什么作为上下文到达模型?
一旦这些职责被分离,设计选择就变得更容易测试。过时的事实可以追溯到状态所有权。糟糕的回忆可以追溯到记忆生命周期或检索。过载的提示可以追溯到上下文构建。持续性的幻觉可以追溯到写入策略和来源。RAG 仍然是一个重要的工具,但它只是可靠的长时运行智能体架构的一部分。
常见问题
AI 智能体记忆、RAG、状态与上下文
RAG 和 AI 智能体记忆是一回事吗?
向量数据库是智能体记忆吗?
更大的上下文窗口能消除对记忆的需求吗?
当前应用状态应该作为记忆存储吗?
术语表
关键术语
- 状态
- 任务、应用、用户、工作流或环境的当前权威状况。
- 记忆
- 来自先前经验或交互的信息,因其以后可能有用而持续存在,并受生命周期规则约束。
- 检索
- 用于从记忆、外部知识、数据库、图或其他存储中选择可能相关信息的机制。
- 上下文
- 在特定推理或生成步骤中,语言模型实际可用的信息。
- RAG
- 检索增强生成:一种模式,其中检索外部或存储的信息并提供给生成模型,以改进当前输出。
- 来源
- 描述信息来自何处、何时被观察到、由谁或什么断言,以及如何被转换的元数据。
主要来源与延伸阅读
OpenAI — 上下文工程:使用会话进行短期记忆管理OpenAI 关于为长时运行智能体上下文进行裁剪和压缩的指导。
OpenAI — 沙盒智能体文档展示了持久记忆作为一种能力,具有渐进式披露和读/写行为。
Anthropic — 面向 AI 智能体的有效上下文工程关于为可靠智能体行为策划有限模型上下文的工程指导。
Microsoft Research — Memora关于在长时程智能体记忆中平衡抽象与具体性的研究。
Microsoft Research — PlugMem关于将原始智能体交互历史转换为可重用结构化知识的研究。
Microsoft Research — 智能体上下文工程(ACE)关于将上下文作为结构化手册演进,而不是反复重写或压缩一切的研究。
Related Articles

MCP vs A2A vs UCP vs AP2 vs A2UI:智能体协议栈详解
MCP、A2A、UCP、AP2 和 A2UI 常被描述为相互竞争的智能体标准。它们大多解决的是不同的互操作性问题。本指南将每个协议映射到其实际标准化的边界,并展示它们如何在同一个生产系统中协同工作。

前端与后端开发
前端和后端开发是网络开发的重要组成部分,涉及创建网络应用程序和网站。前端开发专注于用户界面,而后端开发则负责编程和管理服务器端。

Mastering the SEO Workflow: Essential Optimization Strategies for Organic Growth
A structured SEO workflow is crucial for sustainable organic growth. Learn the ten foundational strategies, from keyword research and technical optimization to content quality and performance analysis.

GPU 不是产品:面向未来的私有 AI 架构
私有 AI 基础设施不应围绕单一 GPU 或单一模型来设计。更具韧性的做法是将快速推理 GPU、内存充裕的 AI 系统、物理 AI 节点以及可选的前沿云模型,统一置于一个具备能力感知的路由层之后。

AI代理应该记住、遗忘、重新计算还是再次检索什么?
长时间运行的代理不应记住所有内容。本文提供了一个实用的生命周期模型,用于决定哪些内容应属于持久记忆、哪些内容应重新检索、哪些内容重新计算更安全,以及哪些内容应过期或被取代。

为什么更多上下文会让AI的回答更糟
更大的上下文窗口并不保证更好的答案。本文解释了信号稀释、证据冲突、状态过时、位置敏感性和有损压缩如何降低AI可靠性——并介绍了一种实用的上下文压力测试。

答案有效性边界:相关性到可靠AI答案之间缺失的层级
一个来源可能相关、权威,但对于所提出的问题仍然是错误的。缺失的层次是适用性:答案成立的条件,以及迫使其被重新考虑的变化。本文介绍了“答案有效性边界”这一面向人类、AI搜索和RAG系统的来源设计模式。

RAG失败了——但究竟是哪一层真正失败了?一种诊断方法
当RAG答案出错时,将问题归咎于检索或模型过于笼统。这种诊断方法将来源覆盖、查询构建、检索、排序、上下文组装、生成、证据归因和时效性逐一隔离,从而使实际故障能够被复现并修复。

Ollama 并非产品:构建可投入生产的开源大语言模型应用
使用Ollama运行本地模型很简单。但构建一个可用于生产环境的开源大语言模型(Open-LLM)应用则更具挑战性:它需要RAG(检索增强生成)、访问控制、供应商抽象、评估、日志记录、部署规范,以及围绕模型构建受控的应用层。

什么是RAG?对其工作原理的最简单解释
RAG听起来很复杂,但想法很简单:在AI回答之前,它先从知识源查找有用的信息,并将该信息提供给语言模型。本指南使用一个简单的思维模型来解释RAG、LLM、状态、记忆和工具。