把检索和验证拆开做,R2VC 在 FEVER 跑出的准确率比基准高了 13.74%
很多人习惯直接用 LLM 做事实核查,但端到端 Prompt 最大的问题是把证据检索、推理和不确定性估计全部搅在一起。一旦模型一本正经地胡说八道,你根本分不清它是没搜到资料,还是搜到了但推理错了。R2VC 这种模块化架构(检索-推理-验证-校准)尝试把这些环节解耦,让每一步都可追溯,而且它引入了一个很关键的“弃权”机制,也就是模型在没把握时敢说不知道。
把流程拆成四个独立模块到底怎么跑
R2VC 不再依赖单一的 Prompt 完结,而是走了一套流水线:
一、混合检索(Hybrid Retrieval)
它在 Wikipedia 上同时跑稀疏检索和稠密检索。这种组合是为了防止单一检索方式漏掉关键证据。
二、生成候选结论(Candidate Generation)
这步用的是一个经过 SFT(监督微调)和 DPO(直接偏好优化)对齐的生成器。它不是直接给一个答案,而是产生一组多样化的结构化结论候选集。
三、外部验证(Verification)
这里用了一个外部的 NLI(自然语言推理)Cross-Encoder。验证器会对候选结论进行筛选,确保最终选出的答案是有证据支撑的,而不是模型凭空臆造的。
四、置信度校准(Confidence Calibration)
最后接一个轻量级的序列级校准器。它的作用是估计置信度,如果得分太低,模型会选择直接“弃权”,而不是强行给一个错误的答案。
性能提升和掉点细节
在 FEVER 数据集上的实测结果挺有意思,用 8B 参数量的模型作为底座,R2VC 的准确率比基准线提升了 13.74%。但通过消融实验可以看到,这个架构里最核心的增益点在哪里:
- 验证器的权重: 如果把“候选结论筛选”这一步删掉,FEVER 的准确率直接掉到了 76.24%。这说明 LLM 生成的初版答案里噪音很大,必须靠 NLI 验证器过滤。
- 校准的重要性: 如果去掉置信度校准,Brier score(衡量预测概率准确性的指标)几乎翻了一倍,达到了 0.161。这意味着没有校准时,模型对正确答案的自信度完全不可信。
依然没解决的死穴
虽然分数上去了,但 R2VC 的手动错误分析(分析了 250 个错误样本)揭露了一个残酷的事实:检索失败依然是事实核查的头号瓶颈。
最常见的情况是搜到了“错误的实体证据”。比如你要查 A 公司的财务状况,检索模块可能搜到了一个名字相似的 B 公司资料,后续的推理模块在这些错误证据的基础上进行分析,结果自然是错的。这证明了即便把验证和校准做得再精细,如果第一步检索进来的料是脏的,后面的模块也救不回来。
整体来看,这种模块化方案比端到端 Prompt 靠谱得多,起码它让你知道模型是在哪一步翻车的。
这种解耦太及时了,我之前用 LangGraph 强行写循环验证,结果死循环跑了 50 次还没出结果,直接把 Token 烧光了。