压缩 prompt 留得住答案、接不上证据链,GPT-5.5 也救不回这 8.8 分

Relevant but Incomplete: Referential Dangling as a Paradigm-Level Failure Mode in Hard Prompt Compression

Zhengpei Hu, Kai Li, Dapeng Fu, Xuechao Zou, Yuanhao Tang, Yue Li, Tengfei Cao, Jianqiang Huang

cs.CL, cs.LG

2026-08-05

指认硬 prompt 压缩的范式级缺陷「指代悬空」:独立打分会删掉桥接证据,留答案却接不上推理链;六款压缩器三到六成中招,补回证据准确率最多涨 34 分,连 GPT-5.5 都救不回 8.8 分。

这篇在解决什么

长上下文又贵又难用:注意力是平方开销,prefill 拉长,模型还会把中间的相关内容当空气(经典的「lost in the middle」)。硬 prompt 压缩是常见的省事办法:在文本进模型之前先按重要性打分,删掉低分的 token、句子或块,把输入压到一个预算里。LLMLingua、Selective-Context、Beaver 都属此类。

这套打分藏着一个没人正式戳破的假设:被选中的片段自己就能用。实际上常常不是。一个片段可能很重要,但它的意思依赖前文的一个定义、一个先行词,或者一条把查询和答案连起来的桥接事实。压缩器是独立打分的,完全可能把片段留下、却把它依赖的那一句删掉。作者给这个现象起了名字:指代悬空(referential dangling),留下的东西相关,但不完整。

图 1 的例子很直观。问题是「Tim DuBois 出生在哪个县」。压缩器留下了「Tim DuBois」和「Southwest City 属于 McDonald County」(答案字符串在),却删掉了「Tim DuBois 出生在 Southwest City」这条桥。答案肉眼可见,但从查询主体到答案的推理链断了。相关性检查能过,依赖性检查过不了。

方法

作者先把失效形式化。压缩输出存在指代悬空,当且仅当它保留了某个与任务相关的句子,却没有完整保留这个句子任何一个「充分支撑集」,也就是解读它、把它接进证据链所需的最少前文。

接着是一个干净的存在性结论(命题 1):即便评分是加性的(每个片段独立打分、预算内取分最高的),最优选择仍可能悬空,哪怕同样的预算下明明存在一个完整的选法。构造很简单,三个等价片段 {x, d, z},预算只够选两个,x 与任务相关且唯一需要的支撑是 d;只要打分 u(x) > u(z) > u(d),加性目标就会选 {x, z}(悬空),而 {x, d} 既能装下又完整。原因是加性目标里没有任何一项奖励「把片段和它依赖的前文一起留下」。这说明悬空是独立打分的内禀性质,不是某个压缩器写错了。

诊断层面,支撑标注不完整,作者用一个代理量测:被删定义句的实词,有多少能在保留文本里被覆盖到(阈值 0.5)。

实用部分是一个自动恢复管线。候选生成器从被删的文本里收集可能支撑保留内容的句子;一个 bert-base 分类器拿「保留句 + 候选句 + 问题」三元组打分,把最像「解读保留句所必需」的几句补回去(K=3)。训练对来自 HotpotQA:正例是共享实体、且其中一句是被删的标注支撑句;共享实体但不构成支撑的当难负例,不共享实体的当易负例。难负例的设计是关键,光看实体共现会被无关提及带偏。

结果

悬空不是个例。压缩比 r=0.30 下,Beaver 在三个多跳问答数据集上的悬空率 ρd 分别是 34.2%(HotpotQA)、53.5%(2WikiMultiHopQA)、54.2%(MuSiQue);完整保留所有标注证据的比例 ρe 只有 61.0%、30.7%、27.0%。人工抽查精度 95%,40 个被标记的例子里 38 个确实需要那条被删的段落。

换六种打分信号也躲不开:

压缩器打分信号悬空率
Beaverembedding 相似度(用查询)32.1%
PartPrompt句法解析树47.8%
Selective-Context自信息51.6%
LLMLingua-2学习型 token 分类器56.0%
DAC注意力58.7%
LongLLMLingua困惑度(用查询)59.8%

两个用查询的方法一个最低一个最高,可见「用不用查询」不是决定因素。被删的定义句往往打分并不低:在 Beaver 相似度下,定义句的平均显著度百分位是 92.8%,答案句 84.1%,都偏高。它们被删只是因为预算内总有别的东西分高了一点点。LongBench-v2 单文档问答里更彻底,80 篇文档篇篇至少有一条悬空引用。

同样预算下换个选法有没有用?有,而且很大。把被删的支撑段落补回来、同时删掉等量未被标注为支撑的段落,Qwen3-8B 在悬空子集上准确率涨 28.8 到 34.3 个百分点(p<10⁻⁴),补回了 Base 到完整证据差距的 88% 到 92%。补回后这些上下文平均反而更短,所以增益不是来自更多 token。

更强的答案模型吸收不了这个损失。MuSiQue 上,GPT-5.5 在压缩上下文里比完整证据上下文低 8.8 分,GLM-5.2 低 24.2 分。HotpotQA 上 GPT-5.5 看不出整体差异,但拆开是修了 4 个、坏了 4 个,不是真的免疫。

实用管线给的是小而实的增益。用首提及候选补句,Qwen3-8B 准确率涨 4.7 分(p=0.022),压缩比只从 0.30 变到 0.31;Mistral-7B 涨 6.5 分。如果把标注的支撑句也塞进候选集(oracle 上界),增益能到 8.0 分,说明现在的瓶颈在怎么找出该补哪句,不在分类器本身。

为什么重要

任何在 RAG、agent、长文档问答里用 prompt 压缩的人,都该知道一件事:你在用相关性打分省钱的同时,有 30% 到 60% 的多跳样本正被悄悄掐断证据链,而前端模型越大越救不回来。这篇的价值不在提出一个新 SOTA 压缩器,而在把一个行业里普遍存在、却没被正式命名和测量的隐疾拎出来:压缩该优化的不只是相关性,还有指代完整性。

对工程实践的直接影响是温和的。作者给的自动恢复法在 Beaver 加多跳问答上有效,但还不能直接套到 token 级压缩器(没法在碎片化文本里整段插句),也没迁移到其他压缩器。把它当一个诊断工具和方向指引更合适:短期,在多跳和检索任务上对压缩结果保持警惕,关键链路宁可少压;长期,等依赖感知的选择真正成熟。

局限与存疑

作者自己承认两点:自动恢复管线只在 Beaver 上调过,迁移到其他压缩器增益变小且不显著;候选构造是当前瓶颈。还有几点值得追问。测量用的是实词覆盖代理(阈值 0.5),不是对悬空的精确判定,会和真实情况有出入。整套诊断依赖多跳问答的支撑标注,单文档问答只能换一套首提及启发式,两套口径不直接可比。命题 1 是存在性结论,说明「可能悬空」,不直接回答「多频繁」,频率是后面六个压缩器的实验给的。补句的针对性也没被坐实:随机补同样多句子能涨 2.0 分,定向补 4.7 分,但两者差异在这个样本量下不显著(p=0.15)。最后,所有结论只在抽取式硬压缩里成立,soft、gist token、KV-cache 压缩是另一套失效形态,本文不覆盖。

术语

原文与代码

相关论文

全部论文解读