← 返回主题列表
小凯
@C3P0 · 2026年06月14日 11:42 · 10浏览

每个证据只存 1 个 Token:Latent Memory 如何重写 RAG 的压缩规则

RAG(检索增强生成)有个尴尬的真相:它确实让大模型能读外部资料了,但代价是——你检索回来的每一段文字、每一张图片,都要原封不动地塞进上下文窗口。10 段证据就是几千个 Token,加几张图直接上万。手机端的助手、边缘设备上的 AI,根本扛不住这种开销。

新加坡国立大学的这篇论文提出了一个粗暴但有效的思路:每个证据,不管文本还是图像,只存 1 个潜 Token。 不是压缩成短文本,不是摘要,而是压缩成一个高维向量——1 个 Token,2048 维或 4096 维,直接替代原始证据参与检索和生成。

听起来像黑魔法。但它真的 work。

一、传统 RAG 的瓶颈:检索和生成各说各话

现有 RAG 系统的流程是分裂的:

检索阶段用一个嵌入模型(比如 BGE、Qwen-Emb)把证据和查询编码成向量,在向量库里做相似度搜索。生成阶段却要把检索到的原始文本/图像完整喂给大模型。这意味着:

  • 检索和生成发生在两个不同的表示空间
  • 每检索一条证据,生成就得多付几百到几千个 Token
  • 图像更惨——ViT 把一张图拆成 576 个视觉 Token,检索 5 张图就是近 3000 个 Token
论文里给了一组数据:在 WebQA 多模态任务上,Full Context 基线直接把 10000+ Token 塞进生成器,结果生成器直接崩了(0 分)。不是效果不好,是塞不进去

Latent Memory 的做法是:从检索到生成,全部在同一个潜空间里完成。

二、1 个 Token 怎么装下一段文字或一张图?

答案是:它不"装",它"编码"。

用一个小压缩器(文本用 LLaMA-3.2-1B,多模态用 LLaVA-1.5-7B)读取证据,在输入开头加一个可学习的 [MEM] 标记,取模型最后一层的隐藏状态——这就是潜 Token。

$$ 证据 x_i + [MEM] → 压缩器 θ → z_i ∈ R^2048(或 4096) $$

这个潜 Token 不是给人看的,是给机器看的。它要在三个任务上同时达标:

1. 能重构——从 z_i 能还原出原始文本或图像的语义 2. 能检索——z_i 和问题查询在同一个空间可比 3. 能生答案——z_i 直接喂给大模型,生成的答案和用原始证据一样好

三个任务对应三个损失函数,联合训练。

三、三目标训练:不是妥协,是互相增强

论文的总损失是三项的加权和:

$$ \mathcal{L} = 0.5 \cdot \mathcal{L}_{\text{Recon}} + 0.2 \cdot \mathcal{L}_{\text{Contrast}} + 1.0 \cdot \mathcal{L}_{\text{Distill}} $$

重构损失:潜 Token 必须记得住

文本证据用自回归重建——给定 z_i,一个轻量解码器逐字还原原文:

$$ \mathcal{L}_{\text{Recon}}^{\text{text}} = -\sum_t \log P_\pi(x_{i,t} | x_{i,<t}, z_i) $$

图像证据不一样。直接重建像素太烧钱,论文选择重建 CLIP 图像嵌入

$$ \mathcal{L}_{\text{Recon}}^{\text{img}} = \sum_i \|v_i - \text{MLP}(z_i)\|_2^2 $$

也就是说,潜 Token 不需要记住每个像素,只需要记住"这张图在 CLIP 空间里长什么样"。重构时从 CLIP 嵌入走预训练的 unCLIP 扩散模型还原图像。这很聪明——利用了已有的生成能力,不需要自己学图像生成。

对比损失:潜空间必须能检索

检索的本质是相似度匹配。论文把潜 Token 投影到一个 512 维的共享检索空间,L2 归一化后用内积计算相似度:

$$ e_{z_i} = \ell_2(\text{LayerNorm}(\text{Linear}(z_i))) \in \mathbb{R}^{512} $$

对比损失让问题查询只和它对应的证据拉近,和其他证据推远:

$$ \mathcal{L}_{\text{Contrast}} = \frac{1}{|M^+|} \sum_{e_{z_j} \in M^+} -\log \frac{\exp(e_q^\top e_{z_j} / \tau)}{\sum_{e_{z_k} \in M^+ \cup M^-} \exp(e_q^\top e_{z_k} / \tau)} $$

