归因评估在测什么
归因评估检查答案中的每条陈述能否追溯到给定的检索片段:常见做法参考 RAGAS 的 faithfulness 与 Attributed QA,把回答拆成句子,逐句判断是否被上下文支撑。报告按「完全支撑、部分支撑、不支撑」分层统计,比只给一个总分更能定位问题类型——完全支撑比例低说明模型爱自由发挥,部分支撑比例高则往往意味着数字或条件被改写。
基本信息
| 评估对象 | 回答中每一句陈述与给定上下文的关系 |
|---|---|
| 分层标签 | 完全支撑、部分支撑、不支撑 |
| 常用方法 | RAGAS 的 faithfulness 思路、Attributed QA 类做法 |
| 输出形式 | 分层比例加典型样例,而不是单一分数 |
典型使用场景
- 上线前体检:确认回答里的数字与条件都来自检索片段
- 问题归因:区分是检索没给到材料,还是模型自行编造
- 回归对比:提示词或模型改动后看分层比例的变化
- 高风险场景抽检:医疗、法务类回答逐句核对出处
- 规则迭代:根据「不支撑」的典型样例优化提示词与校验规则
分层统计示例
分层统计示例
stats = {"full": 0, "partial": 0, "none": 0}
for sent in split_sentences(answer):
label = judge_attribution(sent, chunks) # full / partial / none
stats[label] += 1
print(stats) # 关注 none 的比例,并保存典型样例供人工复核
# 分层结果按批次汇总,便于观察改动的长期效果
分层含义与原因
| 标签 | 含义 | 常见原因 |
|---|---|---|
| 完全支撑 | 陈述能在上下文中找到依据 | 正常情况 |
| 部分支撑 | 有出处但细节被改写 | 数字、单位、适用范围被加工 |
| 不支撑 | 上下文中没有依据 | 模型编造或引入外部常识 |
| 无法判断 | 上下文未覆盖该主题 | 检索没命中,属召回问题 |
数字、条件与时间限定的错误最容易出现在「部分支撑」:引用存在但数值被改写,所以这部分样例要重点人工复核。
归因评估依赖判定器质量:无论是模型判定还是人工标注,都要先用一批人工标注样本对齐口径,再批量运行,否则分层比例只是看上去客观。