RAG 系统检索指标详解:信息检索任务准确性评估指南
本文详细解析了 RAG 系统中的七个核心检索指标,涵盖准确率、精确率、召回率、F1 分数、MRR、MAP 及 nDCG。文章阐述了各指标的定义、计算公式及其在评估检索器质量时的适用场景,重点讨论了如何平衡查全率与查准率,以及排序质量对检索效果的影响。通过理解这些指标,开发者可建立有效的性能基准,针对性优化 RAG 系统,解决检索不完整或上下文不相关的问题,从而提升大模型应用的准确性和可靠性。

本文详细解析了 RAG 系统中的七个核心检索指标,涵盖准确率、精确率、召回率、F1 分数、MRR、MAP 及 nDCG。文章阐述了各指标的定义、计算公式及其在评估检索器质量时的适用场景,重点讨论了如何平衡查全率与查准率,以及排序质量对检索效果的影响。通过理解这些指标,开发者可建立有效的性能基准,针对性优化 RAG 系统,解决检索不完整或上下文不相关的问题,从而提升大模型应用的准确性和可靠性。

大型语言模型(LLMs)作为一种生成式 AI 技术,在近两年内获得了显著的关注和应用。但是在实际部署中,LLMs 的知识局限性和幻觉问题仍然是一个挑战。检索增强生成(Retrieval Augmented Generation,RAG)通过为 LLM 提供额外的外部知识和上下文,有效地解决了这些问题。截至 2024 年,RAG 已经成为应用生成式 AI 领域中最具影响力的技术之一。事实上,几乎所有基于 LLM 的应用都在某种程度上采用了 RAG 技术。

RAG 通过引入非参数记忆访问来增强 LLM 的参数记忆能力。
为了充分发挥 RAG 的潜力,使 LLM 的响应能够切实地建立在可靠数据基础之上,我们需要超越简单的索引、检索、增强和生成的实现方式。要实现这一目标,首先需要建立有效的性能度量标准。RAG 评估为建立系统性能基准提供了重要依据,进而为后续的优化提供了方向。
构建 RAG 概念验证(PoC)管道的复杂度相对较低。借助 LangChain 和 LlamaIndex 等工具,这一过程已经变得相对简单。通过简短的训练和有限样本的验证即可实现初步功能。但是为了提高系统的鲁棒性,在真实反映生产环境用例的数据集上进行全面测试至关重要。值得注意的是 RAG 管道本身也可能产生幻觉。从宏观角度来看,RAG 系统存在三个主要的失效点:

本文将重点讨论几个专注于评估第一个失效点的指标 —— '检索器未能检索到完整或相关上下文'。换言之这些指标旨在评估检索器的质量。
用于评估 RAG 系统的指标可以大致分为三类:
RAG 的检索组件可以独立评估确定检索器满足用户查询的能力。我们将详细介绍七个广泛应用于 RAG、搜索引擎、推荐系统等信息检索任务的重要指标。
注:在 RAG 中,知识库是一个核心概念。它是一个非参数记忆存储,用于存储 RAG 系统将处理的所有文档。
准确率在信息检索领域通常定义为正确预测(包括真阳性和真阴性)占总样本的比例。这一概念源自监督学习中的分类问题,但在检索和 RAG 语境下有其特定解释:
准确率 = (检索到的相关文档数 + 未检索到的不相关文档数) / 知识库中总文档数
尽管准确率是一个直观的指标,但它并不是评估检索系统的最佳选择。在大型知识库中,对于任何给定查询大多数文档通常都是不相关的,这可能导致准确率呈现误导性的高值。此外该指标并不考虑检索结果的排序质量。
精确率聚焦于检索结果的质量,衡量检索到的文档中与用户查询相关的比例。它回答了这样一个问题:在所有被检索到的文档中,有多少是真正相关的?
精确率 = 检索到的相关文档数 / 检索到的总文档数
高精确率表明检索器能够有效地识别和提取相关文档。
注:精确率在分类任务中也是一个常用指标,定义为模型预测为正例的样本中实际为正例的比例,即真阳性 /(真阳性 + 假阳性)。
Precision@k 是精确率的一个变体,它仅考虑检索结果中排名前 k 的文档。这一指标在 RAG 系统中尤为重要,因为通常只有排名靠前的结果会被用于增强。例如如果 RAG 系统仅使用前 5 个文档进行增强,那么 Precision@5 就成为一个关键指标。
Precision@k = 前 k 个结果中相关文档的数量 / k
例如,Precision@5 为 0.8(或 4/5)意味着在前 5 个检索结果中,有 4 个是相关的。
Precision@k 在比较不同系统的检索性能时特别有用,尤其是当系统间检索的总文档数可能不同时。但是它的局限性在于 k 值的选择可能带有主观性,且该指标不考虑 k 之外的结果。
召回率评估检索系统的覆盖范围,衡量从知识库中所有相关文档中成功检索到的比例。它回答了这样一个问题:在所有相关文档中,实际检索到了多少?
召回率 = 检索到的相关文档数 / 知识库中相关文档总数
与精确率不同,召回率的计算需要预先知道知识库中相关文档的总数。在大规模系统中这可能是一个挑战。召回率同样不考虑检索文档的排序。理论上检索所有文档可以获得完美的召回率,但这显然不符合实际需求。
类似于 Precision@k,Recall@k 考虑了前 k 个检索结果中的相关文档比例:
Recall@k = 前 k 个结果中相关文档的数量 / 知识库中相关文档总数