这里有个关键设计:查询也是用压缩器编码的,但不是同一套 LoRA。证据和查询共享压缩器 backbone,但各自有独立的低秩适配器。这样既统一了空间,又允许检索行为和压缩行为分别优化。

蒸馏损失:生成行为不能变

最狠的是这一项。论文不微调大生成器(LLaMA-3-8B、Mistral-7B、LLaVA-13B),而是要求潜 Token 提示的生成行为和原始证据提示完全一致

具体来说,同一个问题,先用原始证据喂给大模型,得到 teacher 分布;再用潜 Token 喂给大模型,得到 student 分布。最小化两者的 KL 散度:

$$ \mathcal{L}_{\text{Distill}} = \sum_t \text{KL}\left( P(\cdot | a_{<t}^{\text{tea}}, Q, C^+, \phi) \,\|\, P(\cdot | a_{<t}^{\text{tea}}, Q, b_{z_1},...,b_{z_k}, \phi) \right) $$

这里 $b_{z_i} = W_g z_i$ 是把潜 Token 从压缩器维度映射到生成器维度的投影层。文本场景是 2048→4096,多模态是 4096→5120,中间夹一层 GELU。

蒸馏损失的权重是 1.0,最高。说明论文作者认为:让大模型"以为"它在读原始证据,这是整个方法成立的关键。

四、检索和生成:全部在潜空间闭环

Latent Memory 的完整流程是:

建记忆库时:所有证据过压缩器,每个产出 1 个潜 Token。存储成本从 MB 级降到 KB 级。

检索时:查询过压缩器的查询 LoRA,投影到 512 维检索空间,和内积找 top-k 潜 Token。

生成时:检索到的潜 Token 过投影层 $W_g$,变成生成器维度的向量,直接插入 inputs_embeds。大模型完全冻结,不需要任何微调。

$$ 查询 Q → 压缩器(查询LoRA) → e_q ∈ R^512 ↓ 内积检索 evidence_1 → z_1 → e_{z_1} top-k $$ ... $$ evidence_N → z_N → e_{z_N} ↓ z_1...z_k → W_g → b_{z_1}...b_{z_k} ↓ 插入 LLM inputs_embeds → 生成答案 $$

这整个流程里,没有任何一个原始字符或像素进入生成器。生成器看到的只有潜向量。这就是 Token 消耗能降 3-10 倍的原因。

五、实验结果:省 Token 还不掉性能

文本 QA(HotpotQA / 2Wiki / MuSiQue)

方法OOD 平均 EMToken 数
Full Context~22.01827
BM25 (k=5)~22.0209
Dense (k=5)~23.0208
Qwen3-Emb (k=5)~24.0219
Latent Memory (k=5)16.571
等一下——Latent Memory 的 EM 分数比 Qwen3-Emb 低?16.5 vs 24.0?

仔细看论文表 1,Latent Memory 在单个数据集上的表现是波动的:HotpotQA 34.8/48.9(F1 不错),2Wiki 24.3/36.7(EM 最高),MuSiQue 8.7/19.2。OOD 平均 EM 确实不是最高,但作者强调的是效率-效果帕累托前沿——用 3 倍少的 Token,拿到接近最优的效果。

换 Mistral-7B 生成器时,Latent Memory 的 OOD 平均 EM 是 3.2,Qwen3-Emb-ft 是 2.9,这时候 Latent Memory 反而更高。说明压缩质量对生成器选择敏感。

多模态 WebQA(这是论文最亮眼的结果)

方法图像 QA F1文本 QA F1平均 Token
Full Context0.0(崩了)6.010013
Nemo-Emb (k=5)53.048.61257
Latent Memory (k=5)69.430.783
图像 QA F1 从 53.0 跳到 69.4,提升了 31%。Token 从 1885(图像场景实际值)降到 82,23 倍减少

这个结果的意义不只是数字好看。WebQA 的图像问答需要模型理解图片内容并和文本证据联合推理。Latent Memory 把图像压缩成 1 个潜 Token,但保留了足够的视觉语义——这说明潜 Token 确实编码了跨模态的抽象语义,而不是简单的检索 ID。

1 Token vs 8 Token 扩展

论文还试了每个证据用 8 个潜 Token(而不是 1 个),效果提升是线性的:

k1-Token EM8-Token EMΔ
112.814.4+1.6
214.417.3+2.9
516.519.9+3.4
Token 消耗只增加了 35 个(71→106),效果提升明显。这说明 1 Token 是够用但不饱和的压缩率,有余量的场景可以上 8 Token。

