用于 RAG 评估的自定义基于检索的度量,重点衡量生成的答案与检索到的来源之间的吻合程度。这些度量确保答案基于提供的文档,避免无根据的主张。它们通常分析生成的文本与检索到的内容之间的重叠,或验证答案的每个部分是否都能追溯到来源。对于开发者来说,这些度量有助于识别幻觉(包含捏造信息的答案)或未充分利用相关上下文等问题。
一种常见的方法是句子级别归因(sentence-level attribution)。这包括检查生成的答案中的每个句子是否能与检索到的文档中的某个句子匹配。例如,可以将答案分割成单独的句子,并使用精确字符串匹配、关键词重叠或嵌入(例如,使用 Sentence-BERT 计算余弦相似度)来与来源进行比较。另一种度量是覆盖率(coverage),它衡量实际在答案中使用的检索到的文档的百分比。如果系统检索了 10 个文档但只使用了 2 个,则覆盖率较低,这表明效率低下。ROUGE-L 或 BLEU 等工具也可以用于评估答案与来源之间的 n-gram 重叠,尽管它们可能会漏掉释义或重新排序的内容。
更高级的方法包括事实验证(fact verification)和上下文一致性检查(contextual consistency checks)。例如,一个度量可以从答案中提取事实陈述(例如,日期、名称),并使用命名实体识别(NER)和基于规则的匹配来对照来源进行验证。或者,您可以使用带标签的数据训练一个分类器来预测答案句子是否得到检索到的上下文的支持。对于细致的评估,结合多种度量效果最好:对关键事实进行精确匹配,对释义内容进行语义相似度检查,以及利用覆盖率确保对来源的充分利用。像 spaCy(用于句子分割)或 Hugging Face 的 evaluate
等库可以简化实现,让开发者无需重复造轮子即可测试这些度量。