LazyLLM教程 | 第6讲:检索更准:RAG召回效果优化的底层逻辑与技巧

从前面的课程中我们知道了 RAG(Retrieval-Augmented Generation)系统是一种结合检索和生成两个核心组件实现基于外部知识源回答用户查询的智能系统,可以在一定程度上克服大模型幻觉问题在特定领域问答任务上给出与上下文相关的答案。RAG 的基本思想是先通过检索模块从大量文档中找到与用户问题相关的上下文,然后将这些信息提供给生成模型,以生成更加精准和可靠的答案。

尽管 RAG 系统的基础架构较为清晰,并且已有许多工具和框架可以帮助开发者快速搭建,但要真正实现高精度、高效率的输出仍然充满挑战。一个优秀的 RAG 系统不仅仅是简单地将文档存入向量数据库再叠加一个大语言模型,需要针对检索和生成的不同环节进行深度优化,确保信息检索的准确性和生成内容的可靠性


本篇文章围绕 RAG 系统的效果评测方法展开,重点介绍如何评估检索与生成组件的性能与提升检索组件效果的相关策略。

首先,我们将深入探讨检索组件的评估标准,包括召回率(Recall)和上下文相关性(Context Relevance),以衡量检索的覆盖度和精准度。接下来,我们会介绍生成组件的评估指标,例如忠诚度(Faithfulness)和答案相关性(Answer Relevance),用于判断生成内容是否准确、可信,并与检索到的内容紧密相关。在介绍完核心评测指标后,我们将进一步探讨提升检索组件效果的常用方法,包括查询重写策略、优化的检索策略以及重排序策略,构建更精准的 RAG 检索组件。

RAG效果评测

RAG系统结合检索与生成两个组件实现由外部知识源查找相关信息从而对抗大模型的幻觉问题生成符合用户查询上下文的响应。其中检索组件从大量外部数据中召回与用户查询相关的少部分文档,然后将这些文档作为上下文输入给生成组件由其生成答案。因此在一个简单的RAG系统中,我们可以评估以下几个环节,通过提升这几个环节输出的指标,最终实现提升RAG系统输出的目标:

(RAG评测维度和相关方法)

(1)检索组件从大量外部数据源召回的文档是否与用户查询相关,有多相关?

这一环节决定了生成组件获得的上下文与用户查询相关与否,换言之,系统能否生成符合用户查询上下文的答案取决于检索组件召回的文档与查询的相关度。我们通常通过召回率这一指标衡量检索组件召回文档与用户查询的相关度,召回率越高,生成组件获得的相关上下文越多,越有可能生成与用户查询高度相关的答案,而当召回率很低时,系统效果将近似于由生成组件直接回答用户问题。

(2)检索组件召回的文档中有效的上下文有多少?

通常来说检索组件召回的文档长度是较大的,此时无法保证整篇文档中的所有信息都是与查询相关的,此时这些噪声可能会导致最终答案与目标答案相差较大。评估这一环节通常选用RAGAS框架中的上下文相关性(Context Relevance),计算与查询相关的上下文比例。

(3)生成组件给出的答案是否与检索组件提供的上下文相关?

生成组件的能力决定了当检索组件提供了与用户查询高度相关的上下文时生成组件能否充分利用这些信息给出符合查询上下文的答案。目前可选择的大语言模型多种多样,如何选择最适合当前系统的生成组件首先需要衡量的就是这一能力。RAGAS 框架中的忠诚度(Faithfulness)是衡量大模型是否能生成与提供上下文高度相关的重要指标。

(4)系统最终答案是否与用户查询相关?

提升RAG系统答案与用户查询之间的相关度是RAG系统的最终优化目标,我们通常通过RAGAS框架中的答案相关性(Answer Relevance)评估这一点。

一个理想的RAG系统应当在检索组件上具备较高的召回率和上下文相关性分数,在生成组件方面具备较高的忠诚度和答案相关性分数。

1.检索组件评估

