弥合信任鸿沟: 粗粒度分解如何改善 AI 引用
在生成式 AI 飞速发展的今天,信任成为了新的货币。虽然我们惊叹于 GPT-4 或 Claude 等大型语言模型 (LLM) 的流畅表达,但一个挥之不去的阴影始终笼罩着它们的输出: 幻觉 (Hallucinations) 。 当 AI 基于长文档回答复杂问题时,我们如何知道它不是在胡编乱造?
行业标准的解决方案是归因 (Attribution) ——即引用来源。就像学生写论文一样,AI 应该指出源文档中支持其主张的确切句子。然而,说起来容易做起来难,尤其是当 AI 生成了一个综合了多个事实的长而复杂的答案时。
今天,我们将深入探讨一篇引人入胜的研究论文,题为 “Enhancing Post-Hoc Attributions in Long Document Comprehension via Coarse Grained Answer Decomposition” (通过粗粒度答案分解增强长文档理解中的事后归因) ,作者来自 Adobe Research。这篇论文解决了一个具体且棘手的问题: 粒度 (Granularity) 。 当 AI 生成一个复杂的句子时,我们该如何将其拆解以找到正确的证据?如果拆解得太细,我们会失去上下文;如果拆解得不够,我们就无法找到具体的证据。
研究人员提出了一种名为 粗粒度答案分解 (Coarse Grained Answer Decomposition, CoG) 的新方法,该方法利用用户问题的上下文,智能地将答案拆分为可验证的“信息单元”。
让我们来揭开它的工作原理,了解它为何重要,以及它是如何超越现有方法的。
1. 问题所在: “事后”归因的挑战
首先,让我们设定一下背景。我们要处理的是 事后归因 (Post-Hoc Attribution) 。
想象一下你有一个问答 (QA) 系统。你给它一份 50 页的 PDF 并问一个问题。系统生成了一个答案。事后归因 是指在答案生成 之后 发生的过程。它就像一个事实核查员,回顾答案和原始 PDF,以验证 PDF 中的哪些句子支持答案中的具体主张。
粒度困境
作者解决的核心挑战是 到底应该对什么进行归因?
- 场景 A (太宽泛) : 如果 AI 生成了一个段落,仅仅指向源文档中的整整一页是没有帮助的。
- 场景 B (太具体) : 如果我们试图验证每一个名词和动词 (细粒度) ,我们可能会找到“猫”这个词的证据,但无法证明这只猫实际上“坐在垫子上”。
- 场景 C (复杂性陷阱) : 答案通常很复杂。考虑这句话: *“To paint cast iron, you should first coat it with oil-based primer to create a smooth surface.” (要给铸铁上漆,你应该先涂上一层油基底漆,以形成光滑的表面。) *
这短短一句话包含两个不同的事实:
- 你必须使用油基底漆。
- 底漆会形成光滑的表面。
在源文档中找到能同时证明这 两点 的单个句子可能是不可能的。源文档可能在第 1 页提到底漆,而在第 2 页提到平滑效果。
现有的方法通常将答案视为单一的块,或者将其分解为不考虑问题上下文的“原子事实”。这导致了 归因不足 (遗漏引用) 或 过度归因 (引用了不相关的文本) 。
2. 解决方案: 粗粒度答案分解 (CoG)
研究人员引入了一个旨在解决粒度问题的流程。其核心思想简单而强大: 不仅仅是分解答案;而是要 基于问题 进行分解。
流程
如下图所示,该过程涉及将生成的答案通过“CoG 分解”步骤,然后再尝试寻找证据。

该流程主要有两个阶段:
- 分解: 将复杂的答案拆分为更小的“信息单元” (Information Units, IUs) 。
- 归因: 使用检索器 (Retriever) 或 LLM 为这些特定单元寻找证据。
为什么要“粗粒度”?
以往最先进的方法 (如 FActScore )专注于“原子事实”——即尽可能小的信息片段。虽然严谨,但原子事实往往剥离了将观点联系在一起的语义粘合剂。
Adobe 的研究人员提出了 粗粒度 (CoG) 分解。他们想要的“块”具有以下特征:
- 相关性: 它们实际上与用户的问题有关。
- 有意义: 它们本身可以作为独立的陈述。
- 上下文相关: 它们与问题相互指代。
问题的角色
这是这篇论文的“秘诀”。大多数分解方法只看 答案。CoG 则同时看 问题 + 答案 。
如果问题是 *“How do I paint cast iron?” (我该如何给铸铁上漆?) *,分解模型就会知道要关注 步骤 和 材料。如果答案包含像“这是一个很好的问题,这是我发现的内容……”这样的废话,CoG 知道要忽略它,因为它与问题无关。
下面是论文中使用的可验证性数据集的一个例子。注意红色的文字。系统需要足够聪明,不去 尝试为那些礼貌性的对话填充词进行归因。

