AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


从零开始优化 RAG 流程的终极指南,解决检索增强生成的核心挑战

发布日期:2025-02-21 10:20:40 浏览次数: 1645 来源:ChallengeHub
推荐语

掌握RAG工作流程优化,提升检索增强生成性能。

核心内容:
1. RAG工作流程的详细划分和各部分优化方法
2. 预检索、检索和后检索阶段的关键技术和策略
3. 增强数据粒度、数据清理和元数据添加等优化技巧

杨芳贤
53A创始人/腾讯云(TVP)最具价值专家



RAG 工作流程划分

首先,我们将 RAG 工作流程分为三个部分,以增强我们对 RAG 的理解,并优化每个部分以提高整体性能:



预检索

在预检索步骤中,需要准备LLM 原始训练数据集之外的新数据(也称为外部数据) ,并将其拆分成块,然后使用向量模型对块数据进行索引,该模型将数据转换为数值表示并将其存储在向量数据库中,此过程创建了 LLM 可以理解的知识库。


RAG 中的预检索



检索

在最重要的检索步骤中,用户查询被转换为称为嵌入的向量表示,并使用余弦相似度从向量数据库中找到相关块。这会尝试从向量存储中找到高度相关的文档块。



检索后

接下来,RAG 模型通过在上下文(查询 +上下文)中添加相关检索数据来增强用户输入(或提示)。此步骤使用提示工程技术与 LLM 进行有效沟通。增强的提示允许大型语言模型使用给定的上下文生成对用户查询的准确答案。


RAG 中的检索和后检索


RAG优化思路


我们的目标是通过将各种技术应用于不同部分来增强 RAG 工作流程的每个组件。



检索前优化

预检索技术包括提高索引数据的质量和块优化。此步骤也可以称为增强语义表示。


增强数据粒度

提高数据质量


‘Garbage in, garbage out’

数据清理在 RAG 框架中起着至关重要的作用。RAG 解决方案的性能取决于数据的清理和组织程度。删除不必要的信息,例如特殊字符、不需要的元数据或文本。

  • 删除不相关的文本/文档:删除所有不需要 LLM 回答的不相关文档。同时删除噪音数据,包括删除特殊字符、停用词(常用词如“the”和“a”)和 HTML 标签。
  • 识别和纠正错误:包括拼写错误、打字错误和语法错误。
  • 在分割块中用名称替换代词可以增强检索过程中的语义重要性。

添加元数据

添加元数据,例如概念和级别标签,以提高索引数据的质量。

添加元数据信息包括将引用的元数据(例如日期和目的)集成为块以便进行过滤,以及合并参考文献的章节和小节等元数据以提高检索效率。

以下是元数据有用的一些场景:

  • 如果你搜索项目并且以新近度为标准,则可以按日期元数据进行排序。
  • 如果你搜索科学论文,并且事先知道你要查找的信息始终位于特定部分,例如实验部分,则可以将文章部分添加为每个块的元数据,并对其进行过滤以仅匹配实验。

元数据很有用,因为它在向量搜索上带来了额外的结构化搜索层。

优化索引结构

  • 知识图谱或图神经网络索引利用,图数据索引中节点之间的关系,整合图结构中的信息来捕获相关上下文。

  • 向量索引


分块优化

选择正确的 chunk_size 是一个关键的决定,它可以通过多种方式影响 RAG 系统的效率和准确性:

相关性和粒度

  • 较小的 chunk_size(如 128)可产生更细粒度的块。然而,这种粒度存在风险:重要信息可能不在检索到的顶部块中,尤其是当 similarity_top_k 设置严格到 2 时。相反,512 的块大小很可能包含顶部块中的所有必要信息,从而确保查询的答案随时可用。

响应生成时间

随着 chunk_size 的增加,输入到 LLM 以生成答案的信息量也会增加。虽然这可以确保更全面的背景信息,但也可能会降低系统速度。

挑战

如果您的块太小,它可能不包含 LLM 回答用户查询所需的所有信息;如果块太大,它可能包含太多不相关的信息,使 LLM 感到困惑,或者可能太大而无法适应上下文大小。

任务特定分块

根据下游任务需要确定块的最佳长度以及每个块希望有多少重叠。

  • 诸如总结之类的高级任务需要更大的块大小,而诸如编码之类的低级任务则需要较小的块。

分块技术

Small2big 或父文档检索

通过拆分和存储小块数据来实现 ParentDocumentRetriever 平衡。在检索过程中,它首先获取小块,然后查找这些块的父 ID,并将这些较大的文档返回给 LLM。

它在初始搜索阶段利用小文本块,随后将更大的相关文本块提供给语言模型进行处理。

