区分了持久内存、上下文窗口和 RAG 检索的职责边界:窗口是当前工作区(临时有界),RAG 是检索技术,内存是跨会话持久状态,三者相关但各司其职。
上下文窗口是模型当前工作的地方——快速、即时、临时且有界。它是 Agent 的工作记忆,仅此而已。
RAG 是相关信息被获取到该窗口的方式——一种检索技术。
Memory 是超越会话生命周期的持久状态。Memory 使用 RAG 来检索,并始终落地在上下文窗口中——但它既不等同于前者,也不等同于后者。
Memory、context 和 RAG 经常被互换使用,而这种不精确会导致真实的架构错误。它们是相关但不同的概念:上下文窗口是信息在模型工作时的所在位置,RAG 是获取相关信息的技术,而 memory 是超越任何单次请求的持久状态。Memory 经常使用 RAG 来执行其工作,并最终总是进入上下文窗口——但它既不等同于 RAG,也不等同于上下文窗口。
上下文窗口承载着模型当前能看到的内容。它快速且即时,但临时且有界——它是 Agent 的工作记忆,仅此而已。任何不在其中的内容对模型都是不可见的,而其中的所有内容在会话结束时消失。持久 memory 的存在恰恰是因为上下文窗口无法成为知识长期存放的地方。
为当前时刻检索相关记忆在机制上是一个检索问题。你嵌入记忆、存储它们,然后在查询时找到与当前发生的事情最相关的那些——这正是 RAG 流水线。Memory 检索是将 RAG 应用于 Agent 自身的过去,而不是应用于文档语料库。
区别在于存储中存放的内容。经典 RAG 从固定的文档集合中检索。Memory 从 Agent 自身体验的演变记录中检索——一个不断增长、变化,并且必须在 Agent 存活期间进行管理的存储。相同的检索机制,但来源更加动态且不同。
RAG 从固定语料库检索。Memory 从活跃的过去检索。
免费 Agent Memory 快速开始——四种记忆类型和整个循环(存储、检索、反思、遗忘)只需几页。免费下载。
Memory 是一个完整的学科:决定存储什么、如何存储、何时检索、随着增长如何保持准确性,以及何时遗忘。RAG 是其中的一个组件——读取步骤。上下文窗口是结果落地的地方。Memory 是跨越所有这一切并在会话之间持久存在的系统。
当你不确定你处理的是三者中的哪一个时,问一下信息存放在哪里以及它能存活多长时间。如果它只在此次请求中存在并在之后消失,那就是上下文窗口。如果它是一项将相关信息获取到该窗口的技术,那就是检索。如果它跨越会话持久存在并代表积累的状态,那就是 memory。这个测试告诉你哪一层拥有你正在调试的问题。
想深入了解?《AI Agent Memory:完整指南》是完整参考——41 页、15 章、5 个附录,包括一个完整的支持 Agent 示例和 30 天采纳路径。获取指南。
上下文窗口是临时工作记忆——模型当前看到的内容,会话结束时被清除。Memory 是超越会话的持久状态。Memory 向上下文窗口中输入内容,但不等同于它。
不是。Memory 使用 RAG 进行检索——读取步骤——但也涵盖写入(决定存储什么)、整合和遗忘,这些 RAG 不涉及。而且 memory 从 Agent 演变的过去中检索,而不是从固定的文档语料库中检索。
Memory 是持久存储。RAG 是从中检索相关记忆的方式。上下文窗口是这些检索到的记忆落地的地方,以便模型能够使用它们。Memory 使用 RAG 来填充上下文窗口。
更大的窗口有帮助,但无法取代 memory:成本随着你每次轮次重新发送的所有内容而增长,模型对巨大的上下文注意力不佳,而且窗口仍然在会话结束时消失。Memory 在设计上是持久且有选择性的。
问一下信息存放在哪里以及它能存活多长时间。在此请求后消失→上下文窗口。一项获取相关信息的技术→RAG。跨会话作为积累状态持久存在→memory。
对于进一步的操作,你可以考虑屏蔽此人和/或举报滥用行为。