内容参考于图灵AI大模型全栈Ragas是用来测评RAG检索增强生成应用的框架它针对于检索Retriaeval和生成Generation进行测评开源链接https://github.com/explodinggradients/ragas论文: https://arxiv.org/pdf/2309.15217它的四个评估指标评估检索质量context_precision上下文相关性, 问题和检索内容的相关性也就是精准度context_recall召回性越高表示检索出来的内容与正确答案越相关评估生成质量faithfulness忠实性忠诚度越高表示答案的生成使用了越多的参考文档检索出来的内容answer_relevancy答案的相关性Ragas的评估角度与上一章里的不一样上一章里写的是最基础的东西只简单的相除、F1这并站不住脚完整的有一套体系它的评估方式Query是问题RelevatContext是检索的文档Answer是大模型的回答GroundTruths真实的答案它是看根据问题检索到文档的精准度是多少然后真实的答案和问题检索出来的文档召回率是多少然后检索到的文档和答案忠诚度是多少然后问题和对于的答案相关性是多少由这4个角度faithfulness忠诚度的公式如下忠诚度计算逻辑说明被上下文支持的声明数 除以 答案中的总声明数 的结果就是忠诚度的值答案中的总声明数现在大模型通过问题回答了4个答案然后检索出来2个文档然后让大模型把4个问题分别去文档中查找看看答案是否出现在文档中如果出现了就加1分不出现就是幻觉就不加分假设三个答案都在文档中出现了一个答案在文档中找不到忠诚度就是 3 除以 4 0.75忠诚度的分数就是0.75提高的方式是优化提示词让大模型严格按照提供的资料进行回复不让大模型乱说提高检索到的文档数量answer_relevancy答案的相关性答案的相关性计算逻辑说明首先提出问题大模型给回复答案然后用大模型回复的答案再让大模型根据答案生成多个问题在Ragas中是生成3个问题上方公式中的n就是生成的问题数量然后用生成的问题分别和我们给的问题进行相似度计算看看它们的相似度有多高上方公式中的simi下图是红框是求和符号就是把每个问题的相似度全部加起来然后使用1 除以 n 乘以这个相似度的和也就是做平均数计算这个平均数就是答案相关性的值也就是对总结就是把大模型给的答案生成多个问题然后用生成的问题分别与我们提的问题做相似度计算每个问题得到一个相似度后再进行做平均数创建预索引做问题扩展让大模型把我们提出的问题延伸出多个问题用多个问题去检索context_precision精准度精准度计算逻辑说明首先提出一个问题通过提出的问题会检索出文档假设检索出了4个文档然后这个4个文档分别让大模型去判断是否可以回答我们提出的问题比如我们提出的问题是 山东省在哪里省会是什么然后检索出来的文档分别是第一个文档山东省是‌孔孟之乡、礼仪之邦‌第二个文档山东省就在中国东边的沿海地带黄河往下游走的地方省会定在济南第三个文档章丘大葱第四个文档济南有大明湖然后这样给大模型我们提出的问题 和 一个文档当我们提出的问题和第一个问题给到大模型时大模型肯定没办法根据文档回答问题所以就是0分然后0除以 当前文档序号也就是0除以1结果是0当我们提出的问题 和 第二个文档给到大模型时它就可以根据文档回答问题了这时就是1分然后1除以当前文档序号也就是1除以2结果是0.5第三个文档没法回答所以不得分现在总分是1也就是1除以3结果是0.333、第四个文档里提到了济南大模型可能会根据这个关键字可以回答所以得分现在总分是2也就是2除以4结果是0.5这样可以发现越靠前的文档得分会越高然后拿出它们的结果也就是0、0.5、0、0.5再进行一个权重的计算比如0乘以0、0.5乘以1、0.333乘以0、0.5乘以1最终就得到了0、0.5、0、0.5这里面乘以的0可以理解为不相关、不相关的就乘以0剔除掉1表示相关然后00.500.5结果是1然后相关的文档是两个最终精准度的结果是1除以2结果是0.5精准度的结果是0.5这说明相关的文档没有靠前如果第二个文档和第四个文档分别排到第一和第二的位置就会变成 1除以1结果是12除以2结果是1然后11结果是2然后2再除以相关的文档数量也就是2也就是2除以2结果是1那么精准度的结果就会是1精准度的结果就会高很多精准度可以做重排、混合索引、优化向量模型、问题改写context_recall召回率召回率的计算逻辑说明现在有这 提前准备好的参考答案然后我们提出的问题通过我们提出的问题检索到的文档 三个东西然后对参考答案进行拆分拆分后让大模型在通过我们提出的问题检索出来的文档中找资料看看是否能在文档中找到跟精准度相似精准度我们提出的问题在文档中找召回率是用提前准备好的参考答案拆分后再去文档中找文档是通过我们提出的问题检索出来的假设参考答案拆分出了a、b、c、d4个然后通过我们提出的问题检索出了3个文档分别是q文档、w文档、e文档它的逻辑a去q文档中找相关性如果在q文档中找不到就去w文档中找如果找到了就得1分如果在w文档中找到了就不会往后找了直接得1分如果在q文档、w文档、e文档中都没找到就是0分现在a和b得分了总分是2分然后召回率的结果是 2 除以 4结果是0.5召回率的结果就是0.5这里的2是相关性得分4是参考答案拆分的数量召回率通过 增加检索的文档数量Topk、重排、混合索引、父子文档、问题改写