负采样: 教 AI 不要 做什么
为了让 LLM 正确分解答案,研究人员使用了带有一点变化的 上下文学习 (In-Context Learning, ICL) 。 通常,提示词 (Prompt) 会提供“好”输出的例子。作者发现 LLM 在处理否定 (即像“不要做 X”这样的指令) 时很吃力。
与其只是告诉模型“不要创建重复的事实”,他们在提示词中提供了 坏信息单元 的例子 (负采样) 。
- 好单元: “The music video was filmed at Oheka Castle.” (音乐录影带是在 Oheka 城堡拍摄的。)
- 坏单元 (冗余) : “The song is ‘For You’.” (这首歌是《For You》。) ——如果答案已经是关于歌曲《For You》的,再次陈述这个事实就是无用的噪音。
3. 方法论: 深度剖析
让我们看看使这个系统工作的具体组件。
3.1 基于规则的分类器
使用强大的 LLM 分解每一个句子既昂贵又缓慢。作者意识到简单的句子不需要被拆分。
例如: *“Alex is an engineer.” (Alex 是个工程师。) * 这是一个单一的分句。分解它是在浪费时间。
为了解决这个问题,他们实施了一个基于语言规则 (词性标注) 的 分类器 。

别被这些符号吓跑了。翻译过来就是:
- \(S\) : 句子中的标签集合。
- \(N, P, V, A\) : 名词、代词、动词、冠词。
- 逻辑检查该句子是否本质上只是名词/代词/冠词的组合,且 至多有一个动词 (\(|S| - 1\))。
如果一个句子符合这些标准 (一个简单的独立分句) ,它就会跳过分解步骤,直接进入归因器。这个简单的过滤器在不牺牲准确性的情况下提高了效率。
3.2 归因器
一旦答案被分解为信息单元 (IUs) ,系统就需要寻找证据。论文探索了两种方法:
- 检索器 (Retrievers) : 传统的搜索算法 (如 BM25) 或密集检索器 (如 GTR, MonoT5) 。它们根据文档中的句子与 IU 的匹配程度进行排名。
- LLM: 要求像 GPT-4 或 LLaMA-2 这样的模型查看文档并选择证据。
3.3 贪婪合并
当使用检索器时,我们可能会为答案的不同部分得到多个“命中”。研究人员开发了一种 贪婪合并算法 (Greedy Merging Algorithm) 来整理这些结果。

该算法确保对于答案中的每条信息,我们都能抓取到得分最高的证据句子。如果多个信息单元指向同一个证据,我们不会列出两次。目标是得到一份干净、排序好的证据列表,覆盖整个答案且没有冗余。
4. 实验与结果
研究人员在两个数据集上测试了他们的方法:
- 引文可验证性数据集 (Citation Verifiability Dataset) : 来自搜索引擎 (Bing/Google) 的问题,答案带有行内引文。
- QASPER: 基于 NLP 研究论文的问题数据集,需要深厚的技术理解。
他们比较了三种场景:
- NIL: 无分解 (使用完整的答案句子作为查询) 。
- FActScore: 细粒度原子事实分解 (之前的基线方法) 。
- CoG: 提出的粗粒度、问题感知分解。
结果 1: 检索器配合 CoG 表现更好
下表 1 显示了使用标准检索方法 (BM25, GTR, MonoT5) 时的性能。

关键要点: 看一看 精确率 (P) 和 F1 分数。在所有指标上,CoG 都优于 FActScore。
- 在 *可验证性 (Verifiability) * 数据集上, CoG+MonoT5 达到了 0.62 的 F1 分数,而 FActScore 只有 0.55。
- 有趣的是, NIL (无分解) 在 QASPER 上表现相当不错。作者指出,QASPER 通常包含抽取式答案 (从论文中复制粘贴) ,所以拆分它们的帮助没那么大。然而,对于摘要式/生成式答案 (可验证性数据集) ,分解是至关重要的。
结果 2: LLM 成为最先进的归因器
当使用 LLM (如 GPT-4) 来寻找证据时,结果变得更加有趣。

