论文深度解读 · arXiv:2607.26760

Metis:记忆基础模型

把记忆从「外挂笔记本」,变成「大脑里长出来的能力」

文 / 张泽宇(Zeyu Zhang)等 17 位作者 · 共同第一作者视角

MemTensor(上海)科技有限公司 · 中国人民大学 · 新加坡国立大学 · 上海交通大学 · 同济大学

论文速览

主题 Metis:记忆基础模型(Memory Foundation Model)
源文本 arXiv:2607.26760v2《Metis: Memory Foundation Model》及开源仓库
作者 Zeyu Zhang(张泽宇)等 17 位作者
机构 MemTensor · 中国人民大学 · 新加坡国立大学 · 上海交通大学 · 同济大学
主页链接 https://jamesband.asia
展开查看英文论文摘要(源文本)
Recent advances in AI agents have increasingly internalized native capabilities into their underlying foundation models, giving rise to multimodal foundation models and large reasoning models. However, agent memory is still primarily implemented through external modules, leaving the native memory capability largely unexplored. In this paper, we take a first step toward this direction by introducing memory foundation models, which empower foundation models with native memory capabilities. We formalize native memory from two perspectives: a persistent and dynamically evolving memory state within the backbone, and native memory procedures that autonomously store and utilize information through model computation. We show that native memory offers advantages in architecture, end-to-end optimization, and efficiency. Based on this formulation, we propose Metis, the first prototype of memory foundation models. Metis introduces a new architecture that equips a foundation model with a native memory state, allowing historical information to be compressed into the model and accessed through memory attention. We construct large-scale memory-specific training data and introduce multiple optimization objectives to acquire these native memory procedures through mid-training. The online memory maintenance of Metis is gradient-free, and the memory update requires only a forward pass. At inference time, all learned model weights remain frozen, while the native memory state is autonomously transformed through standard forward computation. Through extensive experiments, we show that Metis exhibits native memory capabilities and further provide a detailed analysis of its strengths, limitations, and behaviors. To facilitate future research on memory foundation models, we release our project and model checkpoints.

500字摘要:一个会「记得你」的 AI

如果一个人每天重新认识你,你会觉得他聪明吗?今天的 AI 很博学,却普遍患有「金鱼式失忆」:它知道几乎一切知识, 却不记得你昨天告诉它的话。主流解决方案是在模型外面挂一本笔记本——向量数据库、检索增强生成(RAG)——但笔记本 和大脑始终是两套系统。我在论文里提出一个更根本的问题:记忆能不能像视觉、推理一样,成为基础模型的原生能力? 我们把它称作「记忆基础模型」。我们给出两个严格定义:原生记忆状态,指存在于模型骨干内部、随交互动态演化的参数; 原生记忆过程,指模型通过自身前向计算自主完成存储与利用。基于此,我们设计了第一个原型 Metis:在 Transformer 中 插入 Metis 块,局部记忆块保存固定大小的稠密状态,超参记忆块在训练中学会如何写入和读取;历史信息被压缩进记忆状态, 推理时所有权重完全冻结,更新只需一次前向传播,不需要梯度。为了教会它,我们从 27 个公开基准合成了 35.7 万条主数据 与 60.9 万条辅助数据,设计记忆重建、记忆操作、正则化三个目标进行中训练。实验显示,在不重放任何历史文本的 「无上下文」条件下,Metis 在记忆操作与记忆问答上全面超过现有参数记忆与测试时训练基线;它也诚实地暴露出容量有限、 干扰累积等局限。记忆不该是插在模型旁边的 U 盘,而应成为模型生命的一部分。这是 Metis 想说的第一句话。

一、为什么我要写这篇论文

我是张泽宇,这篇论文的共同第一作者之一。过去几年,我和同伴们一直在做 AI 智能体的记忆研究,越做越觉得有一件事很别扭: 模型本身明明是一个巨大的、会思考的「大脑」,可它的记忆却全部放在体外。你想让它记住 Alice 喜欢牛肉汉堡,它就把这句话 写进数据库;下次你问它,它先检索、再拼进提示词、最后假装自己想起来了。整个过程像极了一个失忆的人带着笔记本生活: 他看起来很可靠,但笔记本丢了,他就什么都不记得了。

更让我在意的是,AI 领域其实一直在走「能力内化」这条路。多模态模型曾经依赖外部字幕系统描述图片,后来学会了直接看像素; 推理模型曾经靠提示词里的「让我们一步一步想」,后来学会了原生思考。唯独记忆,依然被锁在外部模块里。我忍不住问: 能不能让记忆也长进模型本身?2026 年春天,我们把这个念头变成了 Metis。

