RAG 效果评估
RAG 效果评估
RAG模块拆分
代入产品经理需求沟通的视角回顾下:
改写(Query Rewriting):优化查询以便更好地与检索系统交互。机器人也需要做需求分析,改写约等于产品经理的需求分析,让你更好的理解用户的需求,需要做背景调研等工作。
检索(Retrieval):从一个大型的文档集合中找到与改写后的查询相关的信息。了解用户的需求后,需要检索一下产品经理自己的经验库,检索出 A、B、C 功能设计方案。
排序(Ranking):对检索到的文档或信息进行评分,以确定它们的相关性。方案给了,那么要做一些排序,可能 C 方案是最优的,排序=C>A>B。
生成(Generation):基于排序后的文档生成人类般自然的语言回答。然后方案确认后,需要生成需求文档进行业务评审了,业务(甲方爸爸)点头的话,甲方爸爸点赞后,产品经理就完成了这一轮次和甲方爸爸的对话了,可以接下一个需求了。如果甲方爸爸不满意,那么就要重新再从改写开始下一个轮次的 battle。
每次接触新概念的时候不要害怕,一下子觉得毫无头绪,如上述这个小技巧一样,可以把哪些看起来很陌生的名词,做一些转化,比如熟悉的产品经理需求沟通流程,先和这些陌生概念通过熟悉的方式交朋友,虽然这样的方式有时候会存在概念理解不够精准的情况,但是只要你对这个概念使用得足够多次,那么自然对概念的理解更为精准了,也是一步步迭代的过程。
各个模块的指标和指标的具体执行
改写模块
准确率 (Accuracy)
指标解释:准确率衡量改写的 Query 是否准确捕捉了原始 Query 的意图。
判断方法及计算:准确率可以通过人工评估获得,即由人类专家比较原始 Query 和改写 Query,并评分其准确性。此外,也可以使用自动化的语义相似度评估工具,如使用预训练的 BERT 模型进行语义编码,然后计算原始和改写 Query 之间的余弦相似度。
完整性 (Completeness)
指标解释:衡量改写后的 Query 是否包含了执行搜索所需的所有关键信息。
判断方法及计算:可以通过将改写的 Query 输入到搜索系统中,并检查返回的结果是否全面覆盖了用户的信息需求。具体的自动化方法可能包括从改写的 Query 中提取实体和概念,并与原始 Query 的实体和概念进行对比,确保关键信息未丢失。
语法正确性 (Grammatical Correctness)
指标解释:评估改写的 Query 在语法上是否正确无误。
判断方法及计算:自动化工具如语言检测工具(Grammarly API)或自然语言处理工具(如SpaCy或NLTK)可以用来检测和评分改写 Query 的语法正确性。
流畅度 (Fluency)
指标解释:评估改写的 Query 是否在自然语言处理上流畅。
判断方法及计算:可以通过使用统计语言模型来计算改写 Query 的困惑度(Perplexity)。Perplexity 越低,流畅度越高。此外,也可以利用GPT等语言模型生成的文本作为参考标准,通过专家评分来衡量流畅度。
查询效果 (Query Effectiveness)
指标解释:衡量改写的 Query 是否能够有效地提升检索系统返回相关结果的能力。
判断方法及计算:可以通过A/B测试,比较使用原始 Query 和改写 Query 对搜索引擎进行查询时,返回结果的相关性。相关性可以通过点击率(Click-Through Rate, CTR)或者用户满意度调查来衡量。
检索模块
准确率 (Precision)
指标解释:衡量检索到的结果中有多少是相关的。
判断方法及计算:
自动化计算:
Precision = (检索到的相关文档数量) / (检索到的文档总数)
工具/模型:可以使用测试集(已知哪些文档是相关的)来自动计算准确率。
召回率 (Recall)
指标解释:衡量检索系统能够找到多少比例的所有相关文档。
判断方法及计算:
自动化计算:
Recall = (检索到的相关文档数量) / (数据库中所有相关文档的数量)
工具/模型:需要一个带有标记的数据集来评估召回率。
F1 分数 (F1 Score)
指标解释:准确率和召回率的调和平均,是一个综合指标。
判断方法及计算:
自动化计算:
F1 Score = 2 * (Precision * Recall) / (Precision + Recall)
工具/模型:同样依赖于测试集的正确标注。
平均精确率 (Mean Average Precision, MAP)
指标解释:考虑到排名的准确率的平均值,对于每个查询,计算其精度@k的平均值,然后对所有查询求平均。
判断方法及计算:
自动化计算:计算每个查询的平均精确率,然后对所有查询结果的平均精确率取平均。
工具/模型:需要一个标注好的测试集,以及一个能够处理排名和相关性评分的评估工具。
排序模块
平均精确率 (Mean Average Precision, MAP)
指标解释:对于一系列查询,MAP 计算每个查询的平均精确率(AP),然后计算所有查询的 AP 的平均值。
计算方法:
对于每个查询,按照文档的相关性和排名计算精确率。
对每个查询点的精确率求平均,得到 AP。
对所有查询的 AP 求平均,得到 MAP。
正确率@K (Precision@K)
指标解释:在前 K 个检索结果中,有多少是相关的。
计算方法:
Precision@K = (前 K 个文档中相关文档的数量) / K
召回率@K (Recall@K)
指标解释:在前 K 个检索结果中,检索到的相关文档的数量占总相关文档数量的比例。
计算方法:
Recall@K = (前 K 个文档中相关文档的数量) / (数据库中所有相关文档的数量)
平均倒数排名 (Mean Reciprocal Rank, MRR)
指标解释:在一组查询中,每个查询的第一个相关文档的排名倒数的平均值。
计算方法:
对于每个查询,找到第一个相关文档的排名。
计算该排名的倒数。
对所有查询的倒数求平均,得到 MRR。
NDCG (Normalized Discounted Cumulative Gain)
指标解释:考虑到文档的相关性和它们在排名中的位置,NDCG 是一个衡量排名质量的指标。
计算方法:
计算每个位置的折扣累积增益(DCG)。
对 DCG 进行归一化处理,得到 NDCG。
排名损失 (Ranking Loss)
指标解释:在多标签排序问题中,衡量模型预测的排名与真实排名之间的平均配对损失。
计算方法:
对于每对文档,如果相关文档的排名低于不相关文档的排名,则计数。
计算所有不正确配对的比例。
错误发现率 (Error Discovery Rate, EDR)
指标解释:在某个截断点 K 时,错误排名的文档数量与前 K 个文档总数的比例。
计算方法:
EDR@K = (前 K 个文档中错误排名的数量) / K
这些指标可以使用自动化的信息检索评估工具或自定义脚本来计算,通常需要一个带有标记的测试集来确定哪些文档是相关的。在实际应用中,根据业务需求和特定场景选择最合适的指标。例如,如果用户更关心顶部的搜索结果,那么 Precision@K 和 NDCG 可能是更合适的指标。如果用户期望系统能检索到所有相关文档,那么 MAP 和 Recall@K 可能更为重要。
生成模块
1. BLEU (双语评估替补)
指标解释:BLEU 比较机器生成的文本与一个或多个参考文本之间的重叠度,通常用于评估机器翻译质量。
计算方法:
从机器翻译的文本中提取 n-grams,并计算这些 n-grams 与参考翻译中 n-grams 的匹配度。
对各个 n-gram 计算精确度,并计算这些精确度的加权平均值。
为避免短句偏好问题,引入长度惩罚因子。
2. ROUGE (召回率取向摘要评估)
指标解释:ROUGE 用于评估自动文本摘要或机器翻译的质量,通过衡量生成的摘要或翻译与一组参考摘要之间的重叠度。
计算方法:
ROUGE-N:计算 n-grams 的召回率,即参考摘要中出现的 n-grams 在生成摘要中的频率。
ROUGE-L:基于最长公共子序列(LCS),衡量生成文本与参考文本之间的序列相似度。
ROUGE-S:基于跳跃的二元组(skip-bigram)来计算相似性。
3. METEOR (度量评估翻译编辑率)
指标解释:METEOR 考虑了同义词和句法结构,是对 BLEU 的改进,更能反映人类翻译质量评价。
计算方法:
对齐生成文本和参考文本中的单词,考虑同义词和词形变化。
计算对齐单词的精确度和召回率,并计算它们的调和平均值。
根据对齐的单词顺序,引入惩罚因子来计算最终分数。
4. Perplexity (困惑度)
指标解释:困惑度是评估语言模型性能的一个指标,衡量模型预测样本的能力。
计算方法:
使用语言模型计算测试集中每个词的条件概率。
计算整个测试集的概率的对数似然。
对这个对数似然取负值,然后求平均,并指数化。