🧒 初中生也能看懂的版本
① 研究背景(为什么要做?)
你和朋友聊天时,会记得他上个月说过的话、他家猫叫什么、他不吃香菜。这种“记得住”的能力,对人是理所当然的,对人工智能却是天大的难题。
今天的大模型有一个“工作台”,叫上下文窗口。你把资料放上去,它才能看见;台子清空了,它就忘了。主流模型的工作台能放十几万到一百万字,专用长文模型也很少超过一百万字。可一个人一辈子的记忆,按认知科学的估算大约是两到三亿字——差了整整两个数量级。
为了补这个缺口,业界想了三条路。第一条是把知识写进模型参数里,像人反复练习形成肌肉记忆;可一改参数就容易“灾难性遗忘”,把旧的学会的冲掉。第二条是外挂资料库,也就是常说的检索增强:先按关键词或向量去库里捞几段,再塞给模型读。这条路能装很多,但“捞”和“读”是两套系统,捞错了后面全错,而且捞几段、怎么算相关,全靠人手调。第三条是把历史压成一个固定大小的内部状态,像把一本书浓缩成一页笔记;省地方,可笔记写满了就再也塞不进新东西,越长越糊。
这篇论文要做的,是把“捞”这一步直接做进模型的注意力机制里,让模型自己学会该看哪几段,而且能记住上亿字。
② 研究问题(要回答什么?)
作者想弄明白四件事。
第一,能不能让“挑资料”这件事变成模型自己的一部分?现在的检索系统像一个图书管理员,按规则帮你找书;作者希望模型长出一双自己的眼睛,边看边决定翻哪几页,而且这个决定能被训练、能越用越准。
第二,短时间训练能不能应付超长使用?训练时最多只能塞几十万字,使用时却要面对上亿字。如果模型只会按“第几个字”来定位,那么资料一多,位置编号就全乱了。这是长文模型最要命的一道坎。
第三,记忆变长以后,答案会不会变糊?资料里大部分是无关内容,噪音越多越容易带偏。作者要测的是:从一万六千字加到一亿字,答题质量到底掉多少。
第四,普通硬件跑不跑得动?一亿字的中间计算结果,粗算要一百多 GB,比两张显卡加起来还多。如果不能把它塞进一台机器,再好的方法也只能停在论文里。
③ 研究方法(怎么做的?)
先把“记忆”拆小。整个资料库被切成一份份文档,每份再切成六十四字一段的小块。对每一块,模型算三样东西:内容钥匙、内容货架(用来真正读取信息),以及一把专门的“索引钥匙”——这把钥匙不参与理解,只负责“这块钱不相关”。把每块的三样东西各自取平均,压成很短的代表向量,存进库里。
来一个问题时,模型先用同样方式生成一把“索引问题”,去和全库的索引钥匙比相似度,取最相似的十六份文档。然后把它们的压缩内容和问题拼在一起,正常做注意力、逐字生成答案。整个过程可以求导、可以训练——这就是它和传统检索最大的区别:传统检索那一步是“断开”的,模型学不到;这里能一路把梯度传回去。
第二招叫“每份文档单独编号”。普通做法是把所有资料首尾相接,从第一个字数到第一亿个字;训练时只见过几万字,使用时编号突然变成几千万,模型就懵了。作者改成每份文档都从零开始编号,位置的含义只跟文档内部有关,跟库有多大无关。这一改动让“短训长用”成为可能。
第三招解决“多步推理”。有些问题要连着查好几份资料:先查到甲,甲里提到乙,再去查乙。作者让模型可以多轮来回:先吐出几份文档的编号,把原文接回问题里,再查一轮,直到它觉得够了才开口回答。
最后是工程。索引钥匙小,放在显卡里随时比;内容货架大,放在内存里,选中了才搬上显卡。两台显卡各存一半索引、各自算分再汇总,一亿字的记忆就这么跑起来了。
④ 结果(发现了什么?)
先看“记性变长会不会变傻”。作者拿同一个问答数据集,把记忆从一万六千字一路加到一亿字,用另一个模型当裁判打零到五分:
一万六千字时 4.023 分,一亿字时 3.669 分,横跨四个数量级只掉 8.8%。
同等规模的通用模型起步约 3.6 到 3.7 分,随长度明显下滑;未改造的基座模型在五十一万字时直接崩到 1.5 分以下。
再看“找针”测试——在上百万字的材料里藏一句话,问模型能不能找出来。本方法从三万两千字到一百万字,准确率从 98.77% 缓降到 94.84%,只掉不到四个百分点;同一个基座模型在一百万字时只剩 24.69%,二十五万字时就已跌到 48.16%。几个专门做长文的模型也不稳:有的在二十五万字跌破九成,有的一百万字只剩八成。
答题比拼上,九个数据集平均:本方法 3.760 分;同一基座配传统检索是 3.242,加重新排序 3.372,知识图谱增强的检索是 3.275——分别高出 16.0%、11.5%、14.8%。更狠的是,对手换成用两千三百五十亿参数的大模型来读资料,平均也只有 3.506 到 3.580;本方法用四十亿参数的骨架,反而高出 5.0% 到 7.2%。
拆件测试也说明每一块都不能少:去掉多轮检索,平均掉 5.3%(多跳题掉 19.2%);去掉预训练,掉 31.3%;去掉“拿到编号后再读原文”,掉 37.1%。
⑤ 讨论(这些发现说明什么?)
这组结果里最反直觉的一点是:一个四十亿参数的模型,靠着更好的记忆方式,在长文问答上打赢了两千三百五十亿参数的模型配顶级检索。作者的解释是,胜负不在于谁更聪明,而在于信息在传递过程中丢了多少。传统检索是“把原文交给模型”,但检索那一步是离散的、不可训练的,捞错了模型再强也救不回来;MSA 把选择和阅读放进同一个可训练的过程,选择标准会随着任务一起优化。
第二个值得说的是“短训长用”。这是长文模型里最贵的一环——想把训练长度从六万字加到一亿字,算力要涨上千倍。逐文档编号这个看似简单的改动,把“位置”从一个全局计数变成了局部坐标,于是训练长度和使用长度解耦了。消融里“课程学习”从八千年提到六万四千字就带来 7.6% 的提升,而在七百多万字的资料集上提升高达 29.5%,正说明“见过更长的上下文”仍然重要,只是不再需要见到最终长度。
第三个是“读完编号还要读原文”这个发现。去掉这一步,性能掉得最狠(37.1%),说明编号只能定位、不能替代内容。这也提醒读者:这不是把记忆压缩成抽象向量就完事,精确的事实细节仍然要靠原始文本。
作者也列了局限:当证据分散在多份高度互相关联的文档里、需要很强的结构对齐时,仅靠内部记忆仍会吃力;多轮检索是有希望的方向,但还需要更讲原理的设计。
⑥ 结论(最终结论 + 启示)
一句话总结:把“该看哪几段”变成模型自己能学的一件事,记忆就能从几十万字一路撑到一亿字,而且几乎不掉分。
这件事的意义不只是“上下文更长”。它把两个原本绑在一起的东西拆开了:记忆容量负责装多少,推理能力负责想多深。拆开之后,装记忆变成一件便宜的事——一次离线预处理,之后每个问题只付线性的检索成本;两台普通显卡就能服务一亿字的资料库。
对普通人来说,这意味着“记得你三年前说过什么”的助手、长期保持人设的数字分身、能翻完一整个公司文档的问答系统,第一次有了可落地的成本结构。当然,它离“真正像人一样记事”还有距离:怎么处理互相矛盾的旧记忆、怎么主动忘掉该忘的、怎么在多份文档之间建立结构,都是下一步要回答的问题。
🎓 专业 IRMaD 结构解读
I. Introduction(引言)
长时记忆是当前大模型最明确的能力缺口之一。按认知科学对人类记忆功能容量的估计(约 10^9 bit,按每 token 3–5 bit 语义密度折算约 2–3 亿 token),现有模型 128K–1M 的有效上下文相差两个数量级,即便专为长文设计的架构在严格训练后也很少突破 1M。已有的三条路线各有硬伤:参数化记忆(LoRA、持续预训练、Titans 式测试时训练)语义整合深但容量不可扩展、冲突知识下易灾难性遗忘;外部存储记忆(RAG、MemAgent)可扩展到终身规模但检索与生成解耦、不可端到端求导,精度天花板受限于离散语义匹配;潜状态记忆则分裂为两支——KV 中心方法(DSA、MemGen)精度高但代价随长度爆炸,线性注意力(RWKV、DeltaNet)以固定状态换 O(L) 复杂度却在极长记忆下必然有损。
MSA 的切入点是取消“检索—再读”的两段式,把文档级选择直接做进注意力层。三项设计互为支撑:(1) 可微的路由键(Router Key/Query Projector)+ 分块均值池化,使 Top-k 选择与内容注意力在同一前向中完成并接受辅助对比损失监督;(2) document-wise RoPE,每份文档从 0 独立编号,把位置语义与记忆总规模解耦,实现“train-on-short, infer-on-long”;(3) KV 缓存压缩 + Memory Parallel 分级存储,使 1 亿 token 推理落在单台 2×A800 节点上。配合 Memory Interleave 的多轮证据扩展,MSA 在 MS MARCO 上从 16K 到 100M 仅退化 8.8%,在 RULER NIAH 1M 规模保持 94.84%,并以 4B 骨架在九项 QA 上平均 3.760(LLM judge,0–5),超过 KaLMv2 + Qwen3-235B 的最佳配置 3.580。
I. Theoretical Framework & Hypotheses(理论框架与假设)
三类记忆范式的取舍。论文用一张对照表把问题形式化:参数化记忆胜在架构兼容与语义深度,输在容量与遗忘;外部存储胜在容量与抗遗忘,输在不可微与精度天花板;潜状态记忆胜在语义保真,却在“容量—效率”之间被迫二选一。MSA 的定位是潜状态记忆的第三条分支:保留 KV 级别的语义保真,同时用稀疏路由把每次注意力的代价压到与记忆总量无关。
核心命题:记忆容量与推理能力可解耦。设记忆库 D = {d_1,…,d_N},查询长度 M ≪ L,文档平均长度 G,池化块 P=64,选出 k=16 份。若路由与生成都只依赖固定的 k·G/P 个压缩块,则注意力的计算量与 L 无关,仅路由打分随 L 线性增长——这正是“容量可扩、推理不变”的形式化表述。
可外推性的来源。标准全局位置编码在拼接序列上单调递增,文档数增加即导致位置索引漂移,推理长度一旦超出训练视界便急剧退化。逐文档独立编号把“第几个 token”变为“文档内第几个 token”,位置语义与 N 解耦;活跃上下文(查询 + 生成)再叠加 Global RoPE 并以 k 为偏移,使生成被视作检索背景的逻辑延续。
训练信号。仅用生成损失 L_LLM 无法直接约束中间路由,故引入逐层路由的对比辅助损失 L_aux,在潜空间显式拉开正负文档块;两阶段调度先以 L = 0.1L_LLM + L_aux(lr 1e-4)预热路由器,再切到 L = L_LLM + 0.1L_aux(lr 6e-6)主训练。
| 编号 | 研究问题 | 对应设计 / 判据 |
|---|---|---|
| RQ1 | 端到端可微的稀疏记忆能否替代解耦式检索 | 与同骨架 RAG、RAG+rerank、HippoRAG2 在 9 个 QA 上对比(LLM judge 0–5) |
| RQ2 | 短上下文训练能否外推到 100M 记忆 | SFT 8K → 64K 课程;MS MARCO 16K–100M 得分曲线 |
| RQ3 | 极长上下文下的检索保真度 | RULER NIAH 8 子任务,32K–1M 平均准确率 |
| RQ4 | 各组件贡献几何 | MSA-S2 / S1 / w-o interleave / w-o CPT / w-o original text 五配置消融 |
| RQ5 | 能否在常规硬件上服务 100M 记忆 | 2×A800 单节点;分级存储 + Memory Parallel;复杂度分析 |
M. Materials & Methods(材料与方法)
- 架构家族与规模:Transformer(Qwen3-4B-Instruct-2507 为骨架,4B 参数),将标准稠密自注意力替换为文档级检索稀疏注意力。MSA 路由仅施加于模型后半数层(前层隐状态尚不足以承载高层语义,路由在该深度无效);无路由的层仍保留独立文档处理以对齐层级表征,但跳过稀疏检索与记忆整合。超参:压缩块
P=64、Top-k=16、8头、头维128、路由覆盖 18 层。 - 路由与稀疏注意力:对文档
d_i与头h:K_{i,h}=H_i W^h_K、V_{i,h}=H_i W^h_V、K^R_{i,h}=H_i W^h_{K^R},再分块均值池化得K̄=φ(K)、V̄=φ(V)、K̄^R=φ(K^R)。块级相关度S_{ij}=max_t( mean_h cos((Q^R_{q,h})_t, K̄^R_{ij,h}) ),文档级s_i=max_j S_{ij},取I=Top-k({s_i})。生成时K_ctx=[{K̄_i}_{i∈I}; K_q]、V_ctx=[{V̄_i}_{i∈I}; V_q]、Output=Attention(Q_q, K_ctx, V_ctx)。 - 位置编码:document-wise RoPE——每份文档位置 ID 从 0 独立起算,位置语义与文档总数
N解耦;活跃上下文使用 Global RoPE,查询位置从k(Top-k 压缩 KV 数)起偏移,使生成被视为检索背景的逻辑延续。 - 训练数据与阶段:连续预训练语料 158.95B token、1,790 万条 query(覆盖科学文献到社区问答,非 KALM 套件中超过 50 万 query 的数据集下采样至 50 万);目标是生成式检索——自回归吐出相关文档的唯一 ID。辅助损失
L_aux = −(1/|P|) Σ_i log[ exp(s_i^+/τ) / (exp(s_i^+/τ) + Σ_j exp(s_i,j^−/τ)) ],对每层 Router 施加监督。两阶段调度:预热L = 0.1L_LLM + L_aux、lr 1e-4;主训练L = L_LLM + 0.1L_aux、lr 6e-6。后训练为两阶段课程 SFT:先 8K 上下文建立指令跟随与推理,再清洗数据并把记忆上下文延至 64K 以增强外推。 - 三阶段推理:(1) 离线全局记忆编码——对全库一次性前向,产出并池化缓存
K̄、V̄、K̄^R;(2) 在线路由与上下文装配——用Q^R_q对缓存打分取 Top-k,仅加载被选中文档的K̄、V̄;(3) 稀疏生成——活跃 token 的Q_q对[{K̄_topk}; K_q]做自回归生成。 - Memory Parallel 与分级存储:100M token 的压缩 KV +
K̄^R在P=64、8 头、头维 128、18 层、BF16 下约需 169 GB,超过 2×A800 合计 160 GB,单体存储不可行。故把路由键K̄^R(100M 约 56 GB)分布式常驻显存以保证低延迟检索,内容 KVK̄、V̄卸载到主机 DRAM、命中后异步回传;检索时把查询隐状态广播到各卡、各卡对本地分片打分再全局归约,并对打分矩阵乘做分块(tiling)以防 OOM。4B 骨架权重在每卡复制以避免解码期通信。 - Memory Interleave:路由—装配—生成迭代执行。模型先自回归生成一串文档 ID(数量自适应)直到分隔符,取回原文拼进查询,再进入下一轮;累积证据足够后切换为生成最终答案。训练时把每条多跳检索链拆成多个单步样本(单查询或“查询 + 已有文档上下文”),随机采样。
- 复杂度:训练
O_train = O(LG) + O(ML/P) + O((M + kG/P)^2) = O(LG)(L ≫ G时首项主导);推理O_inference = O(ML/P) + O(T·(M + kG/P)^2) = O(L),且昂贵的O(LG)预处理按记忆库版本摊薄到所有查询。 - 评测设置:QA 九基准(MS MARCO v1、Natural Questions、DuReader、TriviaQA-10M、NarrativeQA、PopQA、2WikiMultiHopQA、HotpotQA、MuSiQue),记忆库 277K–10M token,指标为 LLM judge 0–5;MSA 用 @adaptive(模型自定检索份数),RAG 基线用 R@1/5/10 的固定深度。NIAH 用 RULER 八子任务(SA1-3、MK1-3、MV、MQ),32K–1M。基线分两组:同骨架(Qwen3-4B-Embedding + Qwen3-4B-Instruct、加 Qwen3-4B-Rerank、HippoRAG2)与 best-of-breed(KaLMv2-Embedding-Gemma3-12B + Qwen3-235B / Llama-3.3-70B,可选 Qwen3-8B-Rerank,UltraRAG v2.0 实现)。
R. Results(结果)
- 上下文退化(MS MARCO,LLM judge 0–5):16K 时 4.023,100M 时 3.669,跨四个数量级仅退化 8.8%;GPT-4.1、DeepSeek-V3.2 起步约 3.6–3.7 但随长度可见下滑;未改造的 Qwen3-4B-Instruct 在 128K 附近开始明显退化,512K 时跌破 1.5 分。
- NIAH(RULER 八子任务平均):
| 模型 | 32K | 128K | 256K | 1M | 关键 delta |
|---|---|---|---|---|---|
| MSA(Qwen3-4B 骨架) | 98.77% | — | — | 94.84% | 32K→1M 仅 −3.93 pp |
| Qwen3-4B-Instruct(原骨架) | — | — | 48.16% | 24.69% | 1M 时相对 MSA −70.15 pp |
| Qwen2.5-14B-1M | — | — | 89.97% | — | 256K 已跌破 90% |
| Qwen3-30B-A3B | — | 79.13% | — | — | 128K 即严重退化 |
| Qwen3-Next-80B-A3B | — | ≈100% | — | 80.78% | 256K 后显著衰减 |
| RL-MemoryAgent-14B | 98.42% | — | — | 92.66% | 32K→1M −5.76 pp,衰减更陡 |
- QA 对比(同骨架):MSA 九数据集平均 3.760;标准 RAG 最佳 3.242、RAG+rerank 3.372、HippoRAG2 3.275,分别提升 16.0% / 11.5% / 14.8%。除 NarrativeQA 外在同骨架对比中全面领先。分项亮点:MS MARCO 4.141(对 RAG+RR 3.032,+36.6%)、2WikiMultiHopQA 4.280(对 3.159,+35.5%)、DuReader 4.155(对 3.848,+8.0%)。
- QA 对比(best-of-breed,大骨架 RAG):KaLMv2+Qwen3-235B 最佳 3.506、加 rerank 3.580、KaLMv2+Llama3.3 最佳 3.396、加 rerank 3.568;MSA 3.760,相对提升 7.2% / 5.0% / 10.7% / 5.4%。在 Natural Questions、TriviaQA、NarrativeQA、HotpotQA、MuSiQue 五项未夺冠,差距分别为 5.6% / 2.5% / 0.9% / 3.9% / 16.5%;作者归因于对手生成器参数量大两个数量级(235B vs 4B)及内在推理更强。
- 消融(四基准平均,0–5):
| 配置 | 平均分 | 相对 MSA-S1 | HotpotQA | 说明 |
|---|---|---|---|---|
| MSA-S2(完整,64K 课程) | 3.976 | +7.6% | 4.061 | MS MARCO 上较 S1 提升 29.5% |
| MSA-S1(完整,8K) | 3.694 | — | 4.020 | 仅第一阶段 SFT |
| w/o memory interleave | 3.497 | −5.3% | 3.250 | 多跳题掉 19.2%,证据链断裂 |
| w/o continual pre-training | 2.537 | −31.3% | 2.289 | HotpotQA 掉 43.1%,路由精度崩塌 |
| w/o original text | 2.325 | −37.1% | 2.297 | DuReader 掉 46.2%,仅编号无法替代内容 |
- 效率:训练与推理均为
O(L)(训练含O(LG)项、推理主导项O(ML/P)),相对全注意力的O(L²)预填充;100M token 推理在 2×A800 单节点跑通,压缩 KV +K̄^R理论占用 169 GB(其中路由键约 56 GB 常驻显存),超出节点 160 GB 上限,必须依赖分级存储。
a / D. Discussion & Conclusion(讨论与结论)
- 范式意义:检索从管线变成层。RAG 的“先捞后读”是两套系统、两套目标、两套超参,误差在接口处不可回传;MSA 把文档选择做成注意力层内可微的 Top-k,并与生成共享同一套表征与梯度。这解释了为何 4B 骨架能压过 235B + 顶级检索——差距不在参数,而在信息通路是否可端到端优化。作者亦指出,MSA 消除了 top-k 召回数、相关性阈值等启发式超参,检索份数由模型自适应决定。
- “短训长用”是成本上的关键突破。document-wise RoPE 把位置语义与文档总数解耦,使 64K 训练可外推到 100M 推理;课程学习消融(8K→64K,+7.6%;MS MARCO +29.5%)表明“见过更长”仍有用,但只需见到远小于目标的长度。对训练成本而言,这把长文能力的边际成本从“随目标长度平方增长”降为“一次性的小规模外推训练”。
- 能力边界与失败模式。消融给出清晰的因果链:路由能力(CPT,−31.3%)> 内容注入(原文,−37.1%)> 多轮证据扩展(−5.3%)。前者说明路由是瓶颈、必须专门预训练;后者说明“压缩表示能定位但不能替代阅读”,精确事实仍依赖原文。多跳任务对初始检索误差高度敏感(HotpotQA 在去掉 CPT 后 −43.1%),误差会沿迭代累积。
- 局限:(1) 作者自述,当任务需要跨多份文档的强结构依赖、证据高度互链时,纯内部记忆难以维持准确的结构对齐;(2) NarrativeQA 一项未达同骨架最佳,长叙事理解仍有短板;(3) 五项 QA 未超 235B 大骨架 RAG,MuSiQue 差距达 16.5%,说明复杂多跳推理仍受限于骨架能力而非记忆机制;(4) 169 GB 的理论占用意味着 100M 规模依赖分级存储与异步回传,实际端到端延迟未在文中给出完整分解;(5) 评测以 LLM judge 0–5 为主,绝对分数的可比性受裁判模型影响。
- 展望:作者把 MSA 定位为“通用模型的基础组件”,而非一个独立的长文模型——记忆容量交由 MSA,推理能力仍由更大的骨架提供,二者可分别扩展。这与“把所有能力塞进更长上下文”的路线形成分工。对应用侧,1 亿 token 的记忆在单节点上可服务,使长期陪伴型助手、稳定人设的数字分身、跨多年文档的智能体第一次具备可算的成本结构。
🧠 IRMaD 思维导图
mindmap
root((亿级记忆稀疏注意力))
I 引言
人脑记忆两亿字
模型窗口仅百万
参数记忆会遗忘
外挂检索不可训
固定状态必失真
R 问题
挑选能否学出来
短训能否长用
记忆变长会变糊吗
普通硬件跑得动吗
M 方法
文档切块均值压缩
路由键做文档级选择
只读最相关十六份
每份文档独立编号
对比损失监督路由
一千五百九十亿词元
十亿词元课程到六万四
索引显存内容放内存
多轮插值补多跳
R 结果
一亿字只掉八点八
找针一亿字九十四点八
九数据集均分三点七六
超过两千三百五十亿模型
去掉预训练掉三成一
去掉原文掉三成七
a 讨论
检索从管线变成层
参数不是胜负关键
定位不能替代阅读
多跳误差会累积
跨文档结构仍吃力
D 结论
容量与推理解耦
两台显卡跑一亿字
可作通用记忆组件
数字分身成本可行
图:本研究的 IRMaD 思维导图。蓝色 I 引言;橙色 R 研究问题;绿色 M 方法; 橙色 R 结果;紫色 a 讨论;红色 D 结论。