忠实度是什么
faithfulness 衡量答案中的事实性陈述有多少能由检索上下文支撑:先把答案拆成若干独立陈述,再逐条判断是否被上下文蕴含,有支撑的条数占比即忠实度。它回答的是「这段回答有没有依据」,与「这段回答对不对」是两件不同的事,低分通常指向幻觉或上下文误用。
基本信息
| 取值范围 | 0 到 1,越高表示越有据可依 |
|---|---|
| 输入依赖 | 答案与检索上下文,不需要标准答案 |
| 计算方式 | 拆分陈述 + 逐条判断蕴含 |
| 依赖模型 | 裁判用 LLM,结果受裁判模型与提示词影响 |
| 典型用途 | 回归测试、对比不同提示词与检索策略 |
单项计算
单项计算
from ragas.metrics import faithfulness
from ragas import evaluate
result = evaluate(dataset, metrics=[faithfulness])
print(result["faithfulness"]) # 0~1,越高越“有据可依”使用要点
- 上下文要与线上一致:用检索真正返回的片段,而不是原始文档整段
- 裁判模型固定版本:指标跨批次对比的前提是评分口径不变
- 按场景分层统计:制度类与操作类的忠实度水平往往差异明显
- 与召回指标一起看:召回不足时忠实度可能虚高,因为模型只是少说了很多
- 对高风险领域设阈值:低于阈值直接转人工,不要自动发出
分数读法
| 现象 | 可能原因 | 排查方向 |
|---|---|---|
| 忠实度低 | 模型补充了上下文外的内容 | 检查提示词约束与拒答出口 |
| 忠实度低且答案简短 | 检索片段本身不相关内容多 | 检查召回质量与切片 |
| 忠实度高但用户不满 | 上下文有错或版本过期 | 检查文档时效与过滤条件 |
| 分数波动大 | 裁判模型或评测集分布变化 | 固定版本并回看评测集构成 |
自由文本答案里出于常识补充的内容会被判为不支撑:忠实度衡量的是「依据上下文」,与「实际正确」并不等价,需要与答案正确性类指标配合使用。
上下文本身错误时忠实度反而可能很高:把忠实度当作唯一质量指标,会把错误文档带来的问题完全掩盖。