【AIGC】大模型面试高频考点-RAG系统评估
1. 检索模块
在RAG场景下,检索模块主要负责找到与查询相关的文档。检索指标评估包括:召回性能和排序性能。
召回性能
- Precision@K:在前K个检索结果中,有多少是相关的。
其中, rel(i)=1 如果第 i 个结果是相关的,否则 rel(i)=0 。
- Recall@K:在前K个检索结果中,检索到的相关文档的数量占总相关文档数量的比例。
其中,R 是相关文档的总数, rel(i)=1 如果第 i 个结果是相关的。
- MAP (Mean Average Precision):计算多个查询的平均精度(AP)来衡量检索排序性能。Average Precision (AP) 是 Precision@K 的平均值,但只计算在出现相关文档的位置的精度。
即,只有当我们检索到一个相关文档时,才计算 Precision@K。
- mj 是第 j 个查询到的相关文档总数。
- Rjk 是对于查询 qj 的第 k 个相关文档的检索结果,直到检索到第 k 个相关文档为止。
MAP 是所有查询的 AP 的平均值。对于单条查询,|Q|=1
- |Q| 是查询的总数。
- AP(qj) 是查询 qj 的平均精度。
具体例子可参考[2]
错误发现率 (Error Discovery Rate, EDR):衡量在某个截断点 K 时,检索系统返回的前 K 个结果中错误文档的比例。计算方法如下:
rel(i)=1如果第 i 个结果是相关的,否则 rel(i)=0 。
1−rel(i) 表示第 i个结果是否为错误文档(即不相关的文档)。
排序性能
MRR@K (Mean Reciprocal Rank):相关文档的排名倒数的平均值。
其中, rankq 是对于查询 q,第一个相关文档的排名。
- NDCG@K (Normalized Discounted Cumulative Gain):同时结合了文档的相关性和它们的排名位置,用于衡量排序质量。
- 其中, DCGk 是折损累计增益, IDCGk 是理想排序下的 DCG 值。具体例子可参考[1]中的例子来理解NDCG评估指标。
2. 生成模块
传统评估指标
BLEU (Bilingual Evaluation Understudy)
通过计算生成的文本与一个或多个参考文本之间的 n-gram的重叠程度来衡量生成文本的质量。缺点是无法考虑句子的语法、语义和流畅性,对于词序和同义词缺乏敏感性。
ROUGE (Recall-Oriented Understudy for Gisting Evaluation)
也是生成文本和参考文本之间的 n-gram 重叠,但这里计算的是召回率,即生成文本中出现的 n-gram 中有多少出现在参考文本中。ROUGE有多个变种,比如ROUGE-N、ROUGE-L、ROUGE-W、ROUGE-S。
METEOR (Metric for Evaluation of Translation with Explicit ORdering)
考虑了同义词和句法结构,是对BLEU的改进。通过词级别的精确度和召回率、词序、词形变化(如词干化)、同义词等来综合评估生成文本的质量。
Bert Score
利用预训练语言模型(如 BERT)对生成文本与参考文本之间的相似度进行计算。
最新的评估指标
RAGAS中的一些指标:
- Faithfulness:衡量生成答案与给定上下文之间的事实一致性。该指标根据生成的答案和检索到的上下文计算,分数范围在0到1之间,得分越高表示真实性越高。直观上理解:如果生成的答案中的所有声明都能从给定的上下文中推导出来,那么该答案被认为是真实的。
- Answer Relevance:用于评估生成的答案与给定提示的相关程度。评分较低的答案是不完整的或包含冗余信息的,较高的分数表示相关性更好。该指标通过问题、上下文和答案计算。
- Context Precision:用于评估所有在上下文中存在的真实相关项是否排名靠前的指标。理想情况下,所有相关的部分都应出现在排名的顶部。该指标通过问题、真实情况和上下文计算,分数范围在0到1之间,得分越高表示精确率越高。
- Context Utilization:上下文利用率类似于没有参考的上下文精确度指标。上下文利用率是评估所有与答案相关的项目是否在上下文中排名靠前的指标。理想情况下,所有相关的部分都应出现在排名的顶部。该指标通过问题、答案和上下文计算,分数范围在0到1之间,得分越高表示精确率越高。
- Context Recall:衡量检索到的上下文与标注答案的一致程度。该指标通过问题、标注答案和检索到的上下文计算,分数范围在0到1之间,得分越高表示性能更好。要从真实答案中估计上下文召回率,需要分析真实答案中的每个声明(claim),以确定它是否可以归因于检索到的上下文。理想情况下,真实答案中的所有声明都应可归因于检索到的上下文。
- Context entities recall:衡量根据上下文中存在的实体数相对于仅存在于真实情况中的实体数,检索到的上下文的召回率。简而言之,它是从真实情况中召回的实体的比例。此指标在基于事实的用例中非常有用,例如旅游帮助台、历史问答等。在这些情况下,我们需要覆盖这些实体的上下文。
- Noise Sensitivity:衡量系统在使用相关或不相关的检索文档时提供不正确响应的频率。得分范围为0到1,得分越低表示性能更好。噪声敏感度通过问题、真实情况、答案和检索到的上下文计算。
- Answer semantic similarity:评估生成答案与标注答案之间的语义相似性。该评估基于真实情况和答案,得分范围为0到1,得分越高表示生成的答案与真实情况的对齐度更好。
- Answer Correctness:直接评估答案的准确性,指答案在事实性和逻辑性上的正确。该评估基于真实情况和答案,得分范围为0到1,得分越高表示生成的答案与真实情况的对齐度更高,表示更好的正确性。
- Aspect Critique:评估系统在处理问题的不同方面(如技术细节、用户意图等)时的能力和效果。此外,用户可以根据特定标准定义自己的方面来评估提交内容,该评价是基于“答案”作为输入进行的。
其他论文的一些指标:
- QAEval [4] : 一个基于问题回答的度量,用于评估摘要的内容质量。首先从参考摘要中生成 QA 对,然后使用 QA 模型根据候选摘要回答问题。最终得分是问题被正确回答的部分。
- QAFactEval[5]:基于QA的事实一致性评价。
- QuestEval[6]:一种NLG指标,用于评估两个不同的输入是否包含相同的信息。
- RAGQuestEval[7]: QuestEval的一个变体,结合召回率和精确度两个维度来评估生成性能。
面对RAG难点挑战时的一些评估指标[9,10]
- 噪声鲁棒性(Noise Robustness):该指标用于评估模型在处理噪声文档时提取有用信息的能力。噪声文档是指与问题相关但不包含任何直接相关信息的文档。比如,对于“谁获得了2022年诺贝尔文学奖?”这个问题,关于2021年诺贝尔文学奖的报道就是一个噪声文档。
- 否定拒绝(Negative Rejection):评估模型在检索到的文档中不包含回答所需的关键信息时,是否能够正确拒绝回答问题。测试场景包括只有噪声文档的外部文档,期望模型能输出“信息不足”或其他拒绝信号,而不是提供不准确的答案。
- 信息整合(Information Integration):用于评估模型是否能够整合多个文档中的信息来回答复杂问题。例如,对于“ChatGPT iOS 应用程序和 ChatGPT API 是什么时候推出的?”这样的问题,模型需要从多个文档中提取信息来提供完整的答案。信息整合测试包含那些需要多个外部文档才能准确回答的问题。
- 反事实鲁棒性(Counterfactual Robustness):用于评估模型在面对包含已知事实错误的检索文档时,是否能够识别并忽略这些错误信息。测试场景包括模型本可以直接回答的问题,但提供的外部文档包含事实错误。
3. RAG评估基准与框架
(1)基准(Benchmark)
1. RGB:
RGB 基准的数据是从最新的新闻文章中生成问答实例,并通过搜索引擎检索外部文档以模拟真实世界的检索增强生成场景。该基准提供了英文和中文版本。RGB 评估 LLM 的四项关键能力:
- 噪声鲁棒性(Noise Robustness): 评估模型在处理包含无关或噪声信息的文档时,能否仍然提取出有用信息。
- 否定拒绝(Negative Rejection): 评估当检索到的文档不包含答案时,模型能否识别并拒绝生成误导性内容。
- 信息集成(Information Integration): 评估模型能否在回答复杂问题时,从多个文档中整合信息。
- 反事实鲁棒性(Counterfactual Robustness): 评估模型能否识别并处理包含错误信息的文档。
开源地址:
2. RECALL:[10]
RECALL 是由北京大学和腾讯微信 AI 团队联合开发的评估基准,专门用于评估大型语言模型(LLMs)在面对外部反事实知识时的稳健性。该基准包含两个主要任务:问答(Question Answering, QA)和文本生成(Text Generation)。在每个任务中,RECALL 提供一个包含反事实信息的上下文,模型需要在提供的正确和错误答案两个选项中进行选择。文中的结论:模型容易被错误的上下文误导,当其内在知识与提供的上下文内容相矛盾时,更容易产生质量较低的回复。通过提示词优化和推理干预等方法进行了尝试,但这些方法无法有效解决该问题。
3. CRUD-RAG [11]
CRUD-RAG 是由中国科学技术大学等发布的RAG中文基准数据集,用于全面评估RAG的性能。现有的评估基准大多集中于问答任务,忽视了其他的 RAG 应用场景。CRUD-RAG 基准基于 CRUD 操作(Create、Read、Update、Delete),将 RAG 的应用场景划分为四种类型:
- Create(创建): 针对需要生成原创、多样化内容的场景,例如诗歌、故事或代码生成。任务对应为文本续写任务,模型需要基于输入文本生成符合语境的延续内容。
- Read(读取): 涉及在知识密集型场景中回答复杂问题,例如问答、对话和推理任务。任务包括单文档和多文档问答,评估模型在知识检索和理解上的表现。
- Update(更新): 关注修正和纠正已有文本中的错误或不一致性,例如拼写、语法或事实错误的校正。任务为幻觉修改,模型需要基于检索到的外部内容对原始文本中的错误进行修正。
- Delete(删除): 涉及从庞大文本中提炼关键信息以生成简洁摘要,例如文本总结或简化。任务为多文档摘要生成,模型需要从多个相关文档中提炼关键信息生成简明摘要。
开源地址:https://github.com/IAAR-Shanghai/CRUD_RAG
4. CRAG [12]
CRAG 是一个综合的检索增强生成 (RAG) 基准测试集,由 Meta 提出,专门用于评估 RAG 系统在应对事实问答(QA)任务时的性能。CRAG 的设计弥补现有 RAG 数据集在多样性和动态性方面的不足。该基准测试集包含 4,409 个问答对,覆盖五个领域(金融、体育、音乐、电影和开放领域)和八个问题类别(不同维度)。CRAG 还模拟了网络搜索和知识图谱(KG)搜索的环境,通过模拟 API 为每个问答对提供来自搜索引擎和知识图谱的外部信息。
问题类型 | 定义 |
---|---|
Simple | 询问不太可能随着时间的推移而改变的简单事实的问题,例如一个人的出生日期和一本书的作者。 |
Simple w. Condition | 询问一些给定条件下的简单事实的问题,例如特定日期的股票价格和导演最近拍摄的特定类型的电影。 |
Set | 期望一组实体或对象作为答案的问题(例如,“南半球有哪些大陆? ”)。 |
Comparison | 比较两个实体的问题(例如,“谁开始表演更早,阿黛尔还是艾德·希兰? ”)。 |
Aggregation | 需要聚合检索结果才能回答的问题(例如,“梅丽尔·斯特里普赢得了多少个奥斯卡奖? ”)。 |
Multi-hop | 需要链接多条信息来组成答案的问题(例如,“谁在李安的最新电影中扮演角色? ”)。 |
Post-processingheavy | 需要推理或处理检索到的信息以获得答案的问题(例如,“瑟古德·马歇尔担任最高法院法官多少天? ”)。 |
False Premise | 带有错误介词或假设的问题(例如,“泰勒·斯威夫特在转向流行音乐之前,她的说唱专辑的名字是什么? ”(泰勒·斯威夫特尚未发行任何说唱专辑))。 |
(2)框架
1. RAGAS
RAGAS 是一个专为评估 Retrieval Augmented Generation (RAG) pipelines 而设计的开源框架。RAG 包括三个关键部分:查询、检索到的上下文和生成的回答。因此,RAGAS 关注三个主要评估指标:忠实度(Faithfulness)、答案相关性(Answer Relevance)和上下文相关性(Context Relevance)。忠实度衡量生成的回答是否忠实于提供的上下文;答案相关性评估回答与输入查询的相关性;而上下文相关性则考察检索到的上下文与输入查询的匹配程度。
开源地址:https://github.com/explodinggradients/ragas
2. ARES
ARES框架只需要数量级很小的一部分人工标注集(用于反映对应的领域内的问题),即可自动生成用于评估测试的问题。具体的判断步骤如下:
- 通过LLM生成有关语料的Query-Answer序列对
- 构建用于评估上述三个指标的model:使用上述的序列对分别对一个小的LM进行微调,这里的LM执行的都是判断工作,判断样本属于指标的正例还是反例。
- 使用评估模型:使用PPI提高评估效果,并根据少部分的人工标注集给出置信区间。
开源地址:stanford-futuredata/ARES (github.com)
3. AUTO-RAG-EVAL
该框架完全不需要依赖任何人工标注集,能够自动生成用于评估的测试问题,大大降低了评估的成本和时间消耗。通过使用项目反应理论(Item Response Theory, IRT),该方法可以自动优化测试问题集。IRT 通过对测试题目的质量和信息量进行评估,不断剔除对模型能力区分度不高的题目,使得剩下的题目能够更准确地反映模型在特定任务上的表现。在论文中,作者根据不同的认知能力对问题类型进行了划分,采用了布鲁姆修订的分类法(Bloom’s Taxonomy)对问题进行分类。不同类型的问题具有不同的认知复杂度,从而在不同的能力水平上能够提供不同的信息量,为评估 RAG 系统提供了更细粒度的评价。不足的是,这里面生成的都是选择题。
开源地址:https://github.com/amazon-science/auto-rag-eval
4. TruLens
TruLens 是由 TruEra 公司开发的一款开源工具,用于帮助用户评估基于大型语言模型 (LLM) 应用程序的质量和有效性。通过使用反馈函数,TruLens 能够以编程方式评估输入、输出和中间结果的质量,从而加快和扩大实验评估的范围。这使得 TruLens 能够应用于多种场景,包括问答系统、检索增强生成(RAG),以及基于agent的应用。和RAGAS一样,也是评估了忠实度、答案相关性和上下文相关性。
开源地址:https://github.com/truera/trulens
5. RAGEval
RAGEval 是由清华大学、北京师范大学、中国科学院大学和东北大学联合开发的开源框架,专门用于评估检索增强生成(RAG)系统在特定场景下的表现。RAGEval 从少量领域特定文档中总结出一个 schema(模式),捕捉领域内的关键信息,并据此生成不同配置的多样化文档用于后续问题的生成。此外,RAGEval 引入了三个新评估指标,以全面评估 LLM 生成的回答质量,包括:
- 完整性(Completeness):评估答案是否涵盖了问题的所有关键方面,确保回答的全面性。
- 幻觉(Hallucination):检测答案中是否包含虚假或不准确的信息,确保答案的真实性。
- 不相关性(Irrelevance):评估答案中是否包含不相关的信息,确保回答的集中和相关性。