Memory as a Model:用 1.5B 小模型给任意 LLM 挂载外部知识

大型语言模型一旦结束预训练就停止学习了。当需要模型了解公司内部 Wiki、上季度的财报,或训练截止日之后出版的书籍时,只有三条路:使用 RAG、对其 Fine-tuning,或将知识压缩进隐式记忆。每种方案都解决一个问题,同时带来另一个问题。

MEMO 走了一条不同的路,而且简单到有点出人意料。

它核心想法是:不必让推理模型记住所有东西,只需给它配备一个专用记忆系统。用一份语料训练一个小得多的模型,让它记住细节;大模型需要信息时,再去向它查询。

最终得到两个从不共享权重的模型:

查询时,执行者将复杂问题拆解为若干子问题,向记忆模型逐一询问,再对答案进行推理。可以想象为是一位研究员搭档一位图书管理员——管理员读遍了馆藏的每一本书,但只回答具体问题,从不把书递过来。

它真的比 RAG 更好吗?

向冻结模型注入新知识并不是新问题,多年来各种尝试基本落入三类,每类都有令人头疼的取舍。

  1. 非参数化方法,即 RAG 和上下文学习(in-context learning)。权重不动,查询时取回相关文本并粘贴到 Prompt 里。灵活、流行,但:
  1. 参数化方法,即 Fine-tuning 或继续预训练。将知识烘焙进权重,这种方式能较好地捕捉知识间的关系,但:
  1. 隐式记忆方法,即 Gist token、ICAE、AutoCompressor。将知识压缩为 soft token,紧凑、可查询,但记忆与生成它的特定模型绑定。这份记忆无法移交给另一个 LLM——论文称之为表征耦合(representation coupling)问题。

MEMO 的图表里有一列"全部达标"正是这篇论文值得读的根本原因。它真正解决的是取舍本身:在物理层面将记忆与推理分离,保留了三种范式各自的优点,同时规避了各自的代价。

相比 RAG,最具实用价值的两点:其一,记忆模型依靠内化知识作答,而非依赖取回的文档,语料中的噪声对答案影响要小得多(下文会看到具体数字:检索器在噪声干扰下下降 5 到 11 个百分点,MEMO 几乎纹丝不动)。其二,记忆模型只需训练一次,之后可以接入任意执行者——包括前沿闭源 API——无需重新训练。

底层原理:完整技术解析

设 M_θ 为参数为 θ 的冻结 LLM,以黑盒方式访问。只能发送 Prompt x 并读取响应 M_θ(x),别无其他(无权重、无梯度、无 logit)。设 D = {d_1, …, d_N} 为目标语料,包含 M_θ 无法可靠召回的知识。

知识整合机制(knowledge integration mechanism)是一对 (Φ, f):

目标:

找到 (Φ, f) 使得 E_{q~Q} [ P( f(M_θ, Φ(D), q) = a*(q) ) ] 最大化
约束条件:θ 永不被修改。

选择最佳的语料表示方式(Φ)和最佳的利用方式(f),使冻结模型在不修改任何权重的前提下,能正确回答尽可能多的查询。

这一框架清晰地揭示了各方法的本质差异——它们不过是对 (Φ, f) 的不同选择:

φ ≪ θ 是核心所在。语料变成了一个紧凑、固定大小的模型,既非索引,也不是对大模型的修改。

阶段一:构建记忆模型

直接用原始文本对小模型 Fine-tuning,并不能让它回答任意问题。这样训练出来的模型往往记住文档的表层形式,而非知识本身,一旦问题措辞与原文不同,泛化能力就会大打折扣。

MEMO 的解决方案是一条五步数据合成 Pipeline,由一个生成器模型(M_gen,可与执行者相同或更小)运行。它将语料提炼为一个问答数据集,论文将其称为反射(reflections):从多个角度揭示语料知识的 QA 对,涵盖任何单一文档都未直接陈述的关系。

Pipeline 伪代码(依据论文算法 1 改写):

