FACTOR:不是每句话都值得同等对待——声明级风险感知的自适应事实验证
核心摘要
你有没有发现一个很奇怪的现象:大模型生成的传记读起来通顺流畅,但仔细一查,里面错得离谱的东西和完全正确的东西混在一起——出生年份错了、诺贝尔奖年份搞混了、虚构了一个根本不存在的大学职位。
现有的解决方案思路很直接:RAG 拿证据回来,然后用 NLI 模型逐条验证每个声明是否被证据支持。听起来没毛病吧?问题在于,几乎所有现有系统对所有声明都用同一套验证标准——不管这个声明看起来多靠谱或多可疑,一律过同样的门控阈值。这就像安检时对所有人都做同样严格程度的检查,既浪费资源又漏掉了真正该重点盯的人。
这篇来自 Areeba Hassan 等人的论文提出了 FACTOR(FACTuality-Oriented Risk-aware Verification),一个推理时的框架,根据每个声明的不确定性水平动态调整验证强度。高风险的声明(比如具体日期、机构名称)走更严格的 NLI 门控 + 多段落交叉验证;低风险的声明则轻量通过。在 FactScore 基准上,FACTOR 达到了 42.3 的分数(对比静态验证的 36.8),同时把验证调用从 194 次砍到 42 次——事实性提升的同时成本降了接近五倍。
坦率地讲,这不是那种"重新发明轮子"的工作,而是一个工程直觉非常漂亮的设计:把不确定性估计和验证路由结合起来,用最少的额外开销换取最大的事实性收益。论文的消融实验也做得比较扎实,能清楚看到哪个组件在驱动性能提升。
论文信息
| 项目 | 内容 |
|---|---|
| 论文 | Not All Claims Are Equally Risky — Adaptive Verification in Factual Long-Form Generation |
| 链接 | arXiv:2606.22474 |
| 作者 | Areeba Hassan, Arooj Kausar, Syeda Kisaa Fatima, Gibrail Islam, Mehwish Fatima |
| 提交日期 | 2026 年 6 月 21 日 |
| 类别 | cs.CL (Computation and Language), cs.AI (Artificial Intelligence) |
问题动机
大模型的"自信幻觉"
大语言模型生成长文本时有一个根深蒂固的问题:它不知道自己什么时候在编东西。生成一段关于居里夫人的文字,可能前半句说对了她获得诺贝尔物理学奖的事实,后半句就信口开河说她后来去了 MIT 当教授——语气同样笃定。
这个问题在知识密集型场景下尤为致命:医疗问答、金融报告、人物传记,任何一处错误都可能误导读者。
RAG + NLI 验证的现状与局限
目前的主流做法分两步走:
- 检索增强生成(RAG):从 Wikipedia 等外部语料库中检索相关证据段落,把它们塞进 prompt 让模型基于证据生成
- NLI 验证:用自然语言推理模型(如 DeBERTa-based cross-encoder)逐条判断每个原子声明是否被检索到的证据支持
这套流程确实有效——从 Table IV 可以看到,Zero-shot 生成只有 6.5 的 FactScore,加上 RAG 后涨到 19.7,再加上静态 NLI 验证进一步到 36.8。每一层都在改善事实性。
但这里有个被忽视的细节:静态验证对所有声明一视同仁。无论这个声明是在陈述一个显而易见的事实(如"居里夫人是一位科学家"),还是在抛出一个极易出错的精确信息(如"她于 1903 年获得诺贝尔奖"),NLI 模型都用同一个蕴含阈值去判断。
这就带来了两个问题: - 低风险声明的验证资源浪费:那些模型有把握说对的声明,其实不需要那么严格的验证 - 高风险声明的验证力度不足:模型最容易翻车的声明,恰恰应该接受更严苛的多重检验
"不是每句话都一样危险"
FACTOR 的核心洞察就藏在这个标题里:Not All Claims Are Equally Risky。不同的声明有不同的幻觉倾向,验证策略也应该因人而异。这个想法本身并不新鲜——风险分级在安全领域无处不在——但在 LLM 事实验证的场景里,把它系统化落地,这篇论文做得相当干净。
方法核心:FACTOR 是怎么工作的?
整体架构一览