递归检索涉及在初始检索阶段获取较小的块以捕获关键的语义含义。随后,在流程的后期阶段,将包含更多上下文信息的较大块提供给 LLM。这种两步检索方法有助于在效率和提供丰富的上下文响应之间取得平衡。

步骤:

  1. 该过程涉及将原始大型文档分解为更小、更易于管理的单元(称为子文档)和更大的块(称为父文档)。
  2. 它专注于为每个子文档创建嵌入,这些嵌入比整个父块嵌入更丰富、更详细。它帮助框架识别包含与用户查询相关的信息的最相关子文档。
  3. 一旦与子文档建立对齐,它就会检索与该子文档关联的整个父文档。如图所示,最终检索到了父块。
  4. 检索父文档非常重要,因为它为理解和响应用户的查询提供了更广泛的背景。框架现在可以访问整个父文档,而不再仅仅依赖于子文档的内容。

Small2big 或父文档检索分块技术

句子窗口检索

这种分块技术与上面的非常相似。句子窗口检索背后的核心思想是根据查询从自定义知识库中选择性地获取上下文,然后利用该上下文的更广泛版本来生成更强大的文本。

此过程涉及嵌入一组有限的句子以供检索,这些句子周围的附加上下文(称为“窗口上下文”)被单独存储并与它们链接。一旦确定了最相似的句子,就会在将这些句子发送到大型语言模型 (LLM) 进行生成之前重新整合此上下文,从而丰富整体上下文理解。


解释句子窗口检索的工作原理


RAG 中的句子窗口检索分块技术



检索优化

这是 RAG 工作流中最重要的部分,包括根据用户查询从向量存储中检索文档。此步骤也可以称为对齐查询和文档。


查询重写

查询重写是对齐查询和文档的语义的基本方法。

在此过程中,我们利用语言模型 (LLM) 功能重新表述用户的查询并再次尝试。需要注意的是,两个在人类看来可能相同的问题在嵌入空间中可能看起来并不相似。


多查询检索器

多查询检索方法利用 LLM 针对给定的用户输入查询从不同角度生成多个查询,有利于解决具有多个子问题的复杂问题。

对于每个查询,它会检索一组相关文档,并对所有查询进行唯一联合以获得一组更大的潜在相关文档。

通过对同一个问题产生多种观点,多查询检索器可能能够克服基于距离的检索的一些限制并获得更丰富的结果。


多查询检索器


Hyde 或 Query2doc

两者皆可海德和查询到文档是类似的查询重写优化。鉴于搜索查询通常很短、含糊不清或缺乏必要的背景信息,LLM 可以提供相关信息来指导检索系统,因为它们通过对数万亿个标记进行预训练来记忆大量的知识和语言模式。


标准方法和HyDE方法之间的差异


StepBack

提示StepBack 提示该方法鼓励语言模型超越具体的例子来思考,并关注更广泛的概念和原则。

此模板复制了“后退”提示技术,该技术通过首先提出“后退”问题来提高复杂问题的表现。此技术可以与标准问答 RAG 应用程序结合使用,通过检索原始问题和后退问题的信息。以下是后退提示的示例。


微调嵌入

微调嵌入模型会显著影响 RAG 系统中检索内容的相关性。此过程涉及自定义嵌入模型以增强特定领域上下文中的检索相关性,尤其是对于处理不断发展或罕见术语的专业领域。

  1. 生成用于训练和评估的合成数据集

这里的关键思想是,可以使用 GPT-3.5-turbo 等语言模型生成用于微调的训练数据,以基于文档块提出问题。这使我们能够以可扩展的方式生成合成的正对(查询、相关文档),而无需人工贴标。最终数据集将是问题和文本块的对。

  1. 微调嵌入

在生成的训练数据集上微调任何嵌入模型


使用 GPT 通过合成生成的数据集微调嵌入模型


混合搜索

RAG系统通过智能地集成基于关键字的搜索、语义搜索和向量搜索等各种技术来优化其性能。这种方法充分利用了每种方法的独特优势,以适应不同的查询类型和信息需求,确保始终如一地检索高度相关且上下文丰富的信息。混合搜索的使用是对检索策略的有力补充,从而提高了 RAG 流程的整体效率。

最常见的模式是将稀疏检索器(如 BM25)与密集检索器(如嵌入相似性)相结合,因为它们的优势是互补的。这也被称为“混合搜索”。稀疏检索器擅长根据关键字查找相关文档,而密集检索器擅长根据语义相似性查找相关文档。



检索后优化


重新排序

在将检索结果发送到 LLM 之前对其进行重新排序显著提高了 RAG 性能。向量相似性搜索中的高分数并不意味着它总是具有最高的相关性。

核心思想是通过重新排列文档记录,将最相关的内容放在最前面,从而限制文档的总数,不仅解决了检索过程中上下文窗口扩展的问题,还提高了检索效率和响应速度。增加查询引擎中的similarity_top_k来检索更多的上下文段落,重新排名后可以减少到top_n。


