把 6.7 万个词的文档库塞进大模型,最后只占 16 个 token 的位置,准确率还能反超全量上下文。斯坦福大学 Jure Leskovec 领衔的 SNAP 团队联合多伦多大学、宾夕法尼亚大学和 MIT,以 Apache 2.0 协议开源了潜在语义记忆系统 Memorilla,并同步放出包含 149 名合成用户、每人 200 段对话的 PersonalizationV4 数据集。这套系统用一个约 1.94 亿参数的可训练记忆模块,把任意规模的外部文档动态压成 16 个软记忆 token,直接注入冻结的 Qwen3-8B 输入层。它确实绕开了长上下文的算力墙,但翻开论文附录和代码库就会发现,前端省下的每一分账单,都在后台换成了显存开销、监督微调红利和白盒权重的硬绑定。

先看这套系统的基本盘。Memorilla 的流水线分三步,底层文档先由冻结的 Qwen3-Embedding-4B 单次编码成向量,新增文档无需重算旧数据;提问时,由 2 层 8 头交叉注意力组成的记忆模块带着问题去全量向量库里读取信息,生成 16 个连续向量;最后把这 16 个软 token 投影并拼接到 Qwen3-8B 的输入 Embedding 层。在 4 张 H100 80GB GPU 上跑完约 19 小时三阶段训练后,它在 8 个基准测试中拿到 5 项第一,平均分 49.68。在 FactKG 上,它用 108 倍的文档 token 压缩率跑出 84.33% 准确率,反超全量上下文的 80.43%;在 NarrativeQA 上更是用 16 个 token 替代了 67,385 个文档 token,实现 4,212 倍压缩。

Memorilla 三步注入管线:用 1.94 亿参数把文档库压成 16 个软 Token 1. 单次编码 Qwen3-Embedding-4B 冻结参数,增量免重算 全量文档入库 2. 按需交叉读取 1.94 亿可训练参数 2 层 8 头交叉注意力 提炼 16 个记忆槽位 3. 投影注入 冻结 Qwen3-8B 解码器 直接写入输入向量层 最高 4,212 倍文档缩减

跑分通杀背后的特训红利

只看主表分数,Memorilla 几乎把 Mem0(38.02)、LLMLingua-2(40.75)、xRAG(41.92)和 MemoRAG(47.52)轮流打了一遍。大模型处理外部知识,过去要么硬撑上下文窗口,要么像 RAG 和 Mem0 那样切碎文本再拼接,但容易漏掉跨文档的弱线索。Memorilla 走的是潜在记忆路线,让模型自己学会从全局向量里挑线索。

混入八个基准训练集联合微调后才上场的错位起跑线(示意图)
混入八个基准训练集联合微调后才上场的错位起跑线(示意图)
记忆方案核心机制每次查询文档 TokenFactKG 准确率PersonaMem-v28 项基准均分
Memorilla潜在软记忆注入1684.33%44.60%49.68
MemoRAG记忆模型引导检索78480.38%28.76%47.52
xRAG单 Token 投影压缩178.98%30.90%41.92
Mem0提取外部文本记忆21272.79%27.48%38.02

但我不太买账的是这场比武的起跑线。Memorilla 的三阶段训练里,前两阶段用了约 332 万条样本做预训练(分别耗时 6 小时和 4 小时),到了长达 9 小时的第三阶段,它直接把全部 8 个评测基准的训练集混在一起做了联合微调;在 PersonaMem-v2 和 PersonalizationV4 两个个性化榜单上,还各花约 25 分钟额外微调了 5 个 epoch。反观同台竞技的 Mem0 和 MemoRAG,用的是完全冻结的记忆写入模型,零微调直接上场裸考;作者重实现的 xRAG 也只训了 2700 万参数的桥接器。

