大模型也需要“记忆”:读懂《Memory for Large Language Models》的三维框架

大模型也需要“记忆”:读懂《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 是典型代表。

长期记忆可以跨任务和跨会话保留,可能储存在可写参数、独立检索库或专门的记忆模块中。

三、论文梳理了哪些技术路线?

论文没有只按模型名称分类,而是将不同技术放入这套记忆框架中。

  1. 注意力及其改进:KV Cache、滑动窗口、稀疏注意力、选择性注意力,重点是降低长上下文成本。
  2. 循环与状态空间模型:Mamba、RWKV 等,将历史压缩进持续更新的状态,而不是保存全部 token。
  3. 可写参数化记忆:通过专门模块在训练或推理时写入信息,支持持续适应。
  4. 检索式记忆:通过键值表、向量索引或专用数据存储,按需调用相关信息。
  5. MoE:根据输入选择不同专家参数,可看作一种条件化记忆。
  6. 混合架构:将注意力、递归状态、检索与专家网络结合,让不同机制承担不同时间尺度上的记忆职责。

这些技术面对的是同一个问题:如何让模型以较低成本保存、更新和调用历史信息,同时避免遗忘和干扰。

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,可以将一次信息沉淀拆成五步:

  1. 捕获:从用户确认、数据字典、任务结论或人工反馈中识别候选信息;
  2. 校验:确认数据源、口径、适用产品和时间范围,区分事实、假设与观察;
  3. 归类:判断它属于临时上下文、项目决策、业务规则还是经验模式;
  4. 写入:以结构化字段保存内容、来源、负责人、更新时间和失效条件;
  5. 召回与复核:后续任务按需引用,并在数据或规则发生变化时更新、替换或废弃。

其中,校验和归类往往比写入本身更重要。比如“本周某渠道 D0 入催升高”是一次观察,不能直接变成长期规则;但“D0 入催的统一计算公式”和“渠道归类映射”经过业务确认后,可以成为长期知识。把两者混在一起,会让 Agent 在未来把偶发波动误读成稳定规律。

让记忆具备时间意识

数据分析场景中的信息很少永久不变。渠道名称可能调整,指标口径可能改版,某张表可能迁移,历史结论也可能被新数据推翻。因此长期记忆最好至少包含四类元数据:

  • 来源:来自数据字典、业务负责人、会议纪要还是自动分析;
  • 生效时间:规则从何时开始适用;
  • 更新时间:最后一次确认是什么时候;
  • 失效条件:在何种版本变更、产品调整或数据重构后需要复核。

有了这些信息,Agent 在回答“某指标怎么计算”时,除了给出公式,还能说明该规则适用的产品范围和版本;在发现用户的问题涉及旧数据时,也能主动提示口径可能不同。这种时间意识,正是长期记忆与简单备忘录的分界线。

尤其值得加入“长期记忆写入门槛”:

  1. 结论是否来自可信数据源?
  2. 是否已被校验或人工确认?
  3. 是否注明来源、更新时间和适用范围?
  4. 是否存在失效条件或新版本?

只有满足这些条件的信息,才值得从工作记忆晋升为长期记忆。这能避免 Data Agent 将一次偶然的查询结果、过期口径或模型猜测,误当成未来任务的事实依据。

一个轻量但可执行的落地方案

不必一开始就建设复杂的向量数据库或训练可写参数模块。对于多数团队,先建立“短期文件 + 长期规则库 + 原始数据源”三层结构,就能覆盖大量需求:会话和每日任务保留在短期文件中;经确认的规则写入长期文档或结构化表;所有数值类事实仍回到数据库查询。

随着内容增多,再为长期规则增加检索能力,并对高频问题建立专题知识页。这样既可以降低首次建设成本,也能避免在规则尚未稳定时过度自动化。真正成熟的记忆系统不是一次性堆出来的,而是在不断校验、使用和淘汰中逐步形成的。

结语

这篇论文最有价值的地方,并不在于提出某一个新模型,而在于提供了一套共同语言。

KV Cache、Mamba、RAG、可写参数、MoE 和测试时训练,看似是不同路线,本质上都在回答同几个问题:模型记住什么、如何更新、保存多久,以及何时遗忘。

对于 Agent 系统而言,记忆管理的重点也不应是“存得越多越好”,而是让信息在正确的层级、以正确的更新规则、在正确的时间范围内被保存和调用。

换句话说,好的记忆系统既要“记得住”,也要“忘得对”。它需要保留那些稳定、可验证且能帮助下一次任务的信息;也需要让临时结果自然过期,让失效规则有机会被替换,让未经确认的推断不进入事实库。对大模型和 Agent 来说,这种有边界的记忆,往往比无限扩张的上下文更接近真正可靠的智能。

原论文:Memory for Large Language Models