使用 Cohere Reranker 对检索到的文档进行重新排序


内容压缩

检索到的文档中的噪声会严重影响 RAG(Retrieval-Augmented Generation) 的性能。因此,与查询最相关的信息可能被埋藏在大量无关文本中。将整个文档传递到应用程序中可能导致更昂贵的大语言模型(LLM)调用,并生成质量较差的响应。在这种情况下,重点在于压缩无关上下文突出关键段落,以及减少整体上下文长度

上下文压缩旨在解决这一问题。其核心思想很简单:不是直接返回检索到的原始文档,而是根据给定查询的上下文对文档进行压缩,从而仅返回相关信息。这里的“压缩”既指压缩单个文档的内容,也包括完全过滤掉不相关的文档。


上下文压缩

Doc Compressor 是一种小型语言模型,用于计算用户查询和检索到的文档之间的提示互信息(prompt mutual information),从而评估各个元素的重要性。


模块化 RAG

模块化 RAG 通过整合多种方法来增强 RAG 的不同组件。例如,引入搜索模块以进行相似性检索,并在检索器中应用微调方法以提高性能。

RAG 融合结合了两种方法:

  1. 多查询检索 (Multi-Query Retrieval) 利用大语言模型 (LLMs) 从不同角度为给定的用户输入查询生成多个查询。这种方法在处理包含多个子问题的复杂问题时具有优势。

  2. 重排序检索文档 (Rerank Retrieved Documents) 对所有检索到的文档进行重新排序,并移除相关性得分较低的文档,从而提升结果的质量。


图片所示技术确保了搜索结果能够匹配用户的意图,无论是显而易见的还是隐含的。它帮助用户找到更具洞察力和相关性的信息。


最后的一些思考

本文讨论了优化 RAG 管道各个部分并增强整体 RAG 性能的各种技术。你可以在 RAG 管道中使用其中一种或多种技术,使其更加准确和高效。希望这些技术能够帮助你为你的应用程序构建一个更强大的 RAG 管道。


参考资料:https://luv-bansal.medium.com/advance-rag-improve-rag-performance-208ffad5bb6a

文章到此还没完,感觉上面是比较常见的内容,下面继续分享同济大学 Haofen Wang的关于检索增强生成的报告:《Retrieval-Augmented Generation (RAG): Paradigms, Technologies, and Trends》 ,RAG 范式、技术和趋势。


温故而知新!https://raw.githubusercontent.com/Tongji-KGLLM/RAG-Survey/main/assets/RAG_Slide_ENG.pdf


RAG 范式、技术和趋势



RAG 概述


为什么会有 RAG?

RAG (检索增强生成)的出现主要是因为传统的LLM存在一些不足之处:

  • 幻觉(生成虚假信息)
  • 过时的信息
  • 参数化知识效率低
  • 缺乏专业领域的深入知识
  • 推理能力弱

对于企业应用来说,还需要综合考虑:

  • 领域支持的精准回答
  • 数据频繁更新的需求
  • 生成内容需要可追溯、可解释
  • 可控的成本
  • 隐私数据保护

因此,RAG的核心思想是:在生成答案时,首先从大量文档中检索相关信息,再基于这些信息进行答案生成。通过附加外部知识库,避免了为每个特定任务重新训练整个大型模型。这使得RAG特别适用于知识密集型任务。



RAG 与 Fine-tuning(FT)

RAG与Fine-tuning (FT) 的比较:

  • RAG:像是为模型提供一本带有信息检索的定制教科书,非常适合特定领域的查询。
  • FT:像是通过时间积累将知识内化的学生,更适合模仿特定结构、风格或格式。

RAG和FT不是互相排斥的,而是互补的。结合使用可以提升模型的整体性能。



RAG 应用场景

RAG 非常适合以下场景:

  • 长尾数据
  • 频繁更新的知识
  • 需要验证和可追溯性的答案
  • 专业领域知识
  • 数据隐私保护



RAG 范式的演变

RAG可以分为三种范式:

  1. Naive RAG:传统的RAG流程,包括Indexing、Retrieval和Generation。
  2. Advanced RAG:在传统RAG流程基础上,增加了预检索和检索后处理,包括query改写、routing路由、query扩展等。
  3. Modular RAG:更加灵活的结构,引入了具体的功能模块,如查询搜索引擎、多个答案融合等,结合微调、强化学习等技术。



RAG 的三个关键问题

  1. 检索粒度:可以是token、短语、chunk、段落、实体或知识图谱。
  2. 什么时候检索:选择合适的时机进行检索。
  3. 如何利用检索到的信息:在推理过程中如何将检索到的信息集成到生成模型中。

