Retrieval vs. Memory in Agentic AI Systems
TL;DR · AI 摘要
在自主AI系统中,检索和记忆是两种关键机制,分别处理外部知识和内部学习信息,有效结合两者能提升系统性能。
核心要点
- 检索处理外部知识(如文档/代码),记忆存储代理自身生成的信息(如历史决策)
- 上下文窗口限制迫使代理必须区分检索与记忆两种信息类型
- 结合向量搜索和结构化存储可实现两者的有效整合
结构提纲
按章节快速跳转。
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- 检索与记忆在自主AI系统中的区别
- 检索
- 外部知识获取
- 向量搜索实现
- 记忆
- 内部信息存储
- 结构化存储
- 整合方案
- 上下文扩展
- 长期交互支持
金句 / Highlights
值得收藏与分享的关键句。
模型的固定上下文窗口限制了其处理长对话的能力,必须通过检索和记忆机制扩展知识边界。
检索处理知识库/代码库等外部信息,记忆存储代理自身生成的决策和用户特征。
有效整合需要同时使用向量搜索(检索)和结构化存储(记忆)技术。
检索与记忆在智能体AI系统中的区别
检索与记忆在智能体AI系统中的区别
作者: Bala Priya C 日期: 2026年8月12日 分类: 人工智能
0
分享 发布
本文将帮助你理解智能体AI系统中检索与记忆的概念差异和实践差异,并学习如何有效结合两者。
我们将涵盖以下主题:
- 检索与记忆的核心区别,以及这种区别对长期运行智能体的重要性
- 通过具体案例说明检索流水线和记忆系统的构建方式
- 如何将检索与记忆整合为统一的智能体架构
引言
无法记住过往交互的AI智能体实用性很差。所有大语言模型都有固定的上下文窗口,当对话内容、工具输出或检索文档超出这个限制时,就必须舍弃、总结或重新获取新内容。开发长期运行的智能体时,开发者会频繁遇到这种问题:智能体会重复提问已回答过的问题,推翻之前的决定,或无法识别所需文档的存在。
检索与记忆是解决这个问题的两种机制,它们分别应对问题的不同方面。检索用于引入模型未经过训练且不应默认承载的外部知识(如文档、代码、数据库记录),而记忆则用于保存智能体自身在会话或多次交互中学习到的信息,避免每次都要从零开始。混淆两者或只实现其中一种,会导致许多智能体架构失效。本文将涵盖:
- 检索与记忆在概念层面的区别
- 通过实例说明检索流水线和记忆系统的构建方式
- 两者的对比分析
- 如何将两者整合为统一的智能体系统
我们首先从上下文窗口为何需要拆分开始讨论。
理解上下文为何导致拆分
上下文窗口是模型一次能处理的全部token集合,包括系统提示、对话历史、工具输出等预置内容。这个窗口容量有限,每次前向传播都会处理其中的每个token,因此单纯扩大窗口尺寸并不能像听起来那样线性扩展。上下文工程作为一门学科应运而生,其核心是管理这种有限资源,将其视为模型在特定时刻可访问的完整状态,而非仅仅用于存放指令的空间。
基于这种限制,智能体需要但无法永久保留在上下文中的信息分为两类:
- 存在于模型之外或当前对话之外的信息(如知识库、代码库、政策文件集合)。这类信息由检索机制处理
- 智能体自身生成或学习的信息,需要超越当前上下文窗口存在(如十轮前做出的决策或特定用户的相关事实)。这类信息由记忆机制处理
两者都使用相似的工具实现:嵌入向量、向量搜索、结构化存储。关键区别在于存储内容和信息来源:检索从智能体外部语料库获取信息,而记忆存储智能体自身交互和历史操作产生的信息。
在智能体系统中定义检索
检索是代理回答“世界关于这个问题知道什么,而我自己的权重或当前上下文中没有”的方式。最常见的实现方式是检索增强生成(retrieval-augmented generation,简称 RAG):
- 源文档会被分块为便于使用的段落。
- 每个段落会被转换为嵌入向量并存储在向量索引中。
- 在查询时,输入的问题会以相同方式嵌入,索引会返回最接近的匹配项。
- 这些匹配项会与用户的问题一起插入到提示中。
这种模式通常运行在带有编排层的托管数据存储上,该编排层将检索步骤与代理的其余推理过程连接起来——这是目前大多数生产环境中检索增强生成架构所采用的方案。语料库本身是共享的——所有询问相同产品文档的用户都会访问相同的索引——并且它按照自己的计划定期刷新,独立于任何单个对话。
在智能体系统中定义记忆
记忆是代理回答“我已经学到了什么或做了什么需要继续保留”的方式。它分为两个行为不同的层级:
- 短期记忆是当前会话的状态:到目前为止的对话内容,以及代理在当前任务中写入草稿本的任何内容。它的成本较低,且在会话结束时会消失。
- 长期记忆会跨会话持续存在。它需要回答比检索更复杂的问题:不仅仅是“什么相关”,而是“什么值得保留”。
一些智能体记忆系统会自动从对话中提取有用的事实、偏好和上下文并存储以供后续使用。在新会话开始时,代理可以像查询检索索引一样查询该记忆,但结果是针对特定用户、任务或代理的,而不是共享的文档语料库。在设计这一层级时,团队可以根据需要存储和检索的内容,探索不同的智能体记忆策略和记忆框架。
一个快速的工作示例可以具体说明这种区分。当客户向客服代理咨询订单延迟问题时:
对于延迟订单,代理首先会检查客户之前的记录。它发现三周前有一条备注,说明客户偏好通过电子邮件跟进,并且类似运输问题曾通过部分退款解决。这就是记忆,因为它来自代理对特定客户的记录。
然后代理需要当前的运输政策,该政策上个月刚刚更新,因此它会搜索公司的文档并检索相关部分。这就是检索,因为信息来自外部来源,并适用于所有客户。这两个结果会被添加到相同的提示中,但它们回答的是不同的问题。
检索与记忆的对比
将两者并排对比,检索与记忆之间的差异更容易一目了然:
| 维度 | 检索 | 记忆 | |------|------|------| | 信息来源 | 代理未创建的外部语料库 | 代理自身过去的交互或推理 | | 范围 | 所有用户和会话共享 | 特定于某个用户、任务或会话 | | 回答的问题 | “世界关于这个问题知道什么?” | “我已经学到了什么或做了什么?” | | 新鲜度机制 | 按计划或写入时重新索引语料库 | 合并、更新或过期存储的事实 | | 典型失败模式 | 索引中存在过时或缺失的文档 | 关于用户的矛盾或过时事实 | | 成本模式 | | |
读取密集型;每个查询一次查找
读写混合;每次交互后执行提取
上表中列出的故障模式解释了为什么仅使用其中一种机制构建的代理系统往往会以可预测的方式失效,以及为什么大多数正常运行的系统最终都需要同时使用两者。
将检索与记忆结合为有效系统
拥有检索能力但没有记忆的代理会在每次会话中重复推导相同结论,无法实现任何个性化。拥有记忆但没有检索能力的代理虽然了解自身历史,却无法将自身与历史之外的任何信息关联;它无法回答在训练数据结束之后发生变更的政策相关问题。正确结合两者的关键在于以下几个方面:
- 过滤比窗口大小更重要。增加更多检索文档或记忆条目并不必然提升回答质量。超过一定阈值后,额外的上下文反而可能降低回答质量,因为模型需要处理并权衡每个新增的token。精准的小范围搜索通常比广度搜索更有效,也能保持检索的token效率。
- 检索和记忆的过时机制不同。当底层文档未重新索引而变更时,检索索引会变得过时。当用户信息(如偏好或计划)变更但存储的事实未更新或删除时,记忆会变得过时。
- 记忆会增加写入成本。检索通常涉及在需要时查找信息。记忆还需要在交互后决定哪些信息值得保存,这会增加模型调用和处理时间。这种提取操作通常异步处理,以免影响代理的响应速度。
- 两种来源需要谨慎合并。检索和记忆可能返回重叠或冲突的信息。代理需要明确规则来决定如何为每个来源分配权重,并在相同上下文中同时使用两者。
检索和记忆的设计关键在于确定各自存储的内容、清理策略的激进程度,以及如何将两者合并为单一提示,避免向模型提供不必要的token。
总结
检索和记忆在长期运行的代理系统中解决不同问题。检索引入代理当前需要的外部信息,如文档、政策、代码或数据库记录。记忆则保留先前交互中的信息,如决策、偏好和用户特定上下文。这种区分很重要,因为两个系统有不同的作用范围、新鲜度要求和故障模式。检索依赖于保持外部来源的更新,而记忆依赖于决定哪些信息值得存储以及存储信息何时失效。
最有效的代理架构同时使用两者。它们会过滤进入上下文的信息,保持信息的新鲜度,并将检索到的知识与相关记忆合并,而不是将任一来源视为代理需要了解的所有信息的完整记录。
因此,目标是在代理需要时提供其所需的上下文,同时避免携带不必要的信息。
更多相关内容
- 代理AI系统中的上下文与记忆工程
- 掌握代理AI系统记忆的7个步骤
- 超越向量搜索:5种下一代RAG检索策略
- 理解RAG第六部分:有效的检索优化
- 理解RAG第三部分:融合检索与重排序
- 超越短期记忆:长期记忆的三种类型……
/.entry /