“AI 记住了东西”可能对应两种完全不同的机制:

  • RAG 更像查资料。
  • Memory 更像记经历。

理解这两个概念,是理解长期运行 Agent 的关键。

RAG:不是背下来,而是需要时现查

RAG 是 Retrieval-Augmented Generation,即检索增强生成。它的基本思路是:模型回答问题前,先去外部知识库查找相关内容,再把结果放入 Context。

例如用户询问“去年第四季度日本市场的收入是多少”,系统可以从财报、周报、产品文档或数据库中检索相关资料,然后让模型基于这些资料回答。

1
2
3
4
5
6
7
8
9
10
11
用户问题
↓
搜索知识库
↓
找到相关资料
↓
放入 Context
↓
模型阅读资料
↓
生成答案

典型 RAG 流程包括文档切分、Embedding、索引、向量检索、关键词检索、Rerank 和上下文拼装。实际系统也可能使用 BM25、Query Rewrite 或多路召回。

RAG 面向的是 Agent 外部已经存在的知识:公司文档、产品资料、论文、网页、数据库和代码仓库。

所以 RAG 的核心不是“模型把资料记住了”,而是“模型需要时可以把资料找回来”。它像开卷考试,模型不用背整本书,回答时查找相关页即可。

Memory:把重要经历保存下来

Memory 面向的是 Agent 与用户或任务共同经历过的内容。

例如:

  • 用户喜欢简洁表达,汇报时先讲结论;
  • 项目目标是把识别错误率降低到某个范围;
  • 方案 A 因延迟太高而失败;
  • 当前已经完成 API 设计,下一步处理 Webhook。

这些信息并不是外部知识库里的通用资料,而是过去交互和任务执行产生的经验。

当 Context 快要装满时,Agent 可以把重要状态写入一份结构化笔记:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
当前目标:完成支付模块

已完成:
- API 设计
- 数据库 Schema

已知问题:
- Webhook 还没有通过测试

重要决策:
- 不修改旧版接口

下一步:
- 修复 Webhook Bug

之后即使 Context 被压缩或清空,Agent 也能重新读取这份笔记继续工作。

Memory 可以分为两类:

  • 用户 Memory:偏好、习惯、身份和表达方式;
  • 任务 Memory:目标、决策、失败原因、已完成步骤和下一步计划。

RAG 与 Memory 的边界

假设一个工作助手准备产品 Review:

  • 最新 DAU、最近 Bug、最新需求文档,需要从外部系统现查,属于 RAG;
  • 上次负责人最关注的问题、之前决定的方向、用户的汇报习惯,需要从过去经历中取回,属于 Memory。

可以把两者比作:

  • RAG 是图书馆,遇到问题去查书;
  • Memory 是笔记本,把重要经历记下来。

工程实现上,两者的边界会逐渐靠近。Memory 数量变多后,同样需要检索:当前任务 → 搜索相关 Memory → 取最相关的几条 → 放回 Context。

区别在于检索对象的语义来源:

  • RAG 问的是:哪些外部资料与当前问题相关?
  • Memory 问的是:过去哪些经历与当前任务相关?

Memory 不是越多越好

如果 Agent 把所有事情都记录下来:今天喝了什么、刚刚说了什么、几个月前打开过什么网页,Memory 最终会变成垃圾场。

真正重要的问题不是“AI 能不能记住”,而是:

什么值得写入,什么时候取回,哪些内容应该被遗忘?

好的 Memory 系统通常包含两个关键动作:

1
2
Write Memory:判断什么值得保存
Retrieve Memory:判断什么值得取回

RAG、Memory 最终都会回到 Context Engineering:在正确的时间,把正确的信息交给模型。

总结

  • RAG:需要什么,就去外部知识库里查;
  • Memory:发生过什么,把值得保留的经历记下来;
  • Context Engineering:决定这一刻应该把哪些知识和记忆放回 Context。

Agent 的“记忆”不是模型突然拥有了无限大脑,而是把无法一直留在 Context 里的信息保存到外部,需要时再取回来。