关键要点: 使用 CoG 配合 GPT-4 打造了一个强大的系统。
- 在可验证性数据集上,CoG 的 召回率 (R) 跃升至 0.79 , 而 FActScore 为 0.69。
- 这表明,当我们为 LLM 提供更清晰、更具上下文的“信息块”时,它在文本中发现支持性证据的能力会大大增强。
为什么 FActScore 失败了?
作者对“原子事实”方法 (FActScore) 为何表现不佳提供了令人信服的分析。

如上图所示, FActScore (蓝色柱) 每个句子生成的分解数量 (超过 3.3 个) 明显多于 CoG (约 1.6 个) 。
虽然“更多”听起来像是“更详细”,但在检索中,“更多”往往意味着 噪声 。 通过将句子切成微小的原子,FActScore 稀释了语义含义,使检索器更难将查询与文档匹配。CoG 达到了“恰到好处”的平衡——既不太大,也不太小。
定性分析
让我们看一个真实的例子来感受其中的差异。
问题: “paint cast iron” (给铸铁上漆) 答案: “To paint cast iron, you should first coat it with oil-based primer…” (要给铸铁上漆,你应该先涂上一层油基底漆……)

在 表 3 (如上图 007 所示) 中,观察 CoG Decompositions 一列。它将句子分成了两个逻辑步骤:
- 涂上油基底漆。
- 底漆形成光滑表面。
再看 NIL-MonoT5 列 (使用整句话) 。它检索到了一个关于“用湿抹布擦拭”的句子,这是错误的上下文。 然而, CoG-MonoT5 正确检索到了关于“涂上油基底漆”的句子。
通过逻辑地拆分句子,CoG 允许检索器为特定指令找到 精确 匹配,而不是被复杂的复合句搞糊涂。
5. 消融实验: 什么才是真正重要的?
论文进行了几项“消融实验” (通过移除系统的部分组件来测试) ,以证明他们的假设。
“问题”的影响
一个主要的观点是,在分解提示词中包含 问题 是至关重要的。 表 4 比较了 CoG - Question (不看问题的分解) 与 CoG (带问题) 。

在 答案 中,第一句话是 *“Are you looking for information on how to paint cast iron?” (你在找关于如何给铸铁上漆的信息吗?) *
- FActScore 试图将其分解为事实: “此人在寻找信息。” (无用的事实) 。
- CoG - Question 也很挣扎,为介绍性文本创建了一个单元。
- CoG (标准版) 对该句子返回
[](空列表) 。它知道,在问题“给铸铁上漆”的语境下,礼貌的介绍句不包含任何可归因的事实。
这种选择性关注对于减少幻觉和处理时间至关重要。
对检索器分数的影响
研究人员还强调了分解如何修复“分数稀释”问题。

在这个例子中,原始答案句子包含多个引文 (BIBREF9, BIBREF10) 。
- NIL (无分解) : 检索器被混合的主题搞糊涂了,给出了较低的相关性分数 (-0.043) 。
- CoG: 通过隔离关于“WNUT16”的特定事实,检索器纯粹关注该主题,从而获得更好的相关性分数 (-0.021) 。 (注: 在这些模型中,分数通常是负距离,所以越接近 0 越好) 。
6. 结论与启示
论文 “Enhancing Post-Hoc Attributions in Long Document Comprehension via Coarse Grained Answer Decomposition” 为使 AI 值得信赖迈出了重要一步。
以下是给学生和从业者的关键要点:
- 上下文为王: 盲目地将文本分解为“原子”是适得其反的。通过在循环中包含 问题 , 我们生成的分解在语义上更加相关。
- 粒度很重要: 在整句和原子事实之间存在一个最佳平衡点。“粗粒度”单元保留了足够的可搜索意义,同时也足够具体以供验证。
- 规则带来的效率: 我们不需要把什么都交给 AI。简单的基于规则的分类器 (如这里使用的 POS 标注器) 可以过滤掉简单的句子,从而节省计算资源。
- 更好的输入 = 更好的检索: 无论你是使用标准搜索引擎 (BM25) 还是高级 LLM (GPT-4) ,提供干净、分解后的查询都能显著提高寻找证据的精确率。
随着我们迈向能够阅读整本书或法律知识库来回答问题的 AI 智能体,像 CoG 这样的方法将成为验证系统的支柱,确保当 AI 告诉我们某些事情时,它能拿出正确的凭证来支持。
](https://deep-paper.org/en/paper/2409.17073/images/cover.png)