关于检索什么层级的内容,我们可以从检索粒度的粗细,以及数据结构化的高低来看业界研究结果。

X轴结构化从低到高,Y轴从精细到粗粒度。 三个代表:

  • Chunk级别,非结构化数据,搜索会召回大量信息,但是准确度低,会包含冗余信息
  • 知识图谱,丰富的语义和结构化数据,检索效率低,效果严重依赖KG的质量
  • KNN-LMM 擅长处理长尾和跨域问题,计算效率高,但需要大量存储

如何使用检索到的内容 在推理过程中,将检索到的信息集成到生成模型的不同层中

检索的时机

按照检索的频率从低到高,有:

  • 一次检索,只检索一次,效率高,但可能导致检索结果相关度低
  • 自适应检索,平衡效率和检索效果
  • 每N个token检索1次,会导致检索次数过多,并召回大量冗余信息

RAG 技术发展树



关键技术


数据索引优化

  • Small-2-Big:在sentence级别进行embedding。
  • Sliding Window:滑动窗口,确保覆盖整个文本,避免语义歧义。
  • Summary:先通过摘要检索,再从文档中提取文本块。
  • Meta信息:添加诸如页面、时间、类型、标题等meta信息,以增强信息量。

核心就是数据很多,通过meta过滤,可以减少范围,提高精度。


结构化检索文档库

可以通过以下方式进行检索:

  • Summary → Document:通过摘要检索替代文档检索,增加准确性。
  • Document → Embedded Objects:检索嵌入的对象(如PDF中的表格、图表等)。
  • 知识图谱(KG):通过GraphRAG提取实体构建子图,生成回答。


Query 优化

  • Query Rewriting:将查询改写成多个子查询,以获得更好的检索效果。
  • Query Clarification:通过澄清技术进一步优化查询。


Embedding 嵌入模型优化

  • 选择合适的商业embedding供应商或使用像BAAI的BGE模型进行微调。



检索流程优化

  • Iterative检索:迭代式检索。
  • Adaptive检索:自适应检索,平衡效率和效果。



Hybrid (RAG+Fine-tuning) 融合

RAG和Fine-tuning可以结合使用,以更好地生成和检索答案。

相关研究总结



RAG 评估方法

  • 评测方法层面,可以检索和生成独立评测,也可以端到端进行评测
  • RAG 的评估办法很丰富,主要包括三个质量分数:上下文相关度、答案忠实度、答案相关度
  • 评估涉及四项核心能力:鲁棒性、拒识能力、信息整合能力和反事实解释
  • 评估框架方面,有 RGB、RECALL 等基准指标,以及 RAGAS、ARES、TruLens 等自动化评估工具,可以较全面地衡量 RAG 模型的性能。


评估指标

  • 检索质量


    • **Hit Rate (HR)**:命中率,衡量检索中相关文档的比例。
    • **Mean Reciprocal Rank (MRR)**:平均倒数排名。
    • NDCG:归一化折扣累积增益。
    • Precision:精确率。
    • Recall:召回率。
    • R-Rate:再次出现率。
  • 生成质量


    • Context Relevance:上下文相关性。
    • Answer Faithfulness:答案忠实度。
    • Answer Relevance:答案相关性。
    • Accuracy:准确性。下面补充一些信息:具体来说,评估方法主要围绕其两个关键组件:检索(Retrieval)和生成(Generation)。评估这些组件的性能涉及到多个质量分数和能力,这些分数和能力共同反映了 RAG 模型在信息检索和生成过程中的效率。


核心能力

  • 鲁棒性:处理错误召回内容的能力。
  • 拒识能力:拒绝不相关信息的能力。
  • 信息整合能力:如何整合检索到的信息。
  • 反事实解释:生成结果的可解释性。


评估工具

  • RAGAS
  • ARES
  • TruLens



RAG 技术栈与工业界实践

当前有流行的开发框架,如LangChain、LlamaIndex、AutoGen,方便开发RAG应用。

在工业界,许多应用已经开始使用RAG技术。

工业界也有很多RAG应用。

在这里插入图片描述



RAG 的挑战与展望


RAG 技术框架


未来研究热点

  • 技术框架:提升检索效率
  • 多模态扩展:将RAG从文本扩展到多模态。
  • 生态建设:扩展RAG下游任务,改善生态建设。


挑战

  • 长上下文:如何处理长上下文信息。
  • 与FT的协同:如何将RAG和FT结合使用。
  • RAG的鲁棒性:如何处理错误召回的内容。
  • 如何应用LLM:如何最大限度地利用LLM。
  • 隐私保护:如何保障隐私数据。


多模态扩展#

将RAG从文本扩展到多模态


RAG 开发生态建设

扩展RAG下游任务,改善生态建设

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

和创始人交个朋友

回到顶部

 

加载中...

扫码咨询