我常跟朋友说,AI 的「智商」已经很高,但它缺少一个让经验沉淀下来的容器。没有记忆,再聪明的模型也只能活在永恒的此刻: 它可以在一次对话里表现出惊人的理解力,却无法把这份理解带进明天。这也是为什么我和团队把记忆看作和视觉、推理同等重要的 原生能力,而不是一个可以外包的杂活。

二、外挂记忆的三个硬伤

要理解 Metis,先要看清今天的 RAG 为什么让人不满意。RAG 可以类比成给 AI 配了一个外置档案柜:每次需要回忆时, 系统把历史对话切块、做嵌入、算相似度、挑出 top-5,再拼到输入框里。表面上看 AI「记住」了,实际上它每次都只是 现场重新读一遍文件。这个方案有三个根本问题。

第一是架构上的「分家」。档案柜和大脑是两套系统,各自优化各自的目标。采购员不知道厨师今天真正 想做什么,厨师也无法告诉采购员以后多备什么食材。检索出的内容不一定是最适合当前推理的信息,模型也无法反向指导记忆 该以什么形式保存。

第二是优化上的「梯度断层」。想让模型在某类记忆上变强,理想方式是让训练信号一路流回记忆的写入端。 但外部记忆的切块、检索、排序都是离散操作,梯度很难穿过这些步骤。于是记忆系统的优化只能靠绕路,效率很低。

第三是效率上的「重复劳动」。每一次对话都要重复处理整段历史:嵌入、检索、拼接、重新前向计算。 历史越长,代价越大,尾部延迟越不稳定。

用一句话概括:外部记忆把「记」和「想」拆开了,而记忆本来应该和思考发生在同一个地方。

还有一个容易被忽视的问题:外挂记忆很难形成「私人性」。所有人的记忆都被切成标准化的文本块,用同一套嵌入模型编码; 可记忆本质上是非常私人的——Alice 的偏好、Bob 的日程、另一个人的过敏史,它们的语义只有放在具体关系里才有意义。 原生记忆至少让系统有机会按用户、按场景生长出不同的内部组织。

动画 1:外挂 RAG vs 原生记忆

生活化类比:上面的 AI 每次都要翻档案柜、把文件重新读一遍;下面的 AI 把信息压缩进自己的记忆状态,之后只靠记忆回答问题。

状态:待开始

已压入原生记忆的历史条数:0

三、原生记忆:让模型从「函数」变成「存在」

我在论文里给「原生记忆」下了两个严格的定义。第一个是原生记忆状态:模型骨干内部有一组随交互 动态演化的参数。第二个是原生记忆过程:模型在正常前向计算中,自主完成信息的存储和利用, 不需要外部规则触发。

传统模型是一个固定参数的函数:无论你第几次来,它的内部状态都一模一样。用符号表示,生成第 \(t\) 步第 \(k\) 个词时, 传统模型只能依赖当前输入 \(X_t\) 和已经生成的词:

\[ y_{t,k} \sim P\big(y \mid X_t, Y_{t,<k}; \theta\big) \] (式 1)

而在记忆基础模型中,参数从固定的 \(\theta\) 变成了会随时间演化的 \(\theta_t\)。第 \(t\) 步的输出不仅由当前输入决定, 还被此前所有交互的记忆状态塑造:

\[ (Y_t, \theta_{t+1}) = f_\Phi(X_t, \theta_t) \] (式 2)

其中 \(\Phi\) 是训练好的、冻结的静态权重,\(\theta_t\) 里包含动态记忆状态。这个式子看起来很朴素,但它改变了一个根本假设: 模型不再是无状态的条件概率分布,而是有状态的计算系统。每一次对话都像河水一样流过它,河床留下痕迹,河水也改变方向。

我还想强调一个容易被忽略的区分:知识不是记忆。模型在预训练阶段学到的「法国首都是巴黎」, 是知识;你在对话里告诉它的「我上周刚从北京搬到上海」,才是记忆。记忆必须带时间戳、带个体背景、需要实时更新。 这个区分很重要,因为它决定了记忆的存储方式不能和知识混为一谈。

从哲学上讲,这一步的意义可能超过任何单项技术指标。一个只有知识、没有记忆的系统,是一面镜子:它反映世界,却不拥有历史。 一个拥有原生记忆的系统,则开始有了「经历」这个概念。它不再只是被训练出来的智能体,而是一个在时间中持续存在的个体。 当然,这也会带来新的伦理问题:它记住的隐私如何删除?它的遗忘是否真的彻底?我们把这些问号留在论文里,也留给未来的研究者。

