评估 · 2020
忠实度
单独检查答案是否被给出的资料支持,而不是只看答得像不像。
要解决的问题
答案可能流畅、甚至碰巧正确,但并没有使用检索到的段落,或者把资料里没有的话写了进去。
相对前一代的变化
开放域问答长期只看最终答案对不对。忠实度问的是:这句话能不能从给定上下文里推出来。
做法
Maynez 等人在摘要里区分了忠实于原文和事实本身正确。RAG 里通常把答案拆成主张,再判断每条主张是否被检索段落支持。完整验收还要把检索是否找对、答案是否扣题和最终任务结果分开记录。RAGAS 后来把这件事做成了不用标准答案的自动指标。
局限
自动评判本身也是一个模型,会把「支持」判错。忠实于一段错误资料,仍然会得到错误答案。
在链路中的位置
不改变检索链路,用来验收生成结果有没有越过资料。
详解
「详解」根据 Datawhale《All-in-RAG》 的 RAG 系统评估 改写,有删节和重组,未包含原教程的代码、图片和练习。原教程与本节详解均按 CC BY-NC-SA 4.0 许可提供:使用时需署名并标明修改,不得用于商业目的,再次改编须以相同许可共享。
把检索、依据和回答分开打分
RAG 三元组提供三个诊断问题。上下文相关性问检索回来的材料是否和问题有关。忠实度问答案中的说法能否从这些材料推出。答案相关性问最终回答是否直接、完整地回应了原问题。
三者不能互相代替。答案可能严格依据一段无关资料,忠实度高但上下文不相关。它也可能忠实于资料,却只回答了问题的一半。只有分开打分,才知道该改检索、改生成,还是改问题理解。
检索用精确率和召回率,回答用主张核对
有相关文档标注时,Precision@k 看前 k 个结果里有多少真正相关,Recall@k 看所有相关文档被前 k 个找回了多少。k 要和真正送进模型的块数一致。没有标注时,只能退到模型评判上下文是否相关,而这种分数必须抽查。
忠实度通常把答案拆成主张,逐条寻找支持它的句子。支持可以是蕴含,不必逐字重复。否定、数字、主体和时间是最容易被评判器放错的地方。
一次平均分不能指导修改
可重复的评估先确定本轮假设,例如提高关键证据召回或减少无依据句子。然后准备带类型和难度标签的问题,记录检索结果、答案、模型、提示词、参数、延迟和费用。每次实验尽量只改变一个变量。
结果要按问题类型切片,并回看低分样本。失败可能来自没检索到、检索到了噪声、模型添话、答非所问,也可能来自评判器本身。确认过的坏例子进入回归集,避免下一轮改动把已经修好的问题带回。