在目前进行的项目过程中,客户及其测试同学多次问起如何来确定RAG产品是否可用?是否有标准来进行判断?通过资料的收集,整理如下。建立一个RAG系统在LLM时代变得很简单,但让其能够真正实际运用到业务场景中则非常困难,行业内大多数可能只能做到六七十分的水平。
本文将部分框架进行解读分析,以便于可以从业务角度出发选择合适的评估框架。还是那句老话——没有最好,只有合适自己的才是最好。
整个RAG流程中涉及两个不同的组件:
在评估RAG流程时候,可单独对两个组件进行评估,再综合考虑。因此,需要两个关键元素:一组评估指标和 一个评估数据集 。当前领域中其实已经有了一些RAG的评估框架,比如RAG 三元组指标、ROUGE、ARES、BLEU 和 RAGAs 等。
RAGAs(检索增强生成评估)是一个评估框架,最初是作为一种无需参照标准的评估框架而设计的。这意味着,在评估数据集时,不必依赖人工标注的标准答案,而是通过底层的大语言模型 (LLM) 来进行评估。
RAGAs 需要以下几种信息:
question
:RAG 流程的输入,即用户的查询问题。answer
:由 RAG 流程生成的答案,也就是输出结果。contexts
:为解答 question
而从外部知识源检索到的相关上下文。ground_truths
:question
的标准答案,这是唯一需要人工标注的信息。这个信息仅在评估 context_recall
这一指标时才必须。context_recall
和 answer_correctness
RAGAs 从组件层面和整体流程两个方面评估 RAG 流程的性能。
RAGAs 提供了评价检索组件(包括 context_relevancy
和 context_recall
)和生成组件(涉及 faithfulness
和 answer_relevancy
)的专门指标 :
question
和 contexts
来计算。ground_truth
(此为框架中唯一基于人工标注的真实数据的指标)和 contexts
进行计算。question
、contexts
和 answer
。所有指标的评分范围在 [0, 1] 之间,分数越高表示性能越出色。
优化一个基于 LLM 的系统的难点在于,这个系统本质上是一个黑盒,没有一套有效的评估手段。 Stanford 发表的一篇论文将阐述评估生成式搜索引擎的可验证性。这篇论文虽然是用来评测 Generative Search Engine(生成式搜索引擎),但是也可以应用到 RAG 上,本质上 Generative Search Engine 算是 RAG 的一个子集,还有针对于特定领域数据的 RAG 系统。
论文中提到了一个值得信赖的 Generative Search Engine 的先决条件就是:可验证性(verifiability)。
理想的 RAG 系统应该是:
实际上这两个指标不可能做到 100%,根据论文中的实验结果,现有的 Generative Search Engine 生成的内容经常包含无据陈述和不准确的引文,这两个数据分别是 51.5% 和 74.5%。
简单来说,就是生成的内容和外部的知识不匹配。
于是采用了 4 个指标来进行评估:
一个优秀的 RAG 系统应该在 citation recall 和 citation precision 上获得比较高的评分。
指标 1 和 2 通常是基本条件,如果连这个都不满足整个 RAG 系统就没什么意义了(话讲不清再准确也没有用)。
纯人工打分后计算得来,给评测者对应的评测指标。例如 xxx 算是流畅的,并用 Five-point Likert 量表来进行计算,从 Strongly Disagree 到 Strongly Agree。并且让评测者对「The response is a helpful and informative answer to the query」这个说法的同意程度进行打分。
引文召回率是指:得到引文支持的生成内容 / 值得验证的生成内容
因此,计算召回率需要:
什么是「值得验证」,可以简单理解为是生成内容中包含信息的部分,实践中,几乎所有的生成内容都可以看做是值得验证的内容,所以这个召回率可以近似等于:
召回率 = 引文支持的生成内容 / 总的生成内容
引文精度是指生成的引文中支持其相关陈述的比例。如果生成的内容为每个生成的语句引用了互联网上所有的网页,那么引文召回率就会很高,但是引文精度会很低,因为很多文章都是无关紧要的,并不支持生成的内容。
精度 = 与特定主题相关的文献数量 / 检索到的内容
有了引文召回率和引文精度之后,我们就可以计算出 Citation F 这个最终指标了(调和平均数)。
在机器学习中,F1和F2分数是常用的评估指标,它们是基于精确率 (Precision) 和召回率 (Recall) 的调和平均。
F1分数是精确率和召回率的调和平均数,它为了同时考虑精确率和召回率的影响,是二者之间的一种平衡。F1分数的计算公式为:
F2分数是一个更为一般化的版本,它允许我们调整精确率和召回率的相对重要性。F2分数通过引入一个参数β,可以对精确率和召回率进行加权。具体来说,当β>1时,召回率的权重大于精确率;当β<1时,精确率的权重大于召回率。F2分数就是在这个公式中设β=2,使得召回率的重要性高于精确率。Fβ分数的计算公式为:
这两种分数都用于评估模型的性能,特别是在数据不平衡的情况下,它们比单纯的准确率更能反映模型的性能。
参考文档
The post 【RAG】语义搜索的评测方法 first appeared on PMSOLO.