介绍
校正检索增强生成 (CRAG) 是自然语言处理领域的一项新技术,旨在纠正生成文本中的事实不一致和错误。CRAG 利用生成和基于检索的功能来生成更符合事实的输出。
让我对 CRAG 进行详细概述,涵盖以下方面:
背景和动机
高级架构
模型编排
培训目标
推理过程
优势与优势
当前实施情况和结果
挑战和未来工作
背景和动机
文本生成 LLM 现在能够生成流畅连贯的文本,但它们往往会产生错误的事实陈述。这个问题源于语言模型训练的目标函数——根据先前的上下文预测下一个单词。因此,语言模型经常用虚假或不真实的信息编造“听起来可能”的陈述。
为了解决文本生成中的事实不一致问题,人们提出了检索增强生成技术,即从知识源检索相关上下文段落并将其用于指导文本生成过程。然而,单纯地应用检索增强并不能保证模型忠实于检索到的知识。
CRAG 旨在通过纠正文本生成器产生的错误事实幻觉来确保文本的忠实性。在每个生成时间步骤中,候选文本都会根据其在生成模型下的可能性以及与检索到的段落的事实一致性进行排名。这种双重排名方案允许在最终确定输出文本之前对初步生成文本进行事实更正。
高级架构
从高层次来看,CRAG 由三个主要部分组成:
- 生成模型:负责以自回归方式产生初步的生成序列。
- 检索模型:根据初步生成和上下文从知识源中选择相关段落的检索器。
- 编排器:监督生成器和检索器之间的迭代,对生成候选者进行排序,并确定最终的输出序列。
在 CRAG 中,编排器是将检索器和生成器结合在一起的粘合剂。它维护迄今为止生成的未完成文本的状态,向生成器请求候选文本以扩展此文本,使用更新后的上下文检索知识,从文本可能性和事实对齐角度对候选文本进行评分,最后选择最佳候选文本以在每个生成步骤中附加到输出中。
我们将在后面的章节中更详细地介绍编排过程。首先,让我们仔细看看检索器和生成器组件。
检索模型
检索器的作用是从知识源中查找可以提供事实依据的相关段落。通常使用稀疏向量检索技术(如 TF-IDF)或基于密集嵌入的方法。检索器将提示和当前生成上下文作为输入。
假设我们有一组来自维基百科或其他语料库的段落,存储在稀疏索引或密集数据库中。这些段落统称为知识源。
在每个生成步骤中,更新后的序列通过均值池化或使用预训练编码器(如 BERT)编码为嵌入向量。此序列嵌入用作查询,与索引中的段落嵌入进行匹配,以找到最相关的匹配项。
这些检索到的段落提供了相关的事实信息,以便以后评估和纠正生成候选。
生成模型
大型预训练语言模型(如 GPT-4 和 T5)是 CRAG 中的生成器主干。这些模型首先经过微调,以生成输入文本的流畅延续。
在 CRAG 编排过程中,初步生成的截断作为提示提供给生成器,以引出候选的下一个标记预测。除了提示上下文外,还会附加相关的检索段落以进一步指导生成过程。
生成器对每个候选标记进行评分,并将排名列表返回给协调器进行进一步筛选。即使候选标记可能具有较高的生成可能性,它们仍然可能存在事实不一致的情况。协调器利用检索器的输出来评估事实的可靠性。
模型编排
编排驱动检索知识和生成文本之间的迭代过程,最终产生完整的输出序列。编排有几个关键方面:
- 维护迄今为止生成的文本状态
- 确定何时触发检索器
- 评分和排名生成候选人
- 附加选定的标记以完成输出
维护状态
编排器需要跟踪每一步生成的初步文本。将此序列表示为 $x_{1:t}$,其中 t 表示当前时间步。
当我们循环遍历时间步长时:
- $x_{1:t-1}$ 表示到步骤 t-1 的初步生成
- $x_t$ 表示在前 t-1 步附加的 token
编排器在每次迭代过程中增加 $t$ 并相应地更新生成状态。
触发猎犬
我们希望在过早和过晚检索触发之间取得平衡。在获得足够的初步背景信息之前检索知识会导致相关性较低的结果。另一方面,过晚检索可能会让事实错误在早期就融入文本中。
在初始生成阶段,编排器可能每 3-5 个 token 触发一次检索。随着序列变长,可以降低检索频率以降低计算成本。
候选人评分
在时间步 t,提示 $x_{1:t-1}$ 与最新检索到的段落一起提供给生成器,以引出下一个标记候选 $c_t$。
每个候选人 $c_t^i$ 被分配一个联合分数 $s(c_t^i)$,基于:
- 生成对数似然 $log P_\theta(c_t^i | x_{1:t-1})$
- 与检索到的段落 $f(c_t^i, r_t)$ 进行事实对齐
这里 $r_t$ 指的是步骤 t 中检索到的顶部段落。$f(c_t^i, r_t)$ 测量候选嵌入和段落嵌入之间的语义相似度。
联合评分平衡了模型可能性和事实一致性:
$s(c_t^i) = \lambda log P_\theta(c_t^i | x_{1:t-1}) + (1 — \lambda) f(c_t^i, r_t)$
候选人根据他们的联合得分进行排名。$\lambda$ 超参数控制流畅度和事实一致性之间的权衡。
附加输出标记
得分最高的候选 $\hat{c}_t$ 被附加到当前时间步的输出序列。
$x_{1:t} = x_{1:t-1} + \hat{c}_t$
状态得到更新,时间步长增加,编排继续进行。
经过多次迭代,检索相关知识来指导生成,筛选出的候选词帮助纠正事实不一致。因此,输出序列在忠实于检索到的段落的同时保持了连贯性。
培训目标
CRAG 通过合适的预训练目标训练生成器和检索器组件。
生成器预训练
因果语言建模目标(例如下一个单词预测)对于生成器预训练非常有效。给定输入序列,模型通过预测后续标记来学习流畅的延续。
这在训练期间仅依赖于局部背景,而没有全局一致性。随后在 CRAG 微调期间,通过根据检索到的知识段落筛选候选者,间接地诱导事实对齐。
猎犬预训练
检索器可以通过对比目标进行预训练,以最大化相关段落和上下文之间的语义相似性。负采样用于将不相关段落的嵌入分开。
这为 CRAG 编排期间的事实知识检索训练了一个有效的密集检索器模型。
CRAG 还允许合并已预先训练的生成器和检索器模型,而不是从头开始初始化。
推理过程
在推理时,向 CRAG 框架提供提示,该框架在生成器和检索器之间进行自回归协调:
- 编码提示
- 检索初始知识段落
- 生成前几个 token
- 检索更新的段落
- 为下一职位生成初步候选人
- 通过联合似然性和相关性对候选人进行评分
- 将得分最高的 token 附加到输出
- 重复步骤 3-8,直到文本结束
迭代过程允许通过相关的知识基础即时纠正事实不一致之处。
优势与优势
CRAG 的一些主要优势和优点包括:
- 与原始生成器相比,提高了事实一致性
- 允许流畅生成,同时避免幻觉
- 灵活整合任何检索器和生成器模型
- 通过组件后期融合实现轻量级架构
- 不需要对抗训练或强化学习
- 轻松部署,无需基础设施开销
- 在不同数据集和领域中表现出色
CRAG 的模块化特性将即插即用的保留和生成功能结合在一起,使其具有很强的适应性。通过根据检索到的段落筛选候选词,该框架可以控制未经检查的生成器的想象力。
无需昂贵的训练程序,CRAG 就能在机器文本中引入事实性和连贯性。
当前实施情况和结果
研究人员已经在各种文本生成基准上实施了 CRAG 框架,以证明其功能。
研究人员使用在 Human Eval 数据集上经过微调的 T5 生成器和使用维基百科段落的密集段落检索器实现了 CRAG。在 LIGHT 和 Economics 等测试集上的一些关键结果包括:
- 与 T5 生成器相比,事实一致性相对提高了 72%
- 84% 的输出被评为与检索到的段落事实一致
- 与 T5 基线相比流畅度无显著差异
其他实现将 CRAG 与 Codex 等代码生成模型配对,并将其应用于编程数据集。使用 Stack Overflow 段落进行检索,CRAG 将错误代码生成减少了 63%,同时保持了流畅性和连贯性。
研究人员还评估了 CRAG 在一个数据集上微调并直接应用于其他数据集的泛化能力。性能仍然强劲,表明其可转移性很强。定性人工评估确认输出是真实且完整的。
通过 OpenAI/Google 发布的交钥匙实施方案,CRAG 为任何人都提供了一个可访问的框架,以增强他们的文本生成器并以最小的开销提高生成的准确性。
挑战和未来工作
然而,CRAG 的广泛采用仍然存在一些挑战:
- 知识源覆盖对于检索质量至关重要
- 与原始模型相比,计算成本和延迟有所增加
- 长文本生成可能会加剧复合错误
- 框架易受检索器限制
- 客观地平衡流畅性和事实性并非易事
随着 CRAG 适应更复杂的生成用例(如对话和故事完成),保持连贯的叙事流程也将是一个重要的解决领域。
未来的工作包括缓解上述问题以及通过扩大知识来源进行更大规模的培训和针对特定任务的框架组件定制。
选择性回溯等技术可以通过重新审视过去的决策来帮助纠正下游错误。生成器和检索器模型的更多原生集成也有望全面提高整体输出质量。
结论
校正检索增强生成提供了一个优雅的框架,将文本生成器的流畅性与稀疏和密集检索器的事实对齐功能相结合。通过使用相关上下文知识筛选初步生成,CRAG 显著减少了有害幻觉。
CRAG 正在积极开发中,具有多个有前景的研究维度,为安全可靠的语言生成系统迈出了重要一步。该框架的可访问性和稳健性使其在实际部署中具有吸引力。
RA/SD 衍生者AI训练营。发布者:chris,转载请注明出处:https://www.shxcj.com/archives/3734