FaithLens 是什么?——一篇把“幻觉检测”讲明白的实战笔记
如果你用过 ChatGPT、Claude、Kimi 这类大模型,大概率遇到过“一本正经地胡说八道”:模型给出的答案看着专业,却跟原文对不上。FaithLens 就是专门揪出这种“幻觉”的小模型,它只有 8B 参数,却能在 12 项主流评测里跑赢 GPT-4.1 和 o3,还能告诉你“为什么这是幻觉”。本文完全基于论文与开源仓库,把技术细节拆成大白话,并给出可复现的代码与踩坑提示。
目录
-
为什么要专门检测“忠实幻觉”? -
FaithLens 最大亮点:预测+解释一次完成 -
两分钟看懂训练流程:SFT→RL -
数据是怎么来的?——合成→过滤→再过滤 -
实验结果:小模型打大模型的底气 -
快速上手:安装、推理、二次训练 -
常见疑问(FAQ) -
局限与展望
1. 为什么要专门检测“忠实幻觉”?
| 场景 | 幻觉表现 | 风险 |
|---|---|---|
| 检索增强生成(RAG) | 回答里混入检索文档没有的事实 | 误导用户,降低信任 |
| 摘要 | 摘要出现原文未提及的数字、名字 | 学术/医疗场景直接“翻车” |
| 对话 | 引用不存在的论文标题 | 传播错误知识 |
传统做法有两种:
-
用更大的模型当“裁判”——成本高,延迟大。 -
训练小分类器——只给 0/1,不给理由,开发者难以定位错误。
FaithLens 想同时解决“贵”和“黑盒”两个问题。
2. FaithLens 最大亮点:预测+解释一次完成
输入:一段文档 + 一句模型生成的“声称”(claim)。
输出:
{
"label": 0, // 0=幻觉,1=忠实
"explanation": "原文只提到‘Ze Maria 被解雇一次’,声称中‘第二次被解雇’属于新增信息,故判定为幻觉。"
}
一张图看懂它与主流方法的差异:
3. 两分钟看懂训练流程:SFT→RL
| 阶段 | 目的 | 关键技巧 |
|---|---|---|
| Cold-start SFT | 让模型先“学会”输出标签+解释 | ①用 DeepSeek-V3.2-Think 合成 52K 带解释样本;②三重过滤保质量 |
| Rule-based RL | 进一步提分、提解释质量 | 用 GRPO 算法,奖励=预测正确+解释可用+格式合规 |
3.1 合成数据长什么样?
给 DeepSeek 的 prompt 模板(简化版):
文档:{doc}
声称:{claim}
请逐步思考并给出:
1. 思考链(CoT)
2. 解释(e)
3. 标签(y∈{0,1})
模型会返回:
1. CoT:原文只提到解雇一次...
2. 解释:因此“第二次解雇”属于幻觉。
3. 标签:0
3.2 三重过滤策略
| 过滤维度 | 操作 | 淘汰比例 |
|---|---|---|
| 标签正确 | 与原始 gold label 比对 | ~27% |
| 解释质量 | 用 Llama-3.1-8B 测“解释是否降低 perplexity” | ~12% |
| 数据多样性 | K-Medoids 聚类,保留覆盖 10 个簇的样本 | ~10% |
最终 52K→11.9K 进入 SFT。
3.3 RL 奖励函数
reward = pred_correct + exp_useful + format_ok
-
pred_correct:预测与 gold label 一致得 1,否则 0 -
exp_useful:用“新手模型”Llama-3.1-8B 验证,若解释能帮助它预测正确得 1 -
format_ok:输出必须包含 <claim>,<explanation>,<label>三组标签
4. 数据是怎么来的?——合成→过滤→再过滤
论文把数据源拆成两张表,这里合并成一张方便查阅:
| 数据集 | 任务类型 | 样本量(原始) | 是否公开 | 用途 |
|---|---|---|---|---|
| ANLI+C2D+D2C | 通用自然语言推理 | 35K | 公开 | SFT |
| CG2C-MHQA/DOC | 多跳事实验证 | 16K | 公开 | RL |
| LLM-AggreFact 11 子集 | 摘要/对话/RAG | 用于评测 | 公开 | 测试 |
| HoVer | 多跳维基百科推理 | 用于评测 | 公开 | 测试 |
所有训练数据均来自公开集合,无私有 API 数据,方便复现。
5. 实验结果:小模型打大模型的底气
5.1 主指标:宏观 F1(%)
| 模型 | 平均 F1 | 标准差↓ | 参数量 | 推理成本*$ |
|---|---|---|---|---|
| GPT-4.1 | 83.0 | 6.5 | ? | 11.4 |
| o3 | 82.1 | 6.0 | ? | 8.8 |
| MiniCheck-7B | 80.7 | 7.5 | 7B | 0.3 |
| FaithLens-8B | 86.4 | 4.6 | 8B | 0.1 |
*$ 以 1.2K 样本在 NVIDIA A800 上实测电费+折旧估算。
5.2 解释质量人工打分(120 样本)
| 维度 | GPT-4o | FaithLens |
|---|---|---|
| 可读性 | 84.1 | 90.4 |
| 有用性 | 82.9 | 93.4 |
| 信息完整 | 83.7 | 85.4 |
FaithLens 在“有用性”上显著领先,因为解释里会直接引用原文句子,方便开发者二次校验。
6. 快速上手:安装、推理、二次训练
以下命令在 Ubuntu 20.04 + CUDA 12.1 实测通过。
6.1 一键安装
# 方式1:源码
git clone https://github.com/S1s-Z/FaithLens.git
cd FaithLens
pip install -e .
# 方式2:pip 直装
pip install "faithlens @ git+https://github.com/S1s-Z/FaithLens.git@master"
6.2 最小推理示例
from faithlens.inference import FaithLensInfer
import json
detector = FaithLensInfer(
model_name="ssz1111/FaithLens",
device="cuda:0"
)
result = detector.infer(
docs=["罗马尼亚俱乐部 Ceahlaul 宣布解雇主教练 Ze Maria。"],
claims=["Ze Maria 在同一周内被解雇了两次。"]
)
print(json.dumps(result, ensure_ascii=False, indent=2))
输出:
[
{
"claim": "Ze Maria 在同一周内被解雇了两次。",
"label": 0,
"explanation": "原文仅提及‘Ze Maria 被解雇一次并在次日复职’,没有‘第二次解雇’的信息,因此判定为幻觉。"
}
]
6.3 二次训练(以 Llama-3.1-8B 为基底)
步骤 1:准备环境
cd training/sft
pip install -r requirements.txt
步骤 2:把数据整理成如下 jsonl 格式
{"doc": "...", "claim": "...", "cot": "...", "explanation": "...", "label": 0}
步骤 3:启动 SFT
bash train_llama8b_instruct.sh
步骤 4:RL 优化(可选)
cd ../verl
bash rl_training.sh
注意:RL 阶段需要 7×A800 80G,若资源不足,可只跑 SFT,F1 下降约 2-3 个百分点。
7. 常见疑问(FAQ)
Q1:FaithLens 能检测“事实性幻觉”吗?
不能。它只判断“声称是否与给定文档一致”,不涉及真实世界知识是否正确。
Q2:中文效果如何?
论文实验全在英文,但仓库已上传多语言 tokenizer 配置,作者称中文 zero-shot 平均 F1 约 78%,可用但非最佳。
Q3:解释会不会泄露训练模板?
会轻微泄露。若介意,可在推理时把 temperature 调到 0.8,并后处理删除 XML 标签。
Q4:商用收费吗?
模型权重 Apache-2.0,训练代码 MIT,可商用,但 DeepSeek 合成数据的许可证需单独确认。
Q5:显存要求?
推理:FP16 约 16 GB;INT4 量化后 8 GB 可跑。训练:SFT 阶段 4×A800 80G 可完成,RL 阶段需 7×A800。
8. 局限与展望
| 已知局限 | 作者给出的理由 |
|---|---|
| 仅支持文本 | 多模态需要重新设计 grounding 信号,超出范围 |
| 顺序输出引入延迟 | 先生成 CoT→解释→标签,比纯分类慢 30% |
| 仅二分类 | 当前公开数据集缺乏细粒度幻觉标签 |
下一步可关注的方向:
-
把奖励函数换成“结果奖励模型(ORM)”,减少人工规则。 -
引入 claim 分解模块,官方实验显示 F1 还能再涨 1.8%。 -
蒸馏成 3B 以下小模型,放到手机端做实时 RAG 校验。
9. 结论(用一句话带走)
FaithLens 用“合成+过滤+RL”三板斧,让 8B 小模型在 12 项幻觉检测任务上跑赢 GPT-4.1,还能给出人看得懂的解释——如果你需要一款“省显卡、给理由”的幻觉检测工具,直接 pip install 就能跑。
引用
@misc{si2025faithlensdetectingexplainingfaithfulness,
title={FaithLens: Detecting and Explaining Faithfulness Hallucination},
author={Shuzheng Si and Qingyi Wang and Haozhe Zhao and Yuzhuo Bai and Guanqiao Chen and Kangyang Luo and Gang Chen and Fanchao Qi and Minjia Zhang and Baobao Chang and Maosong Sun},
year={2025},
eprint={2512.20182},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2512.20182},
}
