把 512 篇文档原样塞进上下文,单卡 H100 上要跑 19.9 秒;换成 16 个“记忆 token”,只要 0.74 秒。更反直觉的是,论文报告在事实验证基准 FactKG 上,后者不但没掉分,反而从全上下文的 80.43% 涨到 84.33%。这套方法叫 Memorilla,论文已在 arXiv 公开(论文),代码与权重都以 Apache 2.0 开源。

它不是压缩文本,是学出一套“软”记忆

主流做法是检索:先挑几段原文塞进提示词。Memorilla 换了思路——一个冻结的编码器把每篇文档编码一次存进向量库;提问时,一批可学习的 memory slot 读入问题和整个文档库,直接产出与问题相关的记忆 token,写进大模型的输入嵌入空间里。

关键点有两个。大模型权重全程冻结,只有记忆模块被训练;而且不管文档库多大,模型收到的 token 预算恒定。换句话说,输入侧成本与文档规模脱钩:文档再多,模型看到的始终是 16 个 token。团队把这种设计称为“把记忆当成一种模态”,作者的说法是“如果 RAG 是情景记忆,Memorilla 就是语义记忆”。

数字:哪些赢,哪些输了

在 8 个基准上,论文报告平均分 49.68,为所有方法中最高,并在 5 个基准上领先:

  • PersonaMem-v2 达到 44.60%,最强基线 xRAG 为 30.90%,全上下文只有 27.92%,而且多用 1974 倍文档 token
  • FactKG 84.33%,全上下文 80.43%,少用 108 倍 token
  • TriviaQA 精确匹配 57.00%,文档 token 少 743 倍
  • LaMP-7 的 ROUGE-L 为 48.37,LaMP-4 为 18.15

也有输的地方,得一并说清:PubMedQA 上 59.00%,低于 LLMLingua-2 的 69.00%;PersonalizationV4 上 66.65%,略低于 MemoRAG 的 67.88%;NarrativeQA 上 19.31%,略低于 MemoRAG 的 20.51。团队自己的结论是:学出来的记忆赢在“需要把整块材料拼起来看”的题,检索赢在“答案是一个能原样查到的名字”,短文本上直接读原文仍然更好。

延迟与压缩方面,单张 H100-80GB、batch size 1、Qwen3-8B,512 篇文档(约 12.8 万 token)下,Memorilla 稳定在 0.74 秒,而全上下文从 0.75 秒一路涨到 19.9 秒。NarrativeQA 的书籍和剧本被压缩超过 4000 倍,作者在社交平台给出的口径是最高 4212 倍 token 节省。八个基准平均下来,文档 token 少用 394 倍。

智能体那一侧:记忆可以自己学出来

同一套记忆模块被接到 TextWorld 文本冒险游戏里:一个冻结的 Qwen3-4B 智能体要在最多 65 个房间、50 步内完成任务,历史被压成 8 个记忆 token,只有记忆模块用 GRPO 强化学习训练。

结果是:平均成功率从 18.6% 升到 24.2%,三次之内通关的比例从 25.0% 升到 37.5%,回合用尽前结束的比例从 29% 升到 42%。论文特别指出,未训练的随机记忆反而低于基线——增益来自学习,而不是来自“多塞了几个 token”。

它补的是检索的空位

更有意思的是两者并不重叠。FactKG 上,RAG-50 检索拿到 78.4%,Memorilla 是 84.3%,而两者取并集的上界高达 94.3%:15.9% 的题只有 Memorilla 能解,10.0% 只有检索能解。论文强调这个 94.3% 是 oracle 上界、并非实测的混合系统,但它指明了方向——记忆负责读懂材料之间的关系,检索负责把名字原样找出来。Hacker News 上一位读者把机制概括成一句话:注入进去的更像一种“vibe”而不是可引用的原文,这恰好对上了它在概念题上强、在逐字检索题上弱的表现。

现在的边界

三条限制写在项目主页上,值得原样记住。第一,它会丢细节,比如确切的名字。第二,因为记忆直接写进输入嵌入,方案要求开放权重,而且每个 LLM 都要单独训一个记忆模块。第三,全部实验都是 Qwen 编码器配 Qwen 解码器、只用文本,跨模型家族与跨模态都还没验证,TextWorld 也只测了单一游戏套件、最多 50 步。

训练成本也不算轻:三个阶段在 4 张 H100 80GB 上跑约 19 小时,要下载约 310 GiB 数据与嵌入,评测全部八个基准在单卡上约 15 分钟。代码仓库截至抓稿时有 339 个星、26 个 fork,权重则以 Apache 2.0 发布在 Hugging Face 上。

所以呢

Memorilla 最值得注意的地方,可能不是那 16 个 token,而是它把记忆从检索工程变成了训练工程:你要的不是“更好的召回”,而是一套能学会怎么记的参数。门槛也很直白——需要开放权重,需要为每个模型付一次训练钱,目前只在文本上验证过。

对正在做长上下文与 Agent 记忆的团队,值得抄的也许不是整套系统,而是那个固定 token 预算:让模型无论面对 512 篇还是 50 万篇文档,输入侧成本都不再随规模增长。接下来真正的问题是,当记忆可以被训练,谁来训练它、又是为谁训练。