文档应该住在哪里:上下文、表征还是参数里?
论文:*Where Should a Document Live: Context, Representations, or Parameters?* arXiv: 2609.17346(Amazon AGI)
论文:*Where Should a Document Live: Context, Representations, or Parameters?*
arXiv: 2609.17346(Amazon AGI)
一个实际的选择题
假设你有一个客服机器人,需要让它"记住"一万篇产品文档。你有三种选择:
1. 塞进上下文:每次回答时,把相关文档拼到 prompt 里(RAG) 2. 压成表征:把每篇文档编码成一个 KV-cache 前缀(Cartridge/Compaction),推理时拼接 3. 训进参数:用 LoRA 或全量微调,把知识"焊"进模型权重
三种方式各有优劣,业界也吵了很久。Amazon AGI 的一组研究者做了一件朴素但关键的事:在同一个模型、同一套数据、同一个评测上,把这三种方式正面对比一遍。
结果出乎意料——没有赢家,只有三个不同的失败模式。
实验设计:五数据集 × 五方法 × 多压缩率
研究者用 Qwen3-8B 作为基座,在五个数据集上测试:
- LongHealth:临床病人记录(多选,长文档 11.7K tokens)
- QASPER:学术论文 QA(抽取式,4.7K tokens)
- QuALITY:小说/非小说阅读理解(多选,5.7K tokens)
- FinQA:财报数值推理(数学计算,1K tokens)
- TechQA:IBM IT 支持文档(抽取式,1.5K tokens)
- ICL(上下文):把文档拼进 prompt
- Cartridge(表征-KV):文档编码成 KV-cache 前缀
- Compaction(表征-KV):另一种 KV 压缩方式
- LoRA(参数-低秩):低秩适配器
- MLP adapter(参数-MLP):MLP 适配器
- Full fine-tuning(参数-全量):全量微调作为上界
发现一:单文档场景,Cartridge 性价比最高
在单文档场景(只问一篇文档的内容),Cartridge(KV-cache 前缀)在大多数数据集上以最小体积达到最高性能。
以 LongHealth 为例:
- Cartridge 2× 压缩:83.2 分,54 MiB
- LoRA r=50:类似性能需要 509 MiB
- Full fine-tuning:略高,但 3072 MiB
但 Cartridge 不是无敌的。在 FinQA(数值推理) 上,Cartridge 2× 只有 50.7 分,而 Full FT 能到 70+。数值推理似乎需要更深的参数级整合。
发现二:多文档组合,所有方法都崩了
真正的惊喜在多文档场景。研究者把 k 篇文档的表征/参数组合起来(KV 拼接 / 权重平均),看性能随 k=1,3,5,10 的变化。
Cartridge 在 k=3 时性能暴跌。以 FinQA 为例:
- k=1:34.5 分
- k=3:4.9 分(崩盘)
- k=10:几乎随机
唯一能组合的是 Joint Training(联合训练):把 k 篇文档一起训练成一个适配器。但这就失去了"按需检索"的能力——你必须提前知道用户会问哪 k 篇。
这意味着:当前的知识注入方法,本质上都是"单文档优化"的。多文档组合是一个未解决的难题。
发现三:参数级注入会遗忘
研究者还测了"遗忘效应"——在注入新知识后,模型在通用基准(GSM8K、HumanEval、IFEval、MMLU)上的表现。
- Cartridge/Compaction(表征):几乎不遗忘,因为不动模型权重
- LoRA(低秩):轻量遗忘,r=8 时 MMLU 掉 1-2 分
- MLP adapter:严重遗忘,bottleneck=192 时 GSM8K 从 80 掉到 24
- Full fine-tuning:灾难性遗忘,所有基准都掉 10+ 分
论文原话:
"The low-rank constraint, rather than the number of parameters alone, as what accounts for preserving general capability."
发现四:压缩率对 Cartridge 几乎无害
Cartridge 从 2× 压缩到 100×,在 LongHealth 上只从 83.2 掉到 76.5。50 倍压缩,性能掉 8%。这是惊人的鲁棒性。
但 FinQA 是例外——从 50.7 掉到 22.1。数值推理对 KV 细节高度敏感,压缩就崩。
这个对比说明:KV-cache 压缩的损失不是均匀的。事实性 QA 能扛压缩,数值推理不能。这背后可能是:数值推理需要精确的数字位置编码,而 KV 压缩会模糊这些位置。
我的思考:知识注入的"三体问题"
这篇论文让我想到一个更深的框架。知识注入有三个维度的权衡:
1. 精度:知识被保留得多完整 2. 组合性:多份知识能否被同时激活 3. 持久性:新知识会不会冲掉旧能力
三种方法各自占据一个"角":
| 方法 | 精度 | 组合性 | 持久性 |
|---|---|---|---|
| 上下文(ICL) | 高 | 高 | 完美 |
| 表征(Cartridge) | 中 | 低 | 完美 |
| 参数(LoRA/FT) | 高 | 极低 | 差 |
但论文揭示了一个残酷的事实:这个交换比想象中昂贵。Cartridge 一旦进入多文档场景,组合性就崩了;LoRA 一旦多任务,持久性就崩了。
换句话说:当前所有"知识注入"方法,本质上都是在用 ICL 的某个维度换成本。没有 free lunch。
一个被忽视的洞察:联合训练是唯一出路?
论文里最值得玩味的发现是:Joint Training(联合训练)在多文档场景上显著优于 Merging(权重平均)。
k=3 时,Joint Training 在 FinQA 上 13.0 分,Merging 只有 4.9 分。k=5 时差距更大。
但 Joint Training 有个致命限制:你必须提前知道用户会问哪几篇文档。这破坏了"按需检索"的 RAG 范式。
这让我想到一个假设:也许"知识注入"本身是个伪命题。真正的知识——需要组合、需要交叉推理的知识——可能只能放在上下文里。参数和表征适合"技能"(skill)和"风格"(style),但不适合"事实"(fact)。
论文没有明说这个结论,但数据指向这个方向。
局限性
1. 只测了 Qwen3-8B:不同架构(MoE、Decoder-only vs Encoder-Decoder)可能表现不同 2. 数据集偏 QA:生成任务、对话任务未测 3. Cartridge 训练成本未充分讨论:虽然推理便宜,但编码每篇文档需要一次前向传播 4. 多文档组合只测了拼接/平均:更复杂的组合方式(如 attention-level 路由)未探索
结语
这篇论文的价值不在于给出答案,而在于把问题摊开了。知识注入不是"哪种方法最好"的问题,而是"你愿意牺牲哪个维度"的问题。
下次有人告诉你"RAG 已死,微调才是未来"或"Cartridge 完爆 RAG",你可以把这篇论文甩给他。数据会告诉他:没有银弹,只有权衡。
论文链接:https://arxiv.org/abs/2609.17346 HTML 版本:https://arxiv.org/html/2609.17346v1