用特训过的 1.94 亿参数去打零微调的通用基线,赢下比赛并不意外,只是读者很难分清这 49.68 的平均分里,究竟有几成归功于潜在记忆架构,又有几成来自下游训练集的监督信号。更何况在仅 324 个 token 摘要、总共 100 条测试样本的 PubMedQA 上,Memorilla 只拿到 59.00%,落后 LLMLingua-2 整整 10 个百分点,潜在空间压缩天然容易弄丢精确人名和细粒度字面信息的短板,在这里暴露得很彻底。截至 2026 年 11 月 14 日,开源仓库的 Issue #11 还在提醒,官方提供的基准运行器里依然缺失复现 Mem0、MemoRAG 和 xRAG 的对比脚本。


16 个 Token 只是门票,不是总账单

解码器端省下的每一分算力,都在后台换成了显存和预计算账单。

再看工程团队最关心的速度与成本。论文宣称在单张 H100 上处理 512 篇文档(约 128K token)时,Memorilla 端到端响应只要 0.74 秒,比全上下文的 19.9 秒 快 27 倍;换到单张 B200 GPU 上配合预计算缓存,检索 100 万篇文档只要 8.06 毫秒(开启 torch.compile 降至 5.0 毫秒),400 万篇文档也只需 32.8 毫秒。

十六个Token只是入场券,后台需付出80 GiB显存代价
十六个Token只是入场券,后台需付出80 GiB显存代价
表面轻量与后台总账:Memorilla 的真实系统代价 前端解码器账单(宣传口径) 16 Tokens 无论文档库多大,LLM 输入长度恒定 0.74 秒 vs 19.9 秒 128K 文档端到端响应快 27 倍 后台系统真实代价(附录实情) 80 GiB 显存 400 万文档 KV 缓存膨胀为原向量 4 倍 未开 Paged KV Cache 19.9 秒慢速基线在原生 HF 环境下测得

天下没有白吃的午餐,韩非子早讲过「冰炭不同器」,极致的轻量与全局的无损本就难以兼得。翻到论文附录 F 就会看到,那个慢达 19.9 秒的全上下文靶子,是在关闭了工业界标配的 Paged KV Cache、用原生 Hugging Face Transformers 硬跑 128,064 个 token(开启 YaRN factor 4)且最多只生成 32 个新 token 的极端设定下测出来的,甚至没有把常规 RAG 基线拉进来一起计时。至于 B200 上惊艳的百万级文档毫秒级响应,测试用的其实是随机生成的 Embedding,且只掐表算了 2 层交叉注意力模块本身的耗时,压根没算编码器和 Qwen3-8B 生成答案的时间。更关键的是,要把 400 万篇文档的读取延迟从 282.7 毫秒压到 32.8 毫秒,必须预计算交叉注意力的 KV 缓存,而这份缓存体积是原始向量存储的 4 倍,单这一项就要吃掉 80 GiB 显存。

这其实和早年数据库做内存索引是一笔同样的账,查询看着像零成本,是因为有人提前替你买了昂贵的内存条。

  • 风险.由于软 token 必须绕过词表、直接写进模型的输入 Embedding 层,这套方案天然与 GPT-4 或 Claude 等闭源黑盒 API 绝缘,且每个记忆模块都和训练时绑定的特定解码器锁死,哪怕你只是想把底座从 Qwen3-8B 换成别家模型,甚至升级同家族的新版本,都得重新准备 4 张 H100 跑完 19 小时的绑定训练。

所以短期内,Mem0 这类基于纯文本的记忆工具链根本不用慌,只要企业还在调闭源 API、只要业务场景还不能容忍人名和精确数字的丢失,文本检索就依然是刚需。Memorilla 真正打开的口子,是给那些手握自有开源模型权重、需要高频吞吐海量背景文档的团队提供了一条新路——用训练一个不到 2 亿参数的微型交叉注意力读取器,去替代动辄十几万 token 的上下文拼接。至于这条路能不能走成通用标准,先看社区把 vLLM 的 Paged KV Cache 打开之后,那 27 倍的端到端加速还能剩下多少,以及在完全没微调过的陌生任务上,这 16 个软 token 到底能记住几成真东西。