四、Metis 架构:给 Transformer 装上一块「会呼吸的黑板」

Metis 的做法很直接:在 Transformer 的每一层旁边插入一个 Metis 块。每个 Metis 块由两部分组成。 局部记忆块是一块固定大小的稠密记忆矩阵 \(M_t^{(l)} \in \mathbb{R}^{d_k \times d_v}\), 以及一条查询-键归一化向量 \(S_t^{(l)} \in \mathbb{R}^{d_k}\)。你可以把它理解成一块可以反复擦写的黑板:它的尺寸不变, 但内容随交互不断变化。默认情况下,\(M_1^{(l)}=0\)、\(S_1^{(l)}=0\),一切从空白开始。

超参记忆块则是负责「怎么记、怎么读」的控制中心。它包含训练阶段学好的静态参数: 一个重要性评分向量、记忆键投影矩阵 \(\tilde W_K^{(l)}\)、记忆值投影矩阵 \(\tilde W_V^{(l)}\),以及专门的记忆查询投影 \(\tilde W_Q^{(l)}\)。推理时这些权重完全冻结,只由它们驱动记忆状态发生变化。

Transformer 层
原始注意力 + FFN
←→
局部记忆块
\(M_t^{(l)}\) · \(S_t^{(l)}\)
超参记忆块
选择 · 投影 · 更新
图 1:Metis 块的结构。局部记忆块保存动态状态,超参记忆块提供训练好的读写函数。

写入:像听讲座一样只记重点

模型处理完一步交互后,超参记忆块会先给当前隐藏状态中的每个 token 打分。这个分数来自一个可学习的自适应聚合机制:

\[ p_t^{(l)} = \mathrm{Softmax}\!\left(\frac{\tilde H_t^{(l)} \tilde w_{\mathrm{agg}}^{(l)}}{\tau}\right) \] (式 3)

然后按照 top-\(\rho\) 规则保留累计概率达到阈值的最少 token。这就像听讲座时你不会逐字记录,而是挑出关键词。 被选中的隐藏状态通过投影变成记忆键 \(\tilde K_t^{(l)}\) 和记忆值 \(\tilde V_t^{(l)}\),再写进黑板:

