答案相关性怎么算
answer_relevancy 采用反向生成思路:拿模型的答案让另一个模型去还原「它可能在回答什么问题」,再把这些还原问题与原问题比较相似度,相似度越高说明答案越切题。它衡量的是「问到点上了没有」,不评价事实是否正确,因此需要与忠实度一起看。
基本信息
| 衡量对象 | 答案是否切题,与事实正确性无关 |
|---|---|
| 计算方式 | 由答案反向生成问题,再与原问题比较相似度 |
| 输入依赖 | 问题与答案,不需要标准答案 |
| 取值范围 | 0 到 1,越高越切题 |
指标计算
指标计算
from ragas.metrics import answer_relevancy
from ragas import evaluate
res = evaluate(dataset, metrics=[answer_relevancy])
print(res["answer_relevancy"])使用要点
- 与忠实度成对使用:一个管有没有依据,一个管有没有答到点上
- 按问题类型分组统计,开放式问题的相关性得分天然偏低
- 答案过长时反向生成的问题会变宽泛,得分被稀释
- 把固定话术类回答(例如统一的拒答语句)单独剔除,避免拉低整体分数
- 指标变化要与提示词版本一起记录,否则无法解释波动
分数读法
| 现象 | 可能原因 | 处理方向 |
|---|---|---|
| 整体偏低 | 提示词让模型泛泛而谈 | 要求结论先行、紧扣问题 |
| 个别很低 | 问题含糊或多意图 | 先做查询改写与意图拆分 |
| 高但用户不满 | 答案切题却没有依据 | 配合忠实度指标与人工抽查 |
| 拒答样本偏低 | 固定话术与问题不相关 | 单独统计拒答率 |
常见问题
- 把该指标当作质量总评:答案避重就轻时得分低,但事实错误反而发现不了
- 答案冗长导致分数虚高:内容多但重点不突出
- 多意图问题只答了一部分:相关性看起来还行,完整性却不足
- 评测集问题本身表述不清,指标波动被误读为链路问题
冗长但切题的答案得分往往仍高:该指标对「答非所问」敏感、对「啰嗦」不敏感,需要配合长度与信息密度的检查。