输入:语料 D,生成器 M_gen,文档分组 G = {G_1, …, G_R}
Q_final ← ∅
for each document d in D: 
C ← Chunk(d) # 切分为文本块
Q_ver_d ← ∅ 
for each chunk c in C: 
# 步骤 1:提取显式与隐式事实
Q_dir, Q_indir ← M_gen(c) 
Q_raw ← Q_dir ∪ Q_indir 
# 步骤 2:将相关 QA 对合并为多事实对
Q_mrg ← M_gen(Q_raw) 
Q_con ← Q_raw ∪ Q_mrg 
# 步骤 3:校验每对是否自洽;改写或丢弃
Q_ver ← M_gen(Q_con, c) 
Q_ver_d ← Q_ver_d ∪ Q_ver 
# 步骤 4:为本文档生成实体溯源对
Q_ent_d ← M_gen(Q_ver_d) 
Q_final ← Q_final ∪ Q_ver_d ∪ Q_ent_d
for each group G_i in G: 
# 步骤 5:对相关文档组进行跨文档合成
Q_cross ← M_gen( ∪_{d in G_i} (Q_ver_d ∪ Q_ent_d) ) 
Q_final ← Q_final ∪ Q_cross
return Q_final

各步骤的实际作用如下

步骤 1,事实提取:从每个文本块中抽取直接事实(明确陈述)和间接事实(推断或合成),训练信号同时覆盖记忆与推理。

步骤 2,合并:将共享同一实体、时间段或关系的 QA 对合并为多事实问题,迫使模型超越逐条事实作答的模式。

步骤 3,校验与改写:检查每对的自洽性——不看源文本块能否作答?含有悬空代词("他们提出了什么?")或隐式引用("如上所述……")的对,借助对应文本块进行改写;仍有歧义则丢弃。

步骤 4,实体溯源:生成通过属性和关系描述某实体、并询问其身份的问题。这直接针对逆转诅咒(reversal curse)——模型学会了"A 是 B",却无法回答"B 是谁?"这一已知缺陷——同时也为推理阶段的实体识别环节提供支撑。

步骤 5,跨文档合成:在相关文档组内,寻找两类关联——收敛线索(不同文档提供关于同一实体的互补事实)和平行属性(不同实体共享某一特征)。这些正是检索系统容易出错的真正多跳反射。

得到反射数据集 Q_final 后,对小模型进行全量 SFT,使其直接将问题映射到答案,全程不依赖源文档。具体而言,只在答案 Token 上最小化下一个 Token 的损失:

训练时,记忆模型从不接触源文档——只看到问题和答案。文档被隐去,模型无法依靠从上下文复制来作答,要想正确回答,唯一的途径就是将知识存入自身权重。这正是记忆模型与 RAG 阅读器的关键区别:RAG 阅读器作答时始终能看到取回的文档,而记忆模型不能。

阶段二:推理时的查询

训练出一个好的记忆模型只是成功的一半。复杂查询需要多步推理,朴素地向记忆模型提一个大问题,或在非结构化循环中与之对话,会损失大量准确率。

执行者因此运行一套严格的三阶段协议,每个阶段有各自的 Prompt、采样温度和交互预算,记忆模型被视为外部知识预言机(oracle)。

阶段 1,定位(Grounding):执行者将查询 q 分解为一组原子子问题 {q′_1, …, q′_J}(J 自适应确定,每个子问题针对单一约束条件)。记忆模型独立作答(无共享上下文),产生定位响应 {m_1, …, m_J}。论文中预算为 1 轮。

阶段 2,实体识别(Entity identification):利用定位响应,执行者通过有针对性的追问,迭代缩小候选实体集合,直至收敛到单一实体 e* 或预算耗尽。若无候选实体浮现,跳过阶段 3,仅凭定位结果构建答案。预算为 7 轮;这一阶段依赖训练步骤 4 中生成的实体溯源对。

阶段 3,答案检索与合成(Answer seeking and synthesis):以 e* 为条件,执行者通过追问收集更多支撑事实 m_seek,然后合成最终答案:

â = M_θ( q , {m_j}_{j=1..J} , e* , m_seek )