图1:FACTOR 的完整推理流水线——从查询输入到最终输出,共四个阶段:混合检索、候选生成、不确定性感知验证、候选重排序
整个框架分为四个阶段,每个阶段的职责都很清晰:
第一阶段:混合检索
先用查询(实体名,如"Marie Curie")同时跑两路检索: - BM25:词法匹配,抓关键词重叠 - Dense Retrieval(all-MiniLM-L6-v2):语义相似度匹配
两路分数等权融合:
取 Top-K 段落后做实体感知过滤,每个实体最多保留 20 个段落(约 100 词/段),避免跨实体污染。
第二阶段:候选生成
把检索回来的证据段落放进 prompt,让 Phi-2 一次性生成 4 个候选传记。同一个 prompt,靠采样随机性产生不同输出。多候选的意义后面会看到——重排序阶段要从中挑最好的那个。
第三阶段:不确定性感知验证
这是 FACTOR 最核心的部分,又分为两步。
第一步:不确定性估计——给每个声明打"风险分"
FACTOR 用两个互补的信号来衡量每个声明的不确定性:
(1) Token 级熵 —— 衡量生成时模型对这个 token 有多大把握:
\(p_i\) 是分配给第 \(i\) 个候选 token 的概率。熵越高,说明模型在生成这个地方时越犹豫——越犹豫,出错概率越大。这个信号捕捉的是生成过程中的内部置信度。
(2) 语义一致性 —— 从同一个 prompt 再采样两次额外的续写,用 Sentence-BERT 计算嵌入相似度。如果三次采样在同一个声明上的表述差异很大,那大概率这个声明本身就是不确定的。这个信号捕捉的是跨采样的外部一致性。
两个信号归一化后等权组合:
\(U\) 就是最终的风险分,范围 [0, 1],越高越危险。
第二步:自适应 NLI 验证——按风险分级处理
有了 \(U\) 之后,每个声明被路由到三个等级之一的验证策略:
| 风险等级 | U 范围 | NLI 蕴含阈值 | 额外要求 |
|---|---|---|---|
| Low | U < 0.30 | 0.60 | 无 |
| Mid | 0.30 ≤ U < 0.70 | 0.75 | 无 |
| High | U ≥ 0.70 | 0.85 | 要求多个段落支持 |
低风险的声明轻松放行,中等的正常把关,高风险的不仅要更高的 NLI 阈值,还要求至少多个检索段落都支持才予通过。这就是"把验证力气花在最该花的地方"的具体实现。
验证器用的是 nli-deberta-v3-small,一个在 NLI 任务上表现优异的轻量级交叉编码器。
第四阶段:候选重排序
4 个候选 biography 全部验证完毕后,综合两个维度打分选优:
其中 \(\bar{e}\) 是平均 NLI 蕴含分数(事实性指标),\(f\) 是流畅性分数(基于困惑度 PPL 归一化),\(\alpha=0.6\) 优先保证事实性。得分最高的候选即为最终输出。
实验结果
实验设置
| 组件 | 选择 |
|---|---|
| 数据集 | FactScore 传记基准 50 实体子集 |
| 生成器 | Microsoft Phi-2(2.7B 参数) |
| NLI 验证器 | nli-deberta-v3-small(cross-encoder) |
| 嵌入模型 | all-MiniLM-L6-v2(sentence-transformers) |
| 证据源 | Wikipedia 2022 年 3 月快照 |
| 评估指标 | FactScore(原子事实支持率)、幻觉率、NLI 分数 |
| 硬件环境 | Kaggle T4 GPU(16GB VRAM) |
基线方法包括三个对照: 1. Zero-shot Gen.:纯参数化生成,无检索无验证 2. Standard RAG:检索段落前置到 prompt,无声明级验证 3. Static Constr.:检索 + 固定阈值 NLI 验证(无自适应路由)
主实验:事实性与效率的双重提升

图2:左图为按实体的 FactScore 分布,右图为幻觉率分布。FACTOR 在事实性上全面领先,同时幻觉率最低
先看主表的数据:
| 方法 | FactScore ↑ | 幻觉率 ↓ | 平均 NLI 分 ↑ |
|---|---|---|---|
| Zero-shot Gen. | 6.5 ± 9.9 | 93.5 | 7.5 |
| Standard RAG | 19.7 ± 17.6 | 80.3 | 22.4 |
| Static Constr. | 36.8 ± 19.8 | 63.2 | 38.2 |
| FACTOR | 42.3 ± 21.9 | 57.7 | 41.1 |
几个关键观察:
第一,每加一层都有明显收益。Zero-shot 到 RAG 涨了 13.2 个点(6.5→19.7),RAG 到静态验证又涨了 17.1 个点(19.7→36.8)。这说明外部证据和验证机制都是必要的,缺一不可。
第二,自适应路由带来净增 5.5 个点。FACTOR 在 Static Constr. 的基础上再涨到 42.3,提升幅度约 15%。考虑到两者唯一的区别就是有没有不确定性感知路由,这个增益完全来自"聪明地把验证资源分配出去"这件事本身。
第三,方差很大但趋势一致。注意标准差——FACTOR 是 ±21.9,Static Constr. 是 ±19.8。这意味着不同实体之间差异巨大,有的实体容易写好,有的很难。但 Wilcoxon 符号秩检验显示 FACTOR 相对于所有基线的优势都是统计显著的(p < 0.05)。
效率分析:验证成本大幅降低
这才是 FACTOR 最让我觉得有意思的地方——它在提升事实性的同时还省了钱。
| 方法 | 平均验证调用次数 ↓ | 每声明验证调用 ↓ | 生成时间(s) ↓ |
|---|---|---|---|
| Zero-shot Gen. | 4 | 4.7 | 4.9 |
| Standard RAG | 52.4 | 4.9 | 215.6 |
| Static Constr. | 194.0 | 20.9 | 522.8 |
| FACTOR | 41.9 | 4.9 | 251.0 |
Static Constr. 要做 194 次 NLI 调用——因为它对每个声明都要用固定的高阈值验证,还要做多段落交叉验证。FACTOR 只用了 41.9 次,减少了 78%。
原因很简单:大部分声明的风险分落在 Low 或 Mid 区间,走的是轻量或普通验证路径;只有少数真正可疑的声明才触发 High 等级的昂贵验证。