在RAG实践中通常通过查看查询与召回之间的结果对检索组件的质量进行评估,常用评估指标有召回率(recall)和上下文相关性(context relevance)。其中召回率指的是系统从文档库中召回了多少与查询相关的文档,衡量系统的查全率;而上下文相关性则衡量召回文档中与查询相关的句子在总句子数中的占比。二者取值均为越高越好,取值越高说明检索组件提供的上下文与用户查询相关度越高,有助于系统输出与问题高度相关的答案。

1. 召回率

召回率是检索出的相关文档数和文档库中所有相关文档数的比例,衡量检索器的查全率,即所有相关文档中有多少被检索出来了。召回率的计算公式如下:

其中TP(True Positive)代表的是真实类别为正例,且结果也是正例的样本,即检索结果中与查询相关的文档数;FN(False Negative)代表的是真实类别为正例,但结果被识别为负例的样本,即没有被召回的相关文档。例如文档库中有5篇文档是与当前查询相关的,而检索组件检索只检索到了3篇,则召回率为3/5=0.6,实际应用中,召回率越高,对生成组件提供的相关证据就越多,有助于提升RAG的总体效果。

2. 上下文相关性

上述召回率是针对文档块级别的评估方法,除此之外可以构造更加细粒度的评估方法对检索器进行评估。RAGAS是一种高级RAG评估体系[见参考文献],此处简单介绍其提出的上下文相关性(context relevance)。

上下文相关性在检索到的文档上提取与查询相关的句子,然后在句子级别计算精度,其计算方式可表达为:

上下文相关性主要衡量的是检索组件给出的上下文中与查询相关的句子的占比,这个值越高,说明该段上下文包含的有效参考内容越多,有利于生成组件从中提取关键证据。例如文档库中有5篇文档是与当前查询相关的,而检索组件检索只检索到了3篇,这3篇文档一共包含10个句子,与查询相关的句子只有4句,那CR值就是4/10=0.4。

2.生成组件评估

RAG的生成组件主要是通过检索组件给出的文档进行答案生成,主要从忠诚度(faithfulness)和答案相关性(answer relevance)两个维度进行评估。其中忠诚度评估的是生成组件的答案与检索组件给出的上下文相关,对对抗大模型幻觉至关重要,而答案相关性则需要评估生成组件给出的答案是否能够准确响应问题。

1. 忠诚度

当生成组件给出的答案是可以在上下文中找到出处的,则称答案 a 是忠诚于上下文 c 的。为了构造客观计算指标,通常会按照如下方式流程进行:

(1)利用LLM从答案中抽取一系列语句,这一步的目的是将长难句精简为多个精简准确的断言 S(或命题);

(2)将上一步提取的断言 S 和检索器给出的上下文一同输入给LLM,让LLM推断这些断言是否来自检索上下文;

(3)计算最终得分

其中|V|是来源于检索上下文的断言个数,|S|是所有断言个数。该值越大,说明该系统的忠诚度越高。下面一起看一个例子:

Query:地球上最高的山是哪座? Context(上下文):珠穆朗玛峰(Mount Everest)是地球上最高的山峰,海拔约 8848.86 米,位于尼泊尔和中国西藏的边界。 高度忠诚的答案:地球上最高的山是珠穆朗玛峰,海拔 8848.86 米。 低忠诚度答案:地球上最高的山是珠穆朗玛峰,海拔 5895 米。

我们以其中的低忠诚度答案为例,构造断言:

断言1:地球上最高的山是珠穆朗玛峰。

断言2:地球上最高的山海拔是5895米。

此时大模型应输出的答案为:

断言1:是。

断言2:不是。

因此针对这个问题的答案,该系统的忠诚度得分为0.5。

2. 答案相关性

答案相关性(Answer Relevance,AR)衡量的是对用户查询生成的答案的质量,即答案与用户问题的相关性,检查答案是否完整,是否包含冗余信息。为了评估这一点,通过大模型生成N个问题,如果提供的答案与原始问题相关,则问题应该与原始问题高度相似。其流程可分解为:

(1)给定答案,让LLM生成该答案可能对应的N个问题,N一般在3到4之间;

