7个用于改进RAG中检索的指标(文末抽奖送书!)

大模型向量数据库机器学习

picture.image

上下文是关键

大型语言模型(LLM)是一种生成式人工智能技术,在过去两年中获得了极大的关注。然而,当我们将LLM应用于实际场景时,仍然面临知识局限性和“幻觉”问题。检索增强生成(RAG)通过为LLM提供额外的记忆和上下文来解决这些问题。在2024年,RAG已成为应用生成式AI领域最受欢迎的技术之一。事实上,可以假设任何基于LLM的应用程序都以某种方式使用了RAG。

picture.image

RAG通过访问非参数化记忆增强了LLM的参数化记忆

图片来源:https://medium.com/the-rag-explorer/7-retrieval-metrics-for-better-rag-systems-f04c098abbe7

RAG评估

通过指标评估超越简单RAG(Naive RAG)

为了让RAG兑现其将LLM响应扎根于数据的承诺,我们需要超越简单的索引、检索、增强和生成的实现。然而,要改进某件事,首先需要衡量其性能。RAG评估有助于为您的RAG系统性能设定基准,以便后续进行优化。

构建一个概念验证(PoC)RAG管道并不复杂。LangChain 和 LlamaIndex 等工具已经使其变得相当简单。通过简短的培训和对有限示例集的验证即可完成。然而,为了提高其鲁棒性,必须在一个能够准确反映生产用例的数据集上进行全面测试。RAG管道可能会产生自身的“幻觉”。从高层次来看,RAG系统有三个主要的失败点:

  • 检索器未能检索到完整的上下文,或检索到了无关的上下文;
  • 即使提供了上下文,LLM也未考虑它;
  • LLM没有回答查询,而是从上下文中选择了无关的信息。

picture.image

检索质量是RAG管道的第一个可能的失败环节

在这篇文章中,我们将重点介绍一些评估指标,这些指标专注于第一个失败点—— “检索器未能检索到完整的上下文,或检索到了无关的上下文”。 换句话说,这些指标用于评估检索器的质量。

检索指标

评估RAG(检索增强生成)系统的评价指标可以分为三大类:

  1. 用于信息检索任务的检索指标 (本文重点讨论的内容)
  2. 生成特定指标 ,如BLEU、ROUGE、METEOR等,这些指标关注生成内容的流畅性,并衡量相关性和语义相似性。
  3. RAG特定指标随着RAG应用的普及而逐渐发展改变

RAG中的检索组件可以独立评估,以判断检索器是否能够很好地满足用户查询需求。接下来,我们将介绍七种流行的指标,它们不仅适用于RAG系统,还广泛应用于搜索引擎、推荐系统等信息检索任务中。

知识库的概念

在RAG中,知识库是一个非常重要的概念。它是一种非参数化的存储器,保存了RAG系统所处理的所有文档。

七大检索指标详解

  1. 准确率(Accuracy)

准确率通常定义为正确预测的比例(包括真正例和真负例)与总案例数之比。如果你熟悉监督学习中的分类问题,可能已经对这个指标有所了解。在检索和RAG的背景下,它的计算方式如下:

公式:


        
        
            

          准确率 = (检索到的相关文档数量 + 未检索到的不相关文档数量) / 知识库中文档总数
          
   

 
        
      

虽然准确率是一个简单直观的指标,但它并不是检索任务的主要指标。在大型知识库中,大多数文档通常与任何给定查询无关,这可能导致误导性的高准确率分数。此外,它没有考虑检索结果的排序。

  1. 精确率(Precision)

精确率关注的是检索结果的质量,衡量检索到的文档中有多少是与用户查询相关的。它回答的问题是:“在所有检索到的文档中,有多少是真正相关的?”

公式:


        
        
            

          精确率 = 检索到的相关文档数量 / 总检索文档数量
          
   

 
        
      

较高的精确率意味着检索器表现良好,主要返回相关文档。

注意:

精确率也是分类任务中常用的指标,在分类任务中,它被定义为模型预测为正类的样本中实际为正类的比例,即:


        
        
            

          精确率 = 真正例 / (真正例 + 假正例)
          
   

 
        
      

Precision@k:

这是精确率的一个变体,衡量前“k”个检索结果中相关文档的比例。它特别重要,因为它专注于顶部结果,而不是所有检索到的文档。对于RAG来说,这一点尤为重要,因为只有顶部结果最有可能被用于增强生成。

公式:


        
        
            

          Precision@k = 前“k”个结果中的相关文档数量 / k
          
   

 
        
      

例如,如果我们的RAG系统考虑前5个文档进行增强,那么Precision@5就变得至关重要。一个Precision@5值为0.8或4/5表示,在前5个结果中,有4个是相关的。

优点:

Precision@k还可以用来比较不同系统,尤其是在不同系统检索结果总数不同的情况下。然而,其局限性在于“k”的选择可能是任意的,且该指标不会考虑超出“k”范围的结果。


  1. 召回率(Recall)

召回率关注的是检索器的覆盖范围,衡量从知识库中所有相关文档中检索出的相关文档比例。它回答的问题是:“在所有相关文档中,有多少被实际检索到了?”

公式:


        
        
            

          召回率 = 检索到的相关文档数量 / 知识库中的相关文档总数
          
   

 
        
      

需要注意的是,与精确率不同,召回率的计算需要事先知道相关文档的总数。在拥有大量文档的知识库中,这一点可能会变得具有挑战性。

注意:

与精确率一样,召回率也不考虑检索结果的排序。它可能会产生误导,因为检索知识库中的所有文档会导致完美的召回率值。

