大模型也需要“记忆”:读懂《Memory for Large Language Models》的三维框架
大语言模型正在从“根据当前上下文生成回答”,走向“跨任务、跨会话地积累经验”。
但信息到底存在哪里?什么时候更新?又能保存多久?《Memory for Large Language Models》这篇综述给出了一套清晰的架构化答案。
论文由清华大学、NUS 与 Bosch AI 的研究者共同完成。它的核心观点是:
大模型的记忆不只是更长的上下文窗口,而是一种需要被专门设计、更新和管理的架构能力。
本文主要介绍论文的核心观点和推理过程,本人也运用文章的方法自测了一个实验,可验证文章提到的三维记忆框架有效性,感兴趣的朋友移步至此阅读
一、为什么上下文窗口不等于记忆?
传统 Transformer 通过注意力机制读取前文信息,并把历史 token 的 Key 和 Value 保存为 KV Cache。这可以视为一种短期工作记忆。
但它有明显局限:上下文越长,计算和显存成本越高;会话结束后信息通常不会自然保留;模型也很难决定哪些内容值得长期保存。
因此,论文希望把“记忆”从上下文处理的附属品,变成模型中的独立设计变量。
二、理解大模型记忆的三维框架
论文提出:所有记忆机制都可以从三个彼此独立的维度理解。
| 维度 | 核心问题 | 两端类型 |
|---|---|---|
| 表示形式 | 记忆以什么形式存在? | 隐式 ↔ 显式 |
| 更新机制 | 记忆何时、如何更新? | 离线 ↔ 在线 |
| 持久性 | 记忆保留多久? | 短期 ↔ 长期 |
1. 表示形式:隐式与显式
隐式记忆与模型的前向计算紧密绑定,通常没有独立读写接口。典型例子包括 KV Cache、RNN 隐藏状态、Mamba 和 RWKV 等模型的递归状态。
显式记忆则是独立的存储组件,模型可以明确读写和更新,例如向量索引、键值存储、记忆槽位或可写参数模块。
- 隐式记忆像模型自然保留下来的“脑内状态”;
- 显式记忆像模型专门维护的一本可查询笔记。
2. 更新机制:离线与在线
离线更新发生在预训练或微调阶段。模型训练完成后,知识基本固定,稳定但不够灵活。
在线更新允许模型在推理或部署过程中修改状态、参数或外部记忆。例如,循环状态会随着输入持续更新;某些测试时训练方法会让模型根据新数据做局部适应。
在线更新能增强适应性,但也可能带来错误累积、旧知识被覆盖和记忆漂移。
3. 持久性:短期与长期
短期记忆服务于当前上下文或一次推理,KV Cache 是典型代表。
长期记忆可以跨任务和跨会话保留,可能储存在可写参数、独立检索库或专门的记忆模块中。
三、论文梳理了哪些技术路线?
论文没有只按模型名称分类,而是将不同技术放入这套记忆框架中。
- 注意力及其改进:KV Cache、滑动窗口、稀疏注意力、选择性注意力,重点是降低长上下文成本。
- 循环与状态空间模型:Mamba、RWKV 等,将历史压缩进持续更新的状态,而不是保存全部 token。
- 可写参数化记忆:通过专门模块在训练或推理时写入信息,支持持续适应。
- 检索式记忆:通过键值表、向量索引或专用数据存储,按需调用相关信息。
- MoE:根据输入选择不同专家参数,可看作一种条件化记忆。
- 混合架构:将注意力、递归状态、检索与专家网络结合,让不同机制承担不同时间尺度上的记忆职责。
这些技术面对的是同一个问题:如何让模型以较低成本保存、更新和调用历史信息,同时避免遗忘和干扰。
1. 三个维度并不是“非此即彼”
三维框架的价值,在于避免把某种技术简单贴上“有记忆”或“没记忆”的标签。同一个系统可以同时拥有多种形式的记忆:对话窗口中的 KV Cache 是隐式、在线、短期记忆;用户偏好数据库是显式、在线、长期记忆;预训练参数中沉淀的通用知识,则更接近隐式、离线、长期记忆。
这意味着设计问题不再是“要不要给模型加记忆”,而是:针对某类信息,应该选用怎样的表示、更新频率和保留期限。
例如,用户刚刚提到的筛选条件需要立即服务于当前回答,适合放在工作记忆中;某个业务指标的定义需要被反复使用,适合进入可检索的长期知识库;而通用语言能力、行业常识等大范围知识,则更适合通过训练或检索补充,而不是在每个会话里重复写入。
2. 不同路线分别解决什么问题?
从工程角度看,这几类机制的优先级并不相同。
| 技术路线 | 擅长解决的问题 | 主要代价或风险 |
|---|---|---|
| 长上下文与 KV Cache | 保留完整的近期对话和文档细节 | 推理成本随上下文增长,关键信息可能被淹没 |
| 递归状态 / 状态空间模型 | 用固定大小状态处理长序列 | 压缩时可能丢失细节,难以精确回溯原文 |
| 检索式记忆 | 按需查找事实、历史案例和文档 | 依赖索引质量,检索错误会影响回答 |
| 可写参数化记忆 | 对新分布持续适应 | 写入与回滚困难,可能发生灾难性遗忘 |
| MoE 与混合架构 | 对不同任务动态分配专门能力 | 路由、训练和运维复杂度更高 |
因此,现实系统通常不会只押注单一路线。一个客服 Agent 可以用上下文窗口维持本轮对话,用检索库召回产品规则,再用用户画像存储长期偏好;一个数据分析 Agent 则更应该强调可验证的显式记忆,因为它面对的是会变化的表结构、口径和业务决策。
这里有一个很实用的判断标准:如果信息需要被追溯、审计、纠正或被多人共同维护,就不应只留在模型的隐式状态里,而应进入有来源、有版本的显式存储。模型可以负责理解和组织信息,但“事实从哪里来”需要始终可回答。
四、对 OpenClaw Data Agent 的记忆管理启发
这篇论文对 OpenClaw 上的 Data Agent 很有现实意义。
最重要的原则是:
记忆保存“如何理解和使用数据”,数据仓库保存“数据本身”。
不要把原始数据、临时 SQL 结果、长期业务定义都塞进同一个记忆文件。更合理的做法是按持久性和可信度分层。
建议将 Data Agent 的记忆分成四层:
| 层级 | 应保存的内容 | 管理建议 |
|---|---|---|
| 工作记忆 | 当前任务、SQL 草稿、中间分析结论 | 自动过期,不进入长期知识库 |
| 任务记忆 | 已确认的指标定义、业务约束、项目决策 | 审核后写入,可跨会话使用 |
| 数据知识层 | 表结构、字段解释、数据血缘、质量规则 | 结构化存储,版本化维护 |
| 经验记忆 | 常见异常、查询优化经验、有效分析路径 | 有条件沉淀,定期淘汰 |
对于 OpenClaw,还可以把现有能力映射到这套分层:
MEMORY.md:只放稳定、精炼、经确认的业务规则和长期决策;- 每日记忆文件:保存分析过程、临时观察和待验证线索;
memory_search:按需召回相关背景,而不是每次把所有历史塞进上下文;- 数据库或数仓:始终作为原始数据的唯一事实来源;
- 知识 Wiki 或数据目录:保存带来源与版本的表结构、指标定义和数据质量规则。
从“记录”到“可用记忆”的完整流程
记忆系统最容易出现的问题,是把保存信息等同于建立能力。事实上,一条笔记只有在未来能被准确召回、正确解释并安全更新时,才真正构成可用记忆。
对于一个 Data Agent,可以将一次信息沉淀拆成五步:
- 捕获:从用户确认、数据字典、任务结论或人工反馈中识别候选信息;
- 校验:确认数据源、口径、适用产品和时间范围,区分事实、假设与观察;
- 归类:判断它属于临时上下文、项目决策、业务规则还是经验模式;
- 写入:以结构化字段保存内容、来源、负责人、更新时间和失效条件;
- 召回与复核:后续任务按需引用,并在数据或规则发生变化时更新、替换或废弃。
其中,校验和归类往往比写入本身更重要。比如“本周某渠道 D0 入催升高”是一次观察,不能直接变成长期规则;但“D0 入催的统一计算公式”和“渠道归类映射”经过业务确认后,可以成为长期知识。把两者混在一起,会让 Agent 在未来把偶发波动误读成稳定规律。
让记忆具备时间意识
数据分析场景中的信息很少永久不变。渠道名称可能调整,指标口径可能改版,某张表可能迁移,历史结论也可能被新数据推翻。因此长期记忆最好至少包含四类元数据:
- 来源:来自数据字典、业务负责人、会议纪要还是自动分析;
- 生效时间:规则从何时开始适用;
- 更新时间:最后一次确认是什么时候;
- 失效条件:在何种版本变更、产品调整或数据重构后需要复核。
有了这些信息,Agent 在回答“某指标怎么计算”时,除了给出公式,还能说明该规则适用的产品范围和版本;在发现用户的问题涉及旧数据时,也能主动提示口径可能不同。这种时间意识,正是长期记忆与简单备忘录的分界线。
尤其值得加入“长期记忆写入门槛”:
- 结论是否来自可信数据源?
- 是否已被校验或人工确认?
- 是否注明来源、更新时间和适用范围?
- 是否存在失效条件或新版本?
只有满足这些条件的信息,才值得从工作记忆晋升为长期记忆。这能避免 Data Agent 将一次偶然的查询结果、过期口径或模型猜测,误当成未来任务的事实依据。
一个轻量但可执行的落地方案
不必一开始就建设复杂的向量数据库或训练可写参数模块。对于多数团队,先建立“短期文件 + 长期规则库 + 原始数据源”三层结构,就能覆盖大量需求:会话和每日任务保留在短期文件中;经确认的规则写入长期文档或结构化表;所有数值类事实仍回到数据库查询。
随着内容增多,再为长期规则增加检索能力,并对高频问题建立专题知识页。这样既可以降低首次建设成本,也能避免在规则尚未稳定时过度自动化。真正成熟的记忆系统不是一次性堆出来的,而是在不断校验、使用和淘汰中逐步形成的。
结语
这篇论文最有价值的地方,并不在于提出某一个新模型,而在于提供了一套共同语言。
KV Cache、Mamba、RAG、可写参数、MoE 和测试时训练,看似是不同路线,本质上都在回答同几个问题:模型记住什么、如何更新、保存多久,以及何时遗忘。
对于 Agent 系统而言,记忆管理的重点也不应是“存得越多越好”,而是让信息在正确的层级、以正确的更新规则、在正确的时间范围内被保存和调用。
换句话说,好的记忆系统既要“记得住”,也要“忘得对”。它需要保留那些稳定、可验证且能帮助下一次任务的信息;也需要让临时结果自然过期,让失效规则有机会被替换,让未经确认的推断不进入事实库。对大模型和 Agent 来说,这种有边界的记忆,往往比无限扩张的上下文更接近真正可靠的智能。