预算为 8 轮。

这套设计带来两个关键特性。每次交换都是简短的自然语言片段,长度与语料规模无关,推理成本因此相对于语料规模保持恒定;所有交互都通过执行者的普通文本输入/输出完成,完全兼容黑盒和闭源模型。

消融实验的数字能说明结构的价值:相同的记忆模型和执行者组合,单轮设置下 BrowseComp-Plus 得分约为 32.6%,非结构化多轮循环下约为 48%,采用结构化协议后达到 54.2%。单纯增加轮次到了瓶颈,真正推动提升的是结构本身。

附加阶段:通过模型合并实现持续更新

实际部署中语料不断增长,而在所有历史语料的并集上反复重训,扩展性很差。MEMO 借鉴了模型合并(model merging)方案:针对每份新语料单独训练一个记忆模型,然后在参数空间中将它们合并。

对每份语料 D_i,从同一基础 φ_0 出发训练记忆模型 M_φi,并定义其任务向量(task vector):

τ_i = φ_i − φ_0 # 学习 D_i 引起的参数偏移

然后合并:

φ_merged = Merge( φ_0 , {τ_i}_{i=1..K} ; Θ )

其中 Θ 为方法专属的超参数。最简单的方案是线性合并:φ_merged = φ_0 + Σ_i λ_i τ_i。论文对多种方案(Linear、Task Arithmetic、SLERP、TIES、DARE、DARE-TIES)进行了对比,发现低密度(ρ=0.3)TIES 最为可靠,兼具激进稀疏化与符号冲突解决的优点。

计算成本方面,合并随语料数量呈 Θ(K) 增长,全量重训为 Θ(K²)——两份语料时节省 33% 算力,推算到十份语料时约为 ~5.5 倍的节省。由于任何一个记忆模型都从未在其他语料的数据上训练,合并不会触发灾难性遗忘——每份语料的知识封存在各自的任务向量中。代价是相比全量重训存在可量化的准确率下降(某基准上差 11 到 19 个百分点),但合并后的模型仍超越了所有检索基线。

突破所在

剥去各项基准数据,真正新颖的是对知识应该存在于何处的重新框架:将记忆做成独立可替换、具备纯文本接口的模型,而不是强迫推理模型兼做存储,或将其绑定在脆弱的检索 Pipeline 上。

这个架构选择同时解锁了属性表中的全部条目:基础模型冻结、无需索引、兼容黑盒、无遗忘风险、固定大小、可迁移。优势恰好在现有方法最薄弱之处体现得最突出:

不过这里有个问题当执行者能力较弱时,MEMO 在 BrowseComp-Plus 上并不领先——因为答案根本不在模型的参数化知识中,直接递上原始证据文档反而更难被超越。将记忆与推理分离,在任务本质是综合推断时优势显著;在任务只是"把原文给我"时,则持平甚至落后。

局限性

作者指出了若干限制:

未来方向

论文指向了若干有潜力的研究方向:

总结

MEMO 本质上是在论证:知识与推理应该是两个不同的对象。接受这一点之后,一个经过语料训练的小模型,配备纯文本接口,就能提供一份像 Fine-tuning 一样持久、像 RAG 一样可替换、像隐式记忆一样紧凑的记忆——同时对悄然拖累大多数生产级 RAG 系统的检索噪声展现出独特的鲁棒性。

它不会在所有场景下取代检索;当答案不在模型参数中、且存在干净的源文档时,直接传入文档仍难以被超越。但作为向冻结模型——包括无法 Fine-tuning 的闭源 API——赋予可迁移、可查询的第二大脑的方式,"记忆即模型"是近期知识整合问题上最为优雅的重新框架之一。

论文:

arxiv 2605.15156

by Abhilash Bora

展开阅读全文

更新时间:2026-06-19

标签:科技   模型   知识   语料   记忆   执行者   文档   步骤   实体   参数   文本

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight All Rights Reserved.
Powered By 61893.com 闽ICP备11008920号
闽公网安备35020302035593号

Top