图3:横轴为总验证调用次数(成本),纵轴为 FactScore(效果)。FACTOR 位于理想象限(左上角):高事实性、低成本。Static Constr. 则处于高成本低效果区域
这张散点图把事情说得更直观。Static Constr. 在右下方——花了近 200 次验证却只拿到约 37 的分数。FACTOR 在左上方——不到 50 次验证就拿下了超过 40 的分数。
不过说实话有个地方我没完全想明白:FACTOR 的生成时间(251s)比 Standard RAG(215.6s)还慢一些,尽管验证调用少了很多。作者解释说是不确定性估计和多候选采样带来的额外开销吃掉了一部分收益。在实际部署中,如果对延迟敏感的话,这块确实需要优化。
流畅性不受影响
| 方法 | 平均困惑度(PPL) ↓ | FactScore ↑ |
|---|---|---|
| Zero-shot Gen. | 1.8 | 6.5 |
| Standard RAG | 6.1 | 19.7 |
| Static Constr. | 5.5 | 36.8 |
| FACTOR | 5.5 | 42.3 |
Zero-shot 困惑度最低但事实性最差——流畅性和事实性之间没有必然联系,模型可以非常自信地胡说八道。FACTOR 和 Static Constr. 困惑度一样(5.5),说明自适应验证并没有牺牲可读性,重排序中的流畅性项起到了保护作用。
消融实验:什么在驱动性能?
论文做了三组消融,每组都回答了一个具体问题。
不确定性信号:语义一致性是 MVP

图4:横轴为 FactScore,柱内数字为"FactScore | 验证调用数"。虚线为主实验采用的 Combined Equal baseline(46.4%)
| 配置 | FactScore ↑ | 验证调用 ↓ |
|---|---|---|
| Entropy only | 42.9 | 39.2 |
| Consistency only | 50.9 | 36.7 |
| Combined Equal (0.5/0.5) | 46.4 | 37.1 |
| Entropy-heavy (0.7/0.3) | 46.3 | 38.4 |
| Consistency-heavy (0.3/0.7) | 41.0 | 36.9 |
这个结果挺有意思的。单独用语义一致性反而拿到了最高的 FactScore(50.9%)——比两种信号组合还好。为什么?
我的理解是,语义一致性本质上是一个更强的"事后诸葛亮"信号:如果同一个 prompt 三次采样出来的说法都不一样,那基本可以断定模型在这个问题上确实拿不准。而 token 级熵反映的是生成时的瞬时犹豫程度,跟最终输出的实际准确性之间的关联相对弱一些。
但论文还是选择了等权重组合作为默认配置,理由是熵提供了路由稳健性——当一致性信号在某些边界 case 上失效时,熵能兜底。这是一个工程上合理的取舍:不求单点最高,求整体稳定。
阈值敏感性:默认设置偏保守了

图5:绿色柱为 FactScore,棕色柱为平均验证调用次数。四组配置对应不同的 Low/High 边界划分
| 配置 | Low/High 边界 | FactScore ↑ | 验证调用 ↓ |
|---|---|---|---|
| Very Tight | 0.10 / 0.40 | 36.9 | 37.5 |
| Tight | 0.20 / 0.50 | 41.4 | 37.0 |
| Default | 0.30 / 0.70 | 40.9 | 37.1 |
| Relaxed | 0.40 / 0.80 | 47.9 | 38.6 |
Relaxed 配置(0.40/0.80)拿到了全场最高 47.9%,比默认的 40.9% 多了整整 7 个点,验证调用只多了 1.5 次。
这说明默认阈值偏保守了——太多声明被错误地归类为 High risk,导致系统行为趋近于均匀验证,失去了自适应路由的优势。放宽边界让更多声明进入 Low/Mid 路径,反而释放了路由策略的价值。
看到这个数的时候我有点怀疑:47.9% 这个成绩如果作为主实验报告出来,会比 42.3% 好看很多。作者选择保守阈值可能是出于稳妥考虑,但如果要在生产环境中部署,我建议直接试 Relaxed 配置。
声明粒度:句子级优于原子级

