长文档塞进大模型,最先撑爆的不是参数而是 KV 缓存——每多读一个 token,缓存就多一行键值对,内存占用和注意力计算成本跟着膨胀。过去几年的主流答案是「压缩」:丢掉不重要的条目,或者把缓存量化到低精度。清华 THUNLP 团队 10 月 14 日提交到 arXiv 的论文 Latent Compaction 给出了另一条路:不挑不扔,直接把 KV 缓存当作一个可训练的小神经网络,用测试时训练为每篇文档现学出一个紧凑缓存。
把缓存当神经网络,两阶段训练
方法分两步。初始化用三个信号挑出种子条目:重建重要性、教师注意力、键空间多样性。第一阶段让压缩缓存的注意力输出和 log-normalizer 逼近完整缓存的对应值,重建选中的条目全程固定;第二阶段通过从完整缓存模型蒸馏,端到端联合优化整个缓存。GitHub README 给出的默认训练计划是两个阶段各 1000 次更新。
两个约束贯穿始终:模型权重全程冻结,动的只有缓存本身;训练只用关于文档的通用提示词,完全不接触下游问题和答案。压缩后的缓存因此是「文档专属资产」——一次训练,之后反复用来回答大量没见过的问题。
32 倍压缩下的 96.7% 对 40.0%
论文在 RULER、LongBench 和 Phonebook Lookup 三个基准上与同预算压缩基线对比。论文报告的最亮眼数字在 RULER:32 倍压缩下取得 96.7% 的检索准确率,同预算的 KVZip+ 只有 40.0%。复现包相当完整——KVZip+、Attention Matching、SnapKV、PyramidKV 加一个文本摘要基线全部跑在同一个 runner 上,复现命令直接写在 README 里,Phonebook 实验覆盖 4096 到 32768 的上下文长度、2 到 256 倍的压缩档位。方法还跨模型规模与家族迁移,在 Qwen3 和 MiniCPM5 上都有检索增益,快速上手示例用的就是 Qwen3-1.7B。
代价与赛道位置
免费午餐不存在。这个方法要为每篇文档付出一次测试时训练成本(论文默认两个阶段各 1000 步),换来之后所有问题共享一个 1/32 大小的缓存。单次问答场景它是亏的;「一份长文档反复查询」的场景——客服知识库、合同库、代码库——摊销逻辑立刻成立。
放进赛道坐标:量化派押注表示精度,驱逐派(SnapKV 一系)押注选择启发式,Latent Compaction 押注的是缓存本身有可学习结构。测试时训练被热炒后,多数工作拿它增强推理,清华团队把它用在压缩上,给这条技术线找到了一个工程出口。代码以 MIT 协议开源,论文 19 页 21 图见 arXiv:2610.20582(https://arxiv.org/abs/2610.20582),仓库在 github.com/THUNLP/latent-compaction。
一句话收束:当缓存从模型的附属品变成可优化的对象,长上下文的成本公式就被改写了一项——剩下的问题只是,每篇文档值不值 2000 步训练。