88.RAG-Ragas评估机制(公式详解)

📅 2026/8/15 11:18:03
88.RAG-Ragas评估机制(公式详解)
内容参考于图灵AI大模型全栈Ragas是专门用来做RAG评估的并且它支持LLamaIndex但是新版Ragas兼容也并不好开源链接https://github.com/explodinggradients/ragas论文: https://arxiv.org/pdf/2309.15217Ragas评估指标有四个评估检索质量context_precision上下文相关性, 问题和检索内容的相关性也就是精确度context_recall召回性越高表示检索出来的内容与正确答案越相关也就是召回率评估生成质量faithfulness忠实性越高表示答案的生成使用了越多的参考文档检索出来的内容answer_relevancy答案的相关性Query是问题Relevantcontext是检索到的文档ContextPrecision是准确度也就是通过问题检索到的文档是不是正确的GroundTruths是我们事先准备的答案ContextRecall是召回率也就是检索到的文档跟我们提前准备好的文档是不是相关的Answer是大模型回复的答案Faithfulness是忠实度也就是回答的答案是不是跟检索的到的内容是相关的AnswerRelevance是问题和答案直接相关性faithfulness忠诚度通过它可以看出大模型有没有按照我们的文档进行回复答案它的公式中文被上下文支持的声明数 和 答案中的总声明数现在检索到了两个文档然后大模型给我的答案它会把答案拆分然后分别去问有没有证据证据就是检索到的两个文档就是说如果拆分后的答案能够在检索到的两个文档中找到相关内容它增加支持的分数现在有4个问题其中三个在检索到的两个文档中找到了证据被上下文支持的声明数就是3答案中的总声明数就是答案拆分的数量也就是43 除以 4 忠诚度如果忠诚度不高可以找回更多的文档也可以通过提示词限制让大模型必须按照我们给的文档来回答不可以自己乱编answer_relevancy答案相关性通过它可以看出大模型回答的答案跟我们的问题是不是相关的它的公式公式中字符对应的意思首先是下图的sim(q,qi)q表示我们提出的问题qi中的q表示大模型生成的问题i表示的是一个数字这个数字表示第几个比如大模型生成的第一个问题是 aaa第二个问题是ccc第三个问题是dddi是1也就是q1它就代表的是aaaq2表示的cccsim就是让q和qi做语义相似度计算也就是q和q1、q和q2、q和q3分别做语义相似计算然后是下图的符号这个像m的符号是求和符号中文叫西格玛它是希腊的大写字母i是一个起始位置n是结束位置它要配合上方的sim下图i1就表示第一个n的值是大模型拆分答案的数量sim是计算的语义相似度计算完会有读个相似度值连起来就是从第一个语义相似度值一直累加直到最后一个现在假设有三个语义相似度n的值就是3然后相似度的值分别是0.7、0.6、0.5从i开始下方的公式就是0.70.60.5这样的一个逻辑然后是下图的符号n是大模型通过答案拆分的数量这里是3然后就是1 除以 3 结果是0.33333带入到完整的公式中(0.70.60.5)*0.333结果是0.5994四舍五入是0.6就是在求平均数其实求平均数只需要(0.70.60.5) 除以 n就可以了但是这里的1除以n在乘以(0.70.60.5)是数学公式中标准的写法公式逻辑首先还是提问一个问题然后大模型回答答案然后大模型会通过答案生成多个问题拿着生成的多个问题去和我们提出的问题计算语义相似度然后每个生成的问题都会去和我们提出的问题计算语义相似度计算完成后取出平均值这个平均值就是答案相关性的值如果答案相关性很低可以通过问题重写、问题扩展把所有分片后的文档都提前生成对应的多个问题来解决context_precision精确度通过它可以看出通过问题检索出来的文档是否相关它的公式公式中文翻译它的逻辑首先我们提出问题然后检索出文档它会让大模型分别判断检索出来的文档是否与问题有关系然后现在检索出了4个文档排名第一的文档是不相关的排名第二的文档是相关的排名第三的文档是不相关的排名第四的文档是相关的相关的就得1分不相关就0分然后精确度它的计算逻辑0 除以 1 结果是0然后1除以2结果是0.5然后1 除以 3 结果是0.33然后2除以4结果是0.5然后现在得到了4个结果分别是 0、0.5、0.33、0.5这就得到了精确率K的内容然后它还要有一个权重计算就是说不相关的我们肯定不能要所以要把不相关的剔除掉相关就是乘以1不相关就是乘以0然后就是0 乘以 0 结果是 0然后0.5 乘以 1 结果是 0.5然后 0.33 乘以 0 结果是 0然后0.5乘以1结果是0.5最终的结果是0、0.5、0、0.5这4个结果然后对这个4个结果进行累加结果是1这个1就是上下文精准率的分子然后它的分母是和问题真行相关的数量不相关是0相关是1那它就是 01012它的分母就是2上下文精准率是1 除以 2 结果是 0.5通过这样的计算方式可以看出如果我们相关的文档排名不靠前它的得分是很低的如果排名第一和排名第二的换一下就变成了 1 0 0 0.51.5 除以 2 的结果是0.75这样评分就很高了如果它的分数很低它的优化逻辑就可以通过 重排或者更换向量模型来优化重排可以使用语义相似重排context_recall召回率检索到的内容和大模型回答的答案的相关性它的公式GT是英文Ground Truth的缩写翻译为标准答案两侧的竖线|...|是数学里的集合基数符号含义是「统计这个集合里的元素个数」GT sentences that can be attributed to context是标准答案里每一句话的内容都能在检索返回的上下文中找到依据、被上下文支撑的句子。上方三个连起来就是统计标准答案在检索的文档中找到的依据并统找到的计依据的数量我们会对标准答案进行核心内容拆分是标准答案整段内容里包含的句子总数量。看完下方的逻辑说明就能懂了中文翻译它的逻辑首先我要准备一个标准答案然后我们提出问题检索文档然后对标准答案的具体描述进行拆分然后利用大模型判断我们拆分后的答案是否在我们检索到的文档中如果在检索到的文档中找到了就得分找不到就不得分现在标准答案拆分出了4个核心内容第一个核心内容从检索到的文档中找到了依据这里就得分第二个也找到了第三个没找到第四个没找到现在就是1 1 0 0 结果是 2这个2就是 |GT sentences that can be attributed to context|的值Number of sentences in GT的值是4标准答案的数量2 除以 4 结果是 0.5上下文召回的结果就是0.5如果召回率很低可以通过增加召回数量然后再进行重排或者用混合检索、父子文档可以提高召回率