Recall@k:

类似于Precision@k,Recall@k衡量的是前“k”个结果中相关文档的比例,相对于知识库中所有相关文档的数量。

公式:


        
        
            

          Recall@k = 前“k”个结果中的相关文档数量 / 知识库中的相关文档总数
          
   

 
        
      

picture.image

召回率和准确率的不同场景

  1. F1分数(F1-score)

F1分数是精确率和召回率的调和平均值,提供了一个平衡质量和覆盖率的单一指标。

公式:


        
        
            

          F1-score= 2 x (Precision x Recall) / (Precision + Recall)
          
   

 
        
      

picture.image

f1 分数平衡了准确率和召回率。准确率和召回率都为中等时,其 f1 分数会高于一个值非常高而另一个值非常低的情况。

该公式的特点是,当精确率或召回率较低时,F1分数会被惩罚;只有当两者都较高时,才能获得较高的F1分数。这意味着单靠某一项指标无法使F1分数偏高。

优点:

F1分数提供了一个单一、平衡的度量标准,可以轻松比较不同系统。然而,它不考虑排序,并且对精确率和召回率赋予相同的权重,这可能并不总是理想的。

注意:

“相关”文档:我们讨论的大多数指标都涉及“相关”文档的概念。例如,精确率是通过检索到的相关文档数量除以总检索文档数量来计算的。问题是——如何确定某个文档是相关的?简单的答案是采用人工评估方法。领域专家查看文档并判断其相关性。人工评估会带来主观性,因此通常由专家组而非个人完成。但人工评估在规模和成本上存在限制。任何能够可靠建立相关性的数据都会变得极其有用。

Ground Truth 是已知真实或正确的信息。在RAG和生成式AI领域中,Ground Truth是一组预先准备好的Prompt-Context-Response或Question-Context-Response示例,类似于监督学习中的标注数据。为你的知识库创建的Ground Truth数据可用于评估RAG系统。

前四个指标不考虑文档的排名。它们从整体检索角度评估系统的有效性。接下来的三个指标也会考虑结果的排名。

  1. 平均倒数排名(MRR, Mean Reciprocal Rank)

MRR特别适用于评估相关文档的排名。它衡量的是第一个相关文档在结果列表中的倒数排名。MRR是针对一组查询计算的。

公式:


        
        
            

          MRR= 1/N x [Summation i=1 to N (1/rank(i))]
          
   

 
        
      

picture.image

MRR 考虑排名,但不考虑所有文档

其中,N是查询总数,rank(i)是第i个查询中第一个相关文档的排名。

优点:

MRR特别适合关注系统找到相关文档的速度,并考虑结果的排序。然而,由于它只关注第一个相关结果,因此在多个相关结果重要的场景下可能不够理想。


  1. 平均精度均值(MAP, Mean Average Precision)

MAP是一种结合了精确率和召回率的指标,它在不同“k”截断水平下计算。首先计算每个查询的平均精度(Average Precision),然后对所有查询取平均值。

公式:


        
        
            

          Average Precision (单个查询) = 1/R(i) × [求和 k=1 到 n (Precision@k × 第k个文档的相关性)]
          
   

 
        
      

picture.image

MAP 考虑所有检索到的文档,并给出更高的分数以获得更好的排名

其中,

是查询i的相关文档数量,

是截断“k”时的精确率,rel@k是一个二进制标志,指示第k个文档的相关性。

MAP公式:


        
        
            

          MAP= 1/N x [Summation i=1 to N (Average Precision (i)]
          
   

 
        
      

优点:

MAP提供了一个跨召回水平的单一质量度量,非常适合关注结果排序的场景,但计算较为复杂。


  1. 归一化折损累计增益(nDCG, Normalized Discounted Cumulative Gain)

nDCG通过考虑相关文档在结果列表中的位置来评估排序质量,并为出现在前面的相关文档分配更高的分数。它特别适用于文档具有不同程度相关性的场景。

公式:


        
        
            

          DCG = 求和 i=1 到 n ((2^rel(i) - 1) / 
          
 log
 
          (i+1))
          
   

 
        
      

其中,

是位置i处文档的相关性得分。IDCG是理想情况下的DCG,即完美排序的DCG。nDCG是实际DCG与理想DCG的比值。

公式:


        
        
            

          nDCG = DCG / IDCG
          
   

 
        
      

picture.image

优点:

nDCG考虑了文档的不同相关程度,并对高排名的项目赋予更高的权重。 然而,它计算复杂,需要为文档分配相关性得分,这可能带来主观性,同时折扣因子的选择会显著影响结果。


总结

检索系统不仅用于RAG,还广泛应用于网络和企业搜索引擎、电商产品搜索、个性化推荐、社交媒体广告检索、档案系统、数据库、虚拟助手等领域。这些检索指标有助于评估和改进性能,从而更好地满足用户需求。

你认为还有哪些指标可以补充到这个列表中呢?欢迎留言告诉大家!


送书福利

picture.image

picture.image

picture.image

为了感谢读者的长期支持,今天我们将送出 三本 由机械工业出版社出版的:《多模态大模型——算法、应用与微调》 。

点击下方小程序参与抽奖, 活动真实有效,免费包邮 ,欢迎大家积极参与!如果抽奖未中,可通过下面链接直接购买!

picture.image

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
在火山引擎云搜索服务上构建混合搜索的设计与实现
本次演讲将重点介绍字节跳动在混合搜索领域的探索,并探讨如何在多模态数据场景下进行海量数据搜索。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论