图6:蓝色柱为平均声明数,棕色柱为平均验证调用数。句子级的 FactScore 更高且成本更低
| 粒度 | FactScore ↑ | 平均声明数 | 验证调用 |
|---|---|---|---|
| Sentence | 46.3 | 6.93 | 34.4 |
| Atomic | 41.5 | 7.60 | 35.9 |
原子级分割把每个句子拆成更细粒度的原子声明来逐一验证,直觉上似乎应该更精准。但实际上 Sentence 级别反而更好——FactScore 高了近 5 个点,验证调用还少了 1.5 次。
论文给出的解释很有道理:原子拆分会丢失上下文信息。比如"她于 1903 年获得诺贝尔物理学奖"这句话拆成多个原子事实后,每个原子独立验证时会丢失与其他原子的关联上下文,导致 NLI 判断准确率下降。保留完整的句子结构反而给了验证器更多的语义线索。
我的判断
这篇论文的亮点
工程直觉漂亮。"按风险分级验证"这个想法本身不算特别新颖,但把它在一个完整系统中干净利落地落地——混合检索 + 多候选生成 + 双信号不确定性估计 + 三级自适应路由 + 事实性-流畅性联合重排序——整套流水线设计得相当工整,每个模块的职责边界清晰,没有过度工程化的痕迹。
效率增益是真实且有说服力的。78% 的验证调用减少不是一个小数目,尤其当你考虑到每次 NLI 调用的计算开销时。对于那些需要在有限算力预算内提供高质量事实性保障的应用场景(比如自动新闻写作、企业知识库填充),这个方案有直接的实用价值。
消融实验做得扎实。三组消融分别回答了"哪个信号更重要"、"阈值怎么设"、"粒度怎么选"三个实际问题,而且结论都有反直觉之处——一致性单独最好、默认阈值偏保守、原子级不如句子级。这些发现对后续复现和改进都有参考价值。
需要警惕的地方
评估规模偏小。50 个实体、仅传记领域、只用 Phi-2 一个模型——这三个限制叠在一起,让我对 FACTOR 在更大规模、更多样任务上的泛化能力持谨慎态度。尤其是 Phi-2 只有 2.7B 参数,它的不确定性模式是否能推广到 GPT-4 级别的模型?论文声称"model-agnostic",但目前只验证了一个小模型,说服力不够。
FactScore 绝对数值不高。即使是 FACTOR 的最佳配置也只有 42.3%(Relaxed 阈值下 47.9%)。对比一下 FactScore 原始论文里的数据:ChatGPT 在同一基准上大约 58%。也就是说,加了全套自适应验证的 Phi-2,还不如不加任何验证的大模型基座。当然这不完全是 FACTOR 的问题——Phi-2 本身就不是专门为事实性优化过的模型——但它提醒我们:验证策略的边际收益受限于生成器本身的能力天花板。
缺少与同期工作的对比。2025-2026 年涌现了不少事实性增强工作(如 FAVA、FactCheckGPT 等),论文没有将它们纳入基线对比。虽然这些工作的设定不完全相同,但做一些粗略的对比至少能让读者定位 FACTOR 在整个技术版图中的位置。
默认参数非最优。消融实验显示 Relaxed 阈值(47.9%)和 Consistency-only(50.9%)都比默认配置好不少。主实验报告的是次优结果,这在学术上略显保守。
总体评价
这是一篇工程导向强、设计简洁、实验完整的工作。它解决的是一个真实的痛点(验证资源的浪费),方案足够简单以至于可以直接在现有 RAG 流水线上插入,效果也有数据支撑。它不是那种改变游戏规则的基础突破,但对于正在搭建事实验证系统的工程师来说,这篇论文提供的思路和方法论有很高的参考价值。
如果我也在做类似的事情,我会优先尝试的两个方向:把 Consistency 权重调高(甚至直接试 Consistency-only),以及放宽阈值到 Relaxed 配置。这两个改动零成本,但从消融来看收益可观。
参考资料
- Min et al. (2023). FActScore: Fine-grained Atomic Evaluation of Factual Precision in Long Form Text Generation. EMNLP 2023.
- SelfCheckGPT: 通过多次采样的一致性检测 LLM 幻觉。
- DeBERTa v3: 基于 Transformer 的自然语言推理模型。
觉得有启发的话,欢迎点赞、在看、转发。跟进最新 AI 前沿,关注我