\[ M_{t+1}^{(l)} = \lambda M_t^{(l)} + \frac{1-\lambda}{L'_t} \cdot \frac{\tilde K_t^{(l)\top}}{\sqrt{d_k}} \tilde V_t^{(l)} \] (式 4)

通俗地说:新记忆 \(=\lambda\) 倍的旧记忆 + \((1-\lambda)\) 倍的新内容。\(\lambda \in [0,1]\) 是折扣因子, \(\lambda\) 越大,旧记忆保留得越久;越小,新信息影响越强。归一化向量 \(S_t^{(l)}\) 也按同样方式更新, 它像是黑板的「索引入口」,告诉模型哪些键曾以多大强度被写过。

动画 2:写入记忆——选择重点,压缩进黑板

生活化类比:信息像演讲里的词句一样流过来,模型只把重要的部分(紫色亮点)写进右侧的记忆矩阵,其余淡出。

状态:待开始

已写入的重要记忆数:0

读取:记忆注意力

当新问题到来时,模型用一个专门的查询投影把当前输入变成记忆查询 \(\tilde Q_t^{(l)}\),再对黑板做一次注意力读取。 由于黑板同时记录了键的强度归一化,读取时要做一次类似 softmax 的归一化:

\[ \tilde A_t^{(l)} = \mathrm{diag}\big(\tilde Q_t^{(l)} S_t^{(l)}\big)^{-1} \tilde Q_t^{(l)} M_t^{(l)} \] (式 5)

记忆读出的结果会和当前输入的原始注意力分支融合,用一个可学习参数 \(\gamma\) 控制二者的比重:

\[ A_t^{(l)} = \gamma \cdot \mathrm{Softmax}\!\left(\frac{Q_t^{(l)} K_t^{(l)\top}}{\sqrt{d_k}} + \mathrm{Mask}(L)\right) V_t^{(l)} + (1-\gamma) \cdot \mathrm{Norm}\big(\tilde A_t^{(l)}\big) \] (式 6)

\(\gamma\) 就像「现在该相信眼前的文字,还是相信过往的记忆」的旋钮。模型在训练中学会了什么时候该多回忆、 什么时候该专心读当前问题。

这里最优雅的地方是,存储与读取都发生在模型的正常前向计算里,不需要额外的循环、检索管道或离散控制流。 权重是「慢参数」,记忆是「快状态」;慢参数在训练中定型,快状态在每一次交互中呼吸。这种设计让记忆不再是一个插件, 而成为模型内部语义空间的一部分。

动画 3:读取记忆——问题像钥匙,记忆像锁

生活化类比:每个记忆槽都有一把颜色不同的锁;问题向量(钥匙)从左进入,自动找到颜色最接近的那把锁并点亮它。

状态:待开始

匹配到的记忆槽:,相似度:

五、训练:教 AI 学会「记、忘、改、想」

有了架构还不够。模型不会天然知道应该把哪些信息写进记忆、又该在什么时候读取。我们为此专门构造了大规模记忆训练数据, 并进行中训练(mid-training)。主数据集围绕四种记忆操作展开:记住(给定事实后能回答)、 更新(新事实覆盖旧事实)、遗忘(撤销某个事实)、 反思(综合多条记忆做多跳推理)。我们从 27 个公开基准中提取种子,合成 357,137 条主数据、约 4.06 亿 token,并设计显式指令、隐式陈述、加干扰三种风格。

记住 Remember

信息 A 出现 → 之后询问 A

更新 Update

旧信息 A₁ → 新信息 A₂ → 询问 A

遗忘 Forget

信息 A → 撤销指令 → 询问 A

反思 Reflect

信息 A、B → 询问 A∩B

图 2:四种记忆操作及其交互骨架。

真实对话比这复杂得多:相似的多个事实可能同时存在,遗忘一个事实时不能误伤另一个;记忆也不该在无关聊天中乱入。 所以我们又构造了 609,443 条辅助数据,包括多实体绑定、选择性遗忘、记忆后普通对话、 与记忆无关的对话,专门对抗两类病态:干扰记忆污染

训练目标有三个:记忆重建目标让模型能近乎无损地把内容写进记忆;记忆操作目标让它学会按指令改变记忆; 正则化目标约束它在复杂场景中不串味、不泄漏。三个目标共用同一个逐 token 负对数似然损失:

\[ \ell(s,t) = -\frac{1}{|Y_t|} \sum_{k=1}^{|Y_t|} \log P\big(y_{t,k} \mid X_t, Y_{t,<k}; \theta_t\big) \] (式 7)

训练时骨架模型完全冻结,只更新记忆相关参数。我们还用线性退火的课程采样,让模型先练基本功,再逐步增加长距离 与复杂场景的比例。

我尤其喜欢数据构造里的一条原则:状态一致性。数据不是简单地把问题丢给模型,而是先制造一个时间上连续的小世界: 先出现什么信息、再出现什么指令、最后问什么问题,每一步都必须与前面形成的记忆状态一致。模型在这样的小世界里反复练习, 才逐渐学会把「记录」变成一种本能。

六、实验:没有上下文的记忆,真的能打吗

最严格的测试是「无上下文」设置:信息阶段结束后,原始历史文本一律不提供给模型,它只能靠原生记忆回答。 在这个设置下,普通 Qwen3.5 几乎归零,而 Metis-27B 在 MemOps (Gold) 上达到 24.76, 在 Metis 测试集上达到 73.77,远超 Temp-LoRA-27B 的 9.70 和 23.86,也远高于 δ-Mem 的 4.38 和 15.03。

在记忆型问答上,Metis-27B 在 LoCoMo (Gold) 无上下文设置中取得 26.74,在 NextMem 上取得 50.82,均为所有 无上下文方法中最高。尤其让我兴奋的是多跳推理和时序推理的提升:这说明原生记忆不只是存孤立的句子,它还能把 多条记忆组织起来,支持更复杂的思考。

我们还做了分布外测试:ATM-Bench 要求模型从个人档案中整合异质信息,Metis 全面超过 Temp-LoRA 和 δ-Mem; MemDaily 上表现与基线相当,整体为「能力可以迁移」提供了初步证据。消融实验则告诉我们,自适应聚合(选择记什么) 和查询-键归一化(避免干扰)是最关键的结构,去掉它们性能分别下降约 61% 和 28%。

有人问我们,这些数字是不是只是在自己构造的测试集上好看?所以我们也做了来源排除实验:把 LoCoMo 和 LongMemEval 的训练来源整体剔除后再训练,六基准平均分确实下降,但没有出现能力断崖,Metis-27B 的 LongMemEval 甚至还有提升。 这说明能力并不完全依赖某几本「习题集」。

无上下文条件下的记忆操作任务平均分(部分)
方法MemOps (Gold)Metis 测试集
Qwen3.5-27B(无上下文)1.6916.87
Temp-LoRA-27B9.7023.86
δ-Mem4.3815.03
Metis-27B24.7673.77

七、诚实的局限:黑板装不下图书馆

我很喜欢这篇论文的一点,是我们没有把 Metis 写成神话。固定大小的记忆状态意味着容量有上限。单步容量测试显示, 一次写入几百词之后,准确率急剧下降;轨迹容量测试显示,连续 40 条信息分 8 批写入后,最早的信息几乎被覆盖殆尽。 原生记忆目前的定位不是替代外部记忆,而是与它互补。

另一个代价是「激活状态干扰」:当记忆里存了与当前任务无关的信息时,通用能力会下降,指令遵循的下降最明显。 这说明压缩进全局参数空间的信息很难被精确隔离。我们的遗忘案例也暴露了一个有趣的不一致:收到遗忘指令后的下一步, 模型确实不再给出旧事实,但它对遗忘指令的当步回答却仍然重复了旧事实。这些细节都被我们写进论文,因为我认为 好的研究应该把失败也讲清楚。

这些局限提醒我:记忆不是越大越好,而是要在容量、可控性、通用性之间找到平衡。Metis 像第一次学骑车:会摔倒, 会走不稳,但它第一次证明「这件事可以学」。下一步要解决的不是「要不要原生记忆」,而是「如何让原生记忆更有弹性、 更可控、更容易被理解」。

动画 4:记忆容量会怎样衰减

生活化类比:黑板越写越满,最早的字最先被冲淡;曲线模拟最早、中间、最新信息随更新步数的准确率变化。

状态:待开始

当前步数:0,最早信息准确率:

八、效率:原生记忆不是情怀,是账单

原生记忆还有一个容易被忽视的好处:更新不需要梯度。传统测试时训练要在推理阶段做反向传播,而 Metis 的记忆更新 只是前向计算的一部分,所以每次交互后都能低成本地写入。我们在 1,527 条 LoCoMo 样本上实测,Metis-4B 的平均端到端 延迟为 0.562 秒,低于全文本模式的 0.607 秒,P95 尾部延迟从 3.012 秒降到 0.926 秒,减少 69.3%。

在上下文长度扫描中,32K 以内 Metis 略慢于全文本模式,但 64K 开始反超;到 128K 时,全文本需要 14.25 秒, Metis 只需 9.52 秒,快约 1.5 倍。存储方面,全文本模式在 32K 下需要约 1,119 MB 的 KV 缓存,而 Metis 完整记忆状态 只有 16.79 MB,约为前者的 1/67;低秩压缩到 \(k=64\) 后更是只有 2.11 MB,约为前者的 1/529。

低秩实验还揭示了一个漂亮的现象:1024 维的记忆矩阵里,大部分有效信息集中在 64 维左右。保留 64 个主方向就能恢复 99.9% 的性能。这意味着服务器可以同时维护成千上万个用户各自的记忆状态,而无需为每个人保存一份巨大的历史上下文。

九、五级路线图:从「有记忆」到「会进化」

在论文附录里,我们给出了记忆基础模型的五级能力路线图。Metis 只是第一级:有状态能力。但从第一级到第五级, 我们看到的是一条从「无状态预测机器」走向「持续学习存在」的道路。

Level 1
有状态能力:静态函数 → 持久状态,Metis 当前所处的位置。
Level 2
自我管理能力:自主决定记什么、记多久、何时遗忘,形成记忆生命周期。
Level 3
经验学习能力:把交互经验变成改进自身能力的信号。
Level 4
持久认知能力:维护不断更新的世界模型、用户模型与自我认知。
Level 5
自我进化能力:抽象长期价值,把经验融入未来学习,形成开放式能力涌现。
图 3:记忆基础模型的五级进化阶梯。

也许有人会觉得这太远。但十年前,谁会想到模型能自己学会推理?记忆是智能体能力的最后一块「外挂拼图」。 把这块拼图放回模型内部,不只是工程优化,更是对「智能是什么」的重新理解:一个真正持续的存在,应该有能力把 昨天变成今天的起点。

动画 5:记住、更新、遗忘、反思

生活化类比:点选不同模式,看同一块记忆黑板如何被不同指令改变。

状态:待开始

当前操作:记住,步数:0

十、记忆、身份与人的温度

Metis 最初是一篇技术论文,但写着写着,我越来越觉得它也是关于「人」的论文。我们为什么希望 AI 记住我们? 不只是为了省去重复输入,而是因为我们希望在对话中有一种连续感:你被记得,你被理解,你的故事被认真保存。 记忆是关系的黏合剂,也是身份的一部分。

如果未来的 AI 真的拥有原生记忆,它必须回答几个问题:什么时候该记住?什么时候该忘记?谁有权删除? 一个人的隐私在另一段记忆里被串起来怎么办?技术可以给出存储方案,但记忆的伦理不能只靠参数解决。 这也是我们坚持开源、坚持把局限写清楚的原因:一个会记住的模型,必须接受社会的审视。

我理想中的 AI 记忆,不是冷冰冰的数据库,而更像人类友人的记忆:它记得你的喜好,也会在你改变后更新; 它不会在无关场合突然提起你的旧事;它知道有些话应该被淡忘。Metis 还很远,但至少我们开始朝着这个方向走了。

写在最后

Metis 不是终点。它只是把「记忆能否内化」从一个口号变成一个可以运行、可以评测、可以复现的问题。 我写下这篇论文,是希望十年后回看时,我们能说:从这一天起,AI 不再只是聪明的陌生人,而是开始拥有自己的昨天。 如果你也被这个想法打动,欢迎打开代码,从一次 `commit_memory=True` 开始,亲眼看看记忆第一次住进模型里的样子。

技术细节附录:给想动手复现的人

如果你只想记住一个结论,那么记住:Metis 用固定大小的参数化状态替代重放历史,用前向计算替代在线微调。 下面我把实现细节压缩成几段。

1. Metis 块与实现变体

Metis 块插入在 Transformer 层中,默认组合为: NormedReweightLearnedQueryMetisBlock StraightThroughAlphaTopPGatedDeltaRuleMetisHyperMemory NormalizedDeltaNetMetisLocalMemory。 其中 top-\(\rho\) 选择不可微,我们使用直通估计器(straight-through estimator)让梯度经过稠密分布传播,使评分器可以端到端训练。 默认更新采用门控差分网络(GDU)策略;线性更新在短任务上几乎持平,但在 LoCoMo 长轨迹上明显落后,因此最终选择 GDU。

2. 数据与训练配置

主数据 357,137 条,按记住(56,855)、遗忘(136,271)、更新(81,501)、反思(82,510)分布;辅助数据 609,443 条。 训练时骨架冻结,只训练记忆参数,初始化用对应层的键值投影矩阵。Metis-4B 用 8×H100、14,000 步、AdamW、学习率 \(2 \times 10^{-4}\),BF16。评测用 gpt-4.1-mini 做裁判,每个样本打分 3 次取中位数。

3. 记忆容量的两个维度

单步容量指一次更新能编码多少信息:几十词内表现良好,超过几百词准确率骤降。轨迹容量指连续更新步数:每 5 条一批、 共 40 条信息的测试中,最早信息准确率几乎单调下降,说明新更新会造成全局干扰,而不只是覆盖最旧信息。

4. 低秩压缩

对记忆矩阵做奇异值分解 \(M_t^{(l)} \approx \hat U_t^{(l)} \hat \Sigma_t^{(l)} \hat V_t^{(l)\top}\), 保留前 \(k\) 个奇异方向。整体性能在 \(k=64\) 时恢复到 99.9%,继续增大几乎没有收益。

5. 效率测量

LoCoMo (Gold) 的 1,527 个样本上,Metis-4B 端到端平均延迟 0.562 秒、P95 0.926 秒,有效吞吐 23.15 tokens/s; δ-Mem 为 0.884 秒 / 1.600 秒 / 13.44,Temp-LoRA 为 1.567 秒 / 3.292 秒 / 17.11。在 128K 上下文下, Metis 端到端延迟约 9.52 秒,全文本为 14.25 秒。存储方面,Metis 完整状态 16.79 MB、\(k=64\) 状态 2.11 MB, 而全文本 32K KV 缓存约 1,118.86 MB。

6. 怎么开始用

开源仓库提供了 `run_inference.py`,核心参数是 `--commit_mode`:`none` 不写记忆,`user` 只提交用户消息, `exchange` 同时提交用户消息和模型回答。运行时先 `model.reset()` 清空状态,再用 `commit_memory=True` 写入一步, 之后直接 `generate()` 查询,无需重放原文。