【AI大模型应用开发】【项目实战】22.RAG智慧问答项目-(十)RAG系统评估

【AI大模型应用开发】【项目实战】22.RAG智慧问答项目-(十)RAG系统评估
一.RAG系统评估工具目标了解RAG系统评估的指标掌握RAGAS框架的原理和使用方式1.概述当为某个真实线上系统开发了检索增强生成 (RAG) 应用,那么在此应用正式上线提供服务前,需要评估 RAG 的表现到底是怎样的,如果发现现有的 RAG 效果不够理想,可能需要一些新的 RAG 算法流程来改进,在这之前,就需要对 RAG 流程进行评估,得到评估指标,然后才能进行自动化对比,观察改进的流程是否真的有效2.RAGAS评估框架RAGAS (Retrieval Augmented Generation Assessment)一般称为 Automated Evaluation of Retrieval Augmented Generation,即检索增强生成的自动评估,Ragas是一个大模型评测框架,可以评估检索增强生成(RAG)的效果,帮助分析模型的输出,了解模型在给定任务上的表现Github地址: https://github.com/explodinggradients/ragasRAGAS的评估主要基于两个方向:检索部分生成部分那么针对不同的部分评估的指标也会有所区分,下面将分别介绍RAGAS评估框架所需的数据,评估指标,实际用例等(1).数据说明最开始的 RAGAs 在评估数据集时,不必依赖人工标注的标准答案,而是通过底层的大语言模型 (LLM) 来进行评估,所以只需要一个带有问题-答案对的评估数据集(QA 对),如:https://huggingface.co/datasets/m-ric/huggingface_doc 具体数据字段格式:question:作为 RAG 管道输入的用户查询,输入answer:从 RAG 管道生成的答案,输出contexts:从用于回答question外部知识源中检索的上下文ground_truths:question的基本事实答案,这是唯一人工注释的信息(2).评估指标评估检索(context)的指标:提供了上下文相关性(context_relevancy)和上下文召回率(context_recall),这些可以衡量检索系统的性能,即检索的段落是否相关评估生成(answer)的指标:提供了忠实度(faithfulness),用以衡量生成的信息是否准确无误;以及答案相关性(answer_relevancy),用以衡量答案对问题的切题程度,即模型生成的答案是否恰当1).上下文相关性 (context relevance)作用:量化检索结果与问题的匹配度,比率越高,表示检索到的上下文与问题的相关性越强比率越高,表示检索到的上下文与问题的相关性越强实现方式:为了估算上下文的相关性,用LLM从上下文 C(q) 中抽取对回答问题 q 至关重要的句子 S。提取的prompt如下:请从提供的{上下文}中提取可能有助于回答以下{问题}的相关句子。 如果没有找到相关句子,或者你认为问题无法从给定上下文中得到回答, 则返回短语“信息不足”。 在提取候选句子时,你不得更改给定上下文中的句子。然后,在RAGAS中,通过下面的公式计算相关性:案例:问题:“如何防御SQL注入?”检索上下文: 66.7% - 至少85%[①“输入过滤特殊字符(如单引号)”, ②“使用PreparedStatement预编译SQL”, ③“Redis缓存穿透解决方案”(无关噪声)]2).上下文召回率 (context recall)作用:衡量检索到的上下文(contexts)与真实答案(ground_truths)的匹配程度(评估检索是否覆盖问题所需全部关键点)该指标通过问题、标注答案和检索到的上下文计算,分数范围在0到1之间,得分越高表示性能更好要从真实答案中估计上下文召回率,需要分析真实答案中的每个声明(claim),以确定它是否可以归因于检索到的上下文,理想情况下,真实答案中的所有声明都应可归因于检索到的上下文实现方式:假设真实答案(Reference Answer)为: 真实答案: “2010年世界杯的冠军是西班牙。” “西班牙在决赛中以1-0击败了荷兰。” RAG检索到的上下文(Retrieved Context)为: 检索到的上下文: “西班牙在2010年世界杯的决赛中击败了荷兰。” “2010年世界杯的冠军是西班牙,西班牙队首次赢得世界杯。” 步骤具体实施: 声明1: "2010年世界杯的冠军是西班牙。" 输入给GPT-3.5:检索到的上下文 + 声明1。 GPT-3.5检查上下文是否包含“2010年世界杯的冠军是西班牙”。 结果:GPT-3.5发现上下文包含该信息,因此该声明“召回”。 声明2: "西班牙在决赛中以1-0击败