召回率和精确率往往存在权衡关系。提高召回率通常会降低精确率,反之亦然。在实际 RAG 应用中,需要根据业务需求平衡两者。
F1 分数是精确率和召回率的调和平均值,提供了一个平衡检索器质量和覆盖范围的单一指标。
F1 分数 = 2 * (精确率 * 召回率) / (精确率 + 召回率)
F1 分数的特点是当精确率或召回率任一指标较低时,分数会受到显著影响。只有当两个指标都较高时,F1 分数才会较高。这种特性使得 F1 分数不会被单一指标的高值所误导。

F1 分数提供了一个综合度量,便于比较不同系统的整体性能。但是它不考虑检索结果的排序,且默认给予精确率和召回率相同的权重,这在某些应用场景中可能不够理想。
重要说明:
文档相关性判定:大多数讨论的指标都涉及'相关'文档的概念。确定文档相关性的最直接方法是通过人工评估。通常由领域专家审查文档并判定其相关性。为减少个人偏见,这种评估往往由专家小组而非个人完成。但是从规模和成本的角度考虑,人工评估存在局限性。因此任何能可靠建立相关性的数据都变得极为宝贵。在这一背景下,基准事实(Ground Truth)指的是已知真实或正确的信息。在 RAG 和生成式 AI 领域,基准事实通常表现为一组预先准备的提示 - 上下文 - 响应或问题 - 上下文 - 响应示例,类似于监督学习中的标记数据。为知识库创建的基准事实数据可用于 RAG 系统的评估和优化。
前面讨论的四个指标主要关注检索的整体效果,而不考虑结果的排序。接下来介绍的三个指标则进一步考虑了检索结果的排序质量,为评估提供了更深入的视角。
平均倒数排名(MRR)是一个专门用于评估相关文档排名的指标。它计算的是一组查询中,每个查询的第一个相关文档的排名倒数的平均值。其数学表达式如下:
MRR = (1/N) * Σ(1/rank(i))
其中,N 为查询总数,rank(i) 为第 i 个查询中第一个相关文档的排名。
MRR 特别适用于评估系统快速找到相关文档的能力,因为它考虑了结果的排序。但是由于 MRR 只关注第一个相关结果,在需要多个相关结果的场景中,其应用可能受到限制。

平均精确率均值(MAP)是一个综合性指标,它结合了不同截断级别(k 值)的精确率和召回率。MAP 首先计算每个查询的平均精确率,然后取所有查询的平均值。其计算过程如下:
单个查询 (i) 的平均精确率:
AP(i) = Σ(Precision@k * rel(k)) / R(i)
其中,R(i) 为查询 i 的相关文档总数,Precision@k 为前 k 个结果中的精确率,rel(k) 为第 k 个文档的相关性(0 或 1)。
平均精确率均值:
MAP = (1/N) * Σ(AP(i))
其中,N 为查询总数。
MAP 提供了一个在不同召回率水平上的综合质量度量。当结果的排序质量很重要时,MAP 是一个非常有效的指标。但是其计算过程相对复杂。

归一化折损累积增益(nDCG)是一个更为精细的排序质量评估指标。它不仅考虑了相关文档的位置,还为较早出现的相关文档分配更高的权重。nDCG 特别适用于文档具有不同程度相关性的场景。
计算 nDCG 涉及以下步骤:
计算折损累积增益(DCG):
DCG = Σ(rel(i) / log2(i+1))
其中,rel(i) 为第 i 个文档的相关性分数。
计算理想 DCG(IDCG),即完美排序情况下的 DCG。
计算 nDCG:
nDCG = DCG / IDCG

nDCG 是一个计算较为复杂的指标。它要求为每个文档分配相关性分数,这可能引入一定的主观性。折损因子的选择也会显著影响最终结果。尽管如此 nDCG 能够有效地处理文档间不同程度的相关性,并给予排名较高的项目更多权重,使其成为评估高级检索系统的有力工具。
检索系统不仅在 RAG 中发挥关键作用,还广泛应用于网络和企业搜索引擎、电子商务产品搜索、个性化推荐、社交媒体广告投放、档案管理系统、数据库查询优化、智能虚拟助手等多个领域。上述检索指标为评估和改进这些系统的性能提供了重要依据,有助于更好地满足用户需求。
本文详细介绍了七个核心检索指标,从简单的准确率到复杂的 nDCG,每个指标都有其特定的应用场景和优缺点。在实际应用中,选择合适的指标组合对于全面评估和优化 RAG 系统至关重要。
在实际工程落地中,不应盲目追求单一指标的最大化,而应根据具体业务场景进行选择:
通过合理配置这些指标,研发团队可以更精准地定位 RAG 系统的瓶颈,从而制定针对性的优化策略,提升最终用户的满意度。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online