(2)对所有可能的问题进行向量嵌入;

(3)计算潜在问题向量 qi 和原始查询向量 q 的相似度:

其中sim可以是余弦相似度等向量相似度计算方法。

同样针对”地球上最高的山是珠穆朗玛峰,海拔 8848.86 米“的答案,利用大模型生成答案,得到如下三个可能的问题:

问题1:地球上最高的山是哪座?

问题2:珠穆朗玛峰的海拔是多少?

问题3:世界上哪座山的海拔最高?

然后将上述三个问题的向量与查询向量q,即”地球上最高的山是哪座?“,计算平均相似度。

3.评测完整示例

下面我们来看一个完整的例子,假设我们的文档库中有 10 个段落,针对查询: "深度学习的应用有哪些?",进行文档检索和问答,进行指标计算。

文档库内容(其中✅是与查询相关的文档,❌为不相关):

✅ 深度学习在计算机视觉中广泛应用,如图像分类、目标检测和自动驾驶。它可以提高图像识别的准确率,使得自动驾驶车辆能够实时感知周围环境。

❌ 传统机器学习依赖手工特征工程,而深度学习自动学习特征。相比之下,深度神经网络能够在海量数据中自动提取有效特征,减少人工干预。

✅ 深度学习可以用于医学影像分析,辅助医生诊断疾病。比如,AI 可以自动识别 X 光片中的异常,提高疾病早期发现的准确率。

✅ 深度学习在推荐系统中,如 Netflix 和淘宝推荐算法,起到了重要作用。它能分析用户的浏览和购买记录,提供个性化的内容推荐。

❌ 深度学习的计算复杂度较高,需要 GPU 进行加速。高性能计算设备的支持使得深度学习能够处理大规模数据,提高训练速度。

✅ 自然语言处理是深度学习的重要应用,包括机器翻译和对话系统。基于深度学习的 NLP 技术让翻译系统更加自然流畅,并提升智能助手的理解能力。

✅ 金融行业也受益于深度学习,特别是在欺诈检测和股票市场预测方面。例如,AI 可分析交易模式,识别异常行为以防止欺诈。

❌ 循环神经网络(RNN)适用于时间序列预测。它可以用于金融市场分析,预测股票价格走势。

❌ 卷积神经网络(CNN)在图像处理方面效果显著。它能够自动提取图像的边缘、形状等特征,提高计算机视觉任务的表现。

✅ 强化学习是深度学习的一部分,已应用于游戏 AI,如 AlphaGo。通过不断自我对弈,AI 能够学习最佳策略,在围棋等游戏中超越人类高手。

对于查询: "深度学习的应用有哪些?",关键词检索召回的句子有如下 5 句:

✅ 深度学习在计算机视觉中广泛应用,如图像分类、目标检测和自动驾驶。它可以提高图像识别的准确率,使得自动驾驶车辆能够实时感知周围环境。

❌ 传统机器学习依赖手工特征工程,而深度学习自动学习特征。相比之下,深度神经网络能够在海量数据中自动提取有效特征,减少人工干预。

✅ 深度学习可以用于医学影像分析,辅助医生诊断疾病。比如,AI 可以自动识别 X 光片中的异常,提高疾病早期发现的准确率。

✅ 深度学习在推荐系统中,如 Netflix 和淘宝推荐算法,起到了重要作用。它能分析用户的浏览和购买记录,提供个性化的内容推荐。

❌ 深度学习的计算复杂度较高,需要 GPU 进行加速。高性能计算设备的支持使得深度学习能够处理大规模数据,提高训练速度。

检索召回率:

有 3 句是正确的(真正相关),2 句是错误的(不属于应用),文档库中与深度学习应用相关的句子一共有 6 句,因此召回率是3/6=0.5;

检索上下文相关性:

在召回的 5 句话中,有10个句子,其中 3 个句子是与查询相关的,因此其上下文相关性是3/5=0.6;

对于 "深度学习的应用有哪些?"和检索到的上下文,模型(internlm2-7b)给出答案:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值