上下文里已有正确段落,模型仍会编造统计或把条件写丢。根因是生成目标没有「必须被证据蕴含」的约束。本方法先证据后结论,并用 Faithfulness/NLI 过滤。检索为空时应拒答,而不是靠模型补全。
本文属于 RAG 工程框架中的「4 生成与智能体编排」环节,聚焦「Grounded Generation(证据绑定生成)」方法。
定位
| 维度 | 内容 |
|---|---|
| 角色 | 生成侧的证据约束 |
| 输入 → 输出 | query + ctx → 仅含被支持 claim 的答案(否则拒答) |
| 默认组合 | RAGAS Faithfulness + 生成后 NLI |
| 何时不用 | 必须靠工具计算、ctx 本来就不该回答的题 |
核心机制
$$
\mathrm{Faithfulness}=\frac{|{c_i:\mathrm{supported}(c_i,\mathrm{ctx})}|}{|C|}
$$
实现路径与心智:提示强制先贴证据再写结论,生成后用 NLI/Faithfulness 过滤或重写无支撑 claim。底层心智:模型输出是待检验假说,不是事实。上下文为空应拒答。
优缺点
- 优点:降幻觉。
- 缺点:过严会拒答正确的同义改写。
契约与走通样例
输入
1 | {"query": "siRNA 浓度?", "ctx": "20 nM siRNA targeting GAPDH for 48 h"} |
中间量
草稿「20 nM,24 h」:浓度支持、时程不支持。过滤后只保留 20 nM,时程删除或改写为未知。Faithfulness 从 $0.5$ 到 $1.0$。
输出
1 | {"answer": "20 nM siRNA targeting GAPDH.", "unsupported_dropped": ["24 h"]} |
社区实现
RAGAS Faithfulness;TruLens groundedness。风险:LLM-judge 不锁温度则门禁抖动。
工程落地
最小可运行示例
复制为 .py 后直接运行(仅标准库)。教学用字面蕴含;生产换成 RAGAS Faithfulness / NLI 模型。
1 | """先草拟再按证据过滤 claim;空上下文或全不支持则拒答。""" |
参数
| 参数 | 起点 | 影响 |
|---|---|---|
| NLI 阈值 | 偏严 | 过严误杀同义 |
| 空 ctx | 拒答 | 禁止补全 |
失效—信号—螺丝
- 有证据仍编造:螺丝:后置 NLI,不通过则重写。
- 同义被杀:螺丝:调阈值或加领域同义。
- 空检索仍作答:螺丝:短路拒答。
规模(100 篇生物学 PDF)
附加 NLI GPU 4–8 GB。每问 +0.5–3 s。