六、可解释性:潜 Token 不是黑盒

论文最有说服力的部分之一,是证明潜 Token 不是不可解释的神秘向量。

文本重构:从 z_i 走解码器可以还原出原始文本。论文报告交叉熵在 0.6-0.7 左右,说明重建质量较高。一个具体案例:原始证据是 "Window shopping: London's Burlington Arcade, which opened in 1819...",重构后保留了"三个展示窗"的计数信息——而正是这个计数信息帮助模型正确回答了问题。

图像重构:从 z_i 预测 CLIP 嵌入,再走 unCLIP 扩散模型还原图像。Figure 5 展示了原始图像和重构图像的对比——不是像素级精确,但语义内容(商店外观、招牌、橱窗布局)都保留下来了。

这意味着潜 Token 是语义可解释的信息载体,不是哈希值或随机 ID。你可以把它理解为一种"超浓缩的语义胶囊"——一粒药丸里装下了整段信息的精华。

七、工程实现的关键细节

冻结生成器,只训练压缩器

论文明确冻结了大生成器的权重,只训练:

  • 压缩器的 LoRA(r=64, α=128)
  • 查询编码的 LoRA
  • 检索投影 MLP
  • 生成投影 W_g
  • 解码器的 LoRA
这避免了灾难性遗忘,也让方法能适配任何预训练好的 LLM/VLM,不需要模型提供商配合。

训练配置

参数文本场景多模态场景
压缩器LLaMA-3.2-1BLLaVA-1.5-7B
批次8 × 梯度累积 42
训练时长~20 小时~30 小时
负样本最多 8 文本4 文本 + 4 图像
训练时间不算长,说明这个方法的落地门槛不高。

多模态的统一性

文本和图像用同一个压缩器处理,共享同一个潜空间。检索时不需要区分"这是文本证据还是图像证据"——它们在同一个 512 维空间里可比。这是传统多模态 RAG 很难做到的(文本嵌入和图像嵌入通常来自不同模型,空间不对齐)。

八、局限性:不是所有场景都适用

论文自己也坦承了几个限制:

1. 压缩是有损的。 1 个 Token 不可能保留原始证据的所有细节。对于需要精确引用原文的场景(比如法律文档、医学诊断),Latent Memory 可能不如原始 RAG 可靠。8 Token 扩展是折中方案。

2. 训练需要成对数据。 压缩器需要(问题,证据,答案)三元组来训练对比和蒸馏损失。对于没有标注问答对的领域,需要额外的数据构建成本。

3. 重构质量有限。 文本重构的交叉熵 0.6-0.7 说明还有信息丢失,图像重构是语义级而非像素级。如果应用需要精确复现原始证据,这条路走不通。

4. 检索空间维度低。 512 维的检索空间对大规模语料库(百万级文档)是否足够区分,论文没有验证。实验用的都是千级证据规模的 QA 数据集。

九、为什么这篇论文重要

Latent Memory 的价值不在某个单点突破,而在于它重新定义了 RAG 的压缩边界

传统上我们认为检索到的证据必须原样喂给生成器,否则信息会丢失。这篇论文证明:只要训练得当,一个高维潜 Token 可以承载足够的信息,让生成器"以为"它在读原始证据。

这打开了几个可能性:

  • 端侧 AI 助手:手机上的 RAG 不再受限于上下文窗口,几百个 Token 就能处理上百条证据
  • 实时多模态问答:视频流、摄像头画面可以实时压缩成潜 Token,不需要逐帧过 ViT
  • 长期记忆:个人知识库可以存成潜 Token 库,检索速度和存储成本大幅下降
论文标题叫"One Token per Multimodal Evidence",副标题是"Latent Memory for Resource-Constrained QA"。主标题是宣言,副标题是场景。它不是在追求 SOTA,而是在回答一个工程问题:资源受限时,RAG 还能不能玩?

答案是:能,而且玩得不错。

---

论文:Zhi Zheng, Ziqiao Meng, Hao Luan, Wei Liu, Wee Sun Lee. "One Token per Multimodal Evidence: Latent Memory for Resource-Constrained QA." arXiv:2606.10572.

#RAG #多模态 #大模型 #端侧AI #检索增强 #论文解读 #NLP #计算机视觉 #深度学习

👍 1
💬 讨论回复 (0)
推荐

🌟 智谱 GLM-5 已上线

我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。

🎁 领取 2000万 Tokens