RAG综述:探索检索增强生成技术的多样性与代码实践
基于现有训练数据集构建的LLM在处理隐私信息或最新资讯时存在一定局限性,并可能会出现所谓的"幻觉"现象——即模型输出看似合乎逻辑但实际上错误的答案。针对这些问题提出了解决方案——检索增强型生成(Retrieval-Augmented Generation,简称RAG)框架。该框架通过引入外部文档资源,并利用上下文信息来优化LLM的回答质量——不仅能够提高回答的相关性还能保证信息的真实性和时效性。今天我们将深入探讨RAG的各种技术及其优缺点并附有代码实践链接供参考以期为开发高效RAG系统提供指导

一、RAG的基本概念与工作流程
RAG框架主要由四个核心组件构成:索引、检索器、增强器和生成器。
索引:在处理过程中,在各个阶段将不同类型的文件分段,并生成对应的向量表示信息。之后这些向量被优化存储结构以提高检索效率
检索器:响应用户的查询请求,在向量存储中基于向量相似度的技术通过索引机制快速定位到与查询内容最匹配的文档。
增强器通过整合用户查询与检索到的上下文信息,并创建一个提示性的问题框架(prompt),从而帮助LLM根据上下文内容生成更加精准和相关的回答内容。
生成器:下一步骤是将整合后的查询与提示信息输入到模型中进行处理,并输出相应的结果。
这种创新方案能够使RAG模型充分获取最新的知识库内容,并从中提取最精确的相关数据。该方案通过整合外部专业知识库内容来生成相应的回答
二、RAG技术的多样性
RAG技术包含多种实现方案(Astute RAG(Retrieval-Augmented Generation):LLM信息检索与利用的新思路)),每一种方法都具有其独特的优缺点
Naive RAG(朴素RAG)
Naive RAG被视为RAG的核心方法之一。它通过利用语义相似性实现了一种直接而高效的用户查询与文档数据库之间的匹配过程。这一方法具有简洁高效的特点,并且在处理那些基于易识别上下文的简单查询时表现出色。然而,在某些情况下由于缺乏复杂的过滤机制可能导致其无法准确捕捉到与查询相关但不相关的外部信息并且因为受到固定长度上下文窗口的限制有时会导致重要的信息被截断或者遗漏
Hybrid RAG(混合RAG)
Hybrid RAG利用融合向量搜索(基于语义相似度)与传统的基于关键词检索方法(例如BM25算法)来超越其局限性。该方法不仅兼顾查询语义内涵与精准关键词匹配的能力,并能显著提升多维度检索效果。然而这种做法会增加计算开销同时也要求对两种搜索方式结果间的平衡关系进行优化
Hyde RAG(假设文档嵌入RAG)
Hyde RAG是一种创新性的文档检索系统开发方法
工作原理
HyDE-RAG依赖大型语言模型(例如GPT系列)来基于用户的查询生成一个假想的回答。这种假想的回答或许并不完全精确,并且可能会包含细节上的偏差;但它旨在捕获与查询相关的相关信息。
随后
对于检索相似文档的任务,在编码过程中生成的向量被用来在文档库中找到与目标 document 向量最接近的真实 document
最终阶段,在大型语言模型系统的支持下,在线学习平台实现了知识更新功能的持续优化。该语言模型经过训练后能够对这些数据进行综合分析,并根据结果逐步完善知识库内容。
Parent Document Retriever RAG(父文档检索器RAG)
该技术通过将大型文档划分为更小、更易于管理的部分以应对常见的检索挑战,在搜索过程中系统首先识别并检索相关的小块如果某个小块表现出显著 promise 则会进一步检索其对应的父文档这种方法确保了初步搜索阶段的高度准确性 并且能够提供完整的上下文信息 尤其适用于处理大量且信息分散的大规模文档 然而该方法可能会包含一些与查询无关的内容 并且需要较大的内存资源用于存储这些子项之间的关系
RAG Fusion(融合RAG)
该方法基于多样化的信息检索机制(RAG Fusion),通过生成与原始搜索项高度相关的多组子搜索项来优化信息提取过程。随后应用互惠排名融合(Reciprocal Rank Fusion)对结果进行排序组合以提升准确性。该技术使系统能够从多个维度解析用户的搜索请求,并有可能发现单一搜索项难以获取的相关信息。其机制类似于不同研究者分别从多维度探讨同一领域的问题。然而这种方法带来了较高的计算开销,并在实现上较为复杂
RAG Fusion的工作原理主要基于以下几个步骤:
采用大型语言模型(LLM)对用户输入的初始查询进行重新表述,并生成多样化的补充查询。这些补充查询能够帮助系统全面理解用户意图,并提高信息检索的全面性。
该系统采用基于向量的技术来处理每个生成查询,并通过多路径检索机制实现信息的快速召回。该步骤结合多种先进的嵌入算法,在包含预处理数据的大型向量数据库中运行检索操作,并最终输出与输入查询高度相关的文档内容。
采用倒数排序融合方法(RRF),系统会根据文档在多个查询中的相关性对原始文档位置进行重新排列。该算法通过综合分析不同搜索结果的排序信息,并结合用户需求,在搜索结果列表中突出显示最相关的文档。具体而言,在每个结果集中匹配到的相关项都会被赋予一个新的评分值(计算公式为1/(rank + k)),其中rank表示该文档在当前列表中的位置顺序,k为一个预设常量)。随后系统会对来自各个搜索引擎返回的倒数排名评分进行求和运算,最终生成每个文档的综合评分值,并依据这些评分值对所有文档进行排序和排列展示。
结果再排序:采用一系列重新排列算法对结果进行更深入的优化操作, 以保证最终输出的高度准确性和相关性
基于重新排序后的TopK检索结果生成最终结果。该步骤会将预处理好的检索结果与用户查询一同导入到LLM提示字段中,并按照RAG方法论进行后续处理以生成相应的响应或摘要。
Contextual RAG(上下文RAG)
该系统在效率与准确性之间取得了良好的平衡。它通过聚焦于文档中最关键的核心内容来优化回答的质量,并帮助语言模型生成更为精炼、集中且具信息量的回答支持。尽管这种方法特别适合处理海量信息场景,在此过程中保持简洁性和高效性至关重要;然而,在进行长时间对话时会面临计算资源需求显著增加的问题
Contextual RAG的工作流程主要包括以下几个步骤:
Contextual Enhancement: 对于文档中的每一个chunk, 系统会在其前面创建一段具有解释性的背景段落, 该段落由一个小规模且高效的LLM生成, 其目的是使chunk能够更好地融入整个文档的整体语境。
混合搜索采用稀疏(关键词)与密集(语义)双重预处理方法对chunk进行嵌入处理。经过这一过程后,在准确提取chunk表面意义的同时也能深入挖掘其深层含义内涵。这不仅有助于提升信息检索的效果还增强了数据理解的能力
综合排序:采用递归排名融合(Reciprocal Rank Fusion, RRF)算法对搜索结果进行整合。这一过程类似于从多源信息中提取最优解,并通过该算法对搜索结果进行整合处理以实现对搜索结果的更精确排序。
系统将收集前150个chunks,并利用特定的排序机制选出前20个候选信息。这一步骤显著提升了搜索结果的相关性
在这一阶段, 我们将这20个精选的chops依次输入到一个大型AI模型中进行处理。该AI系统具备全面的数据整合能力, 能够有效分析并提取关键信息。随后, 该系统会输出精确且有条理的回答.
Rewrite Retrieve Read RAG(重写检索读取RAG)
该技术优化了原始数据来源以使其在处理时更具效率。为了确保信息质量及深度的关注,在执行搜索任务之前, 系统根据需求对搜索策略进行了调整.基于对信息质量及深度的关注, 该系统经过RAG模型处理后的输出结果更加丰富.值得注意的是, 在提升信息获取效率的同时也带来了响应时间上的增加问题;此外, 在多次迭代过程中可能会出现信息偏倚.
核心模块与流程
Rewrite Retrieve Read RAG框架主要由以下三个核心模块组成:
该模块的主要功能在于识别用户的需求意图,并深入挖掘其潜在需求。接着会根据分析结果对原始查询进行优化调整。通过多种方式进行改写优化,包括语言转换、问题细化或扩展补充等
信息检索模块:当改写模块完成时,在庞大的数据库中高效地识别出与改写后查询高度相关的数据块并提取出来作为参考依据。该系统会根据语义相关性执行搜索以确保所提取的信息能够充分满足后续处理需求
Read(阅读/生成)模块:随后,在获取的相关信息基础上进行更深入地分析并提取相关信息。接着,该系统能够总结出关键数据点及其发展趋势,并输出一份简明扼要的答案报告。此外,在生成回答时不仅依赖于获取的相关信息内容本身还能够结合模型的知识库以及推理能力来辅助生成更加精准的回答内容
Corrective RAG(校正RAG)
该系统采用动态信息检索策略,在移除非关键信息的同时可能进行额外网络搜索以弥补知识缺口,并持续优化和精炼检索结果。此方法确保语言模型获得最高质量且高度相关的数据,并特别适用于初始检索结果不全面或存在轻微偏差的情况。然而,在处理过程中会因为多个步骤导致响应迟缓,并伴随较高的错误检测与校正计算成本。
工作原理
Corrective RAG在运作中采用多个阶段的评估与调整过程来实现其功能,主要包含以下关键环节.
文档检索:通过查询向量在预构建的知识库中搜索与之相关的文档或段落。此过程类似于传统RAG方法,但Corrective RAG则更加关注检索结果的精确度和相关性。
评估与纠正:采用一种轻量级的检索评估机制来测定被检索文档与其输入查询之间的相关程度;该机制会计算出对应的相关性评分,并据此触发相应的知识检索策略;这些策略包括:
Correctness(正确性):当文档的相关性得分为超过该上限阈值时,并未被判定为正确的而是需要重新评估并只能在生成过程中作为参考信息使用
Incorrect(错误)被视为文档质量的一种缺陷指标。具体而言,在计算过程中若某文档的相关性评分低于设定的下限阈值,则判定该文档为" Incorrect "(错误),并需进行相应的修正或更换。
ambiguous(模糊):如果某个文档与查询的相关性得分为介于上下限阈值之间,则判定该文档为模糊类型,并要求对该文档进行额外的处理或验证步骤以确保检索结果的质量。
在知识提炼方面,在遇到需要执行Correct操作的文档时
当遇到因文档触发Incorrect操作时,Corrective RAG会执行网页搜索以辅助知识修正。此步骤旨在弥补初始检索可能存在的不足,并通过补充信息来增强生成内容的准确性。
在完成上述操作后,随后Corrective RAG将经过优化处理的知识内容作为输入内容被传递给生成器以产出最终的输出文本。
特点与优势
提升准确性:Corrective RAG通过内部反思机制和动态评估系统能够发现并修正语言模型输出中的错误,并使生成内容更加准确。
增强鲁棒性:该系统通过整合轻量级检索评估器与优化的知识精炼流程,在处理模糊与错误的数据时表现出色,并显著提升了生成结果的稳定性。
模块化设计:Corrective RAG采用Modular Architecture,并能够无缝整合到多种基于RAG的架构中;显著提升了系统的灵活性与扩展性。
Self RAG(自我RAG)
自研版大模型RAG(源自大模型RAG(检索增强)创新项目中的发展),旨在通过引入自我反思机制来优化信息处理流程
主要特点
Self-RAG避免每次都直接调用外部资源库,在处理特定问题时会根据具体情况判断是否有必要执行数据检索操作
自我审查与优化:Self-RAG在输出结果产生时持续审查自身运作。当发现输出结果存在不足或需优化的地方时
并行处理多个文档:Self-RAG能够同时处理多个搜索返回的结果,并评估它们的相关性,并产出对应的任务请求。然后自判标记用来自我评价其输出内容。首先根据事实准确性筛选出最符合的内容;然后综合考虑整体质量进行最终确认。
反思标记类型
Self-RAG框架中包含四个不同类别的反射标记,在每个类别中都承担着独特的责任:
Retriever: 用于指示是否需要从外部数据源中获取信息。该功能涵盖Yes/No选项以及Continue Using Evidence选项。
IsRel用以标识检索到的信息与输入的相关性如何?它包含如"Relevant"和"Irrelevant"等选项。
IsSup 用于评估检索到的信息是否支持模型的生成内容;它包含'完全支持'、'部分支持'以及'无支持/矛盾'等选项。
IsUse:作为衡量生成内容整体实用性的关键指标,在实践中通常采用一套五级评分标准。其评价范围涵盖从1至5个等级。
训练过程
Self-RAG的训练过程涉及到两个模型:评判模型C和生成模型M。
评估模型C的生成样本集是基于GPT-4输出的数据。针对各类任务场景,在获得相应输出结果后,则设定合适的任务指令与示例案例,并使GPT-4生成相应的反思标记。随后通过标准的条件语言模型来训练目标优化评判模型的目标。
在评判模型C完成训练后的基础上
Adaptive RAG(自适应RAG)
Adaptive RAG是一种最为灵活的检索技术,在应对不同的具体类型时能够动态调节其工作流程以实现对索引数据执行网络搜索并结合多种不同的信息检索手段进行综合处理这一系统性机制使得它能够在各种各样的信息搜索任务中展现出极高的灵活性与有效性
主要策略
Adaptive RAG通过三种不同的策略来应对不同复杂度的查询:
不依赖外部检索的策略:适用于直接由模型回答的简单查询。如这类问题不需要通过网络或其他资源查找。“巴黎是哪个国家的首都?”这种简单问题可以通过模型内部知识直接得到答案。
单步检索策略:旨在应对那些需要外部信息辅助解答的中等复杂查询。该策略将通过外部知识库检索相关文档,并将其作为模型输入以提升解答结果的质量。
多步骤检索机制:当系统面对繁琐的多步骤查询时会启动多次调用相关文档库并综合上一轮次的结果来进行逻辑推导最终输出精确答案。例如想知道比利·贾尔斯出生地使用的货币是什么?就需要系统跨越多个数据库进行信息整合才能得到准确结果。
工作机制
Adaptive RAG的工作机制主要包括以下几个步骤:
当系统接收用户的搜索请求时,在其后台运行一个专门的分类器。该分类器通过分析信息的语法规则、提取关键词,并结合潜在的逻辑推断过程,在完成对用户需求的理解阶段完成对用户的初步信息整理。
复杂度分类:分类器将查询分为三类:简单查询、中等复杂查询和复杂查询。
策略选择:分类器根据查询的复杂度,选择最合适的处理策略。
三、RAG 技术综合对比与应用策略
(一)性能综合对比
各 RAG 技术(Intelligent RAG(Retrieval-Augmented Generation):LLM 信息检索与利用的新思路)于不同维度表现各异。朴素 RAG 简单高效但精确度有限;混合 RAG 提高召回率的同时伴随成本上升;Hyde RAG 虽然在处理复杂问题方面表现出色,但在计算资源上却显得力不从心;父文档检索器 RAG 通过保持上下文信息来应对内存压力;RAG 融合增强检索技术但实施过程中会遇到诸多挑战;情境 RAG 通过精准聚焦来满足特定领域管理需求;重写检索读取 RAG 则通过优化查询策略来平衡效率与准确性;纠正 RAG 在提升信息质量方面具有显著优势但可能会影响处理速度;自我 RAG 通过强化质量控制来优化资源利用效率;自适应 RAG 则以其灵活性和通用性成为复杂场景的理想选择,在实际应用中则需要投入较大的技术储备来确保其性能优化效果。开发者应根据具体应用场景的需求进行技术方案的选择与设计,在资源受限的情况下优先考虑朴素或情境 RAG 的简化架构设计,在精准专业领域则倾向于采用混合型、Hyde 型或纠正型的高精度检索方案,在动态多变的复杂需求场景下则可充分发挥自适应型 RAG 的潜力效能
(二)应用场景适配策略
智能客服领域:可倚重朴素 RAG 的快速响应机制来处理日常咨询问题。对于复杂的售后纠纷,则可以通过混合策略或修正型 RAG 方法进行精准追溯,并在此基础上完善解决方案。通过这种方式可以提升客户的满意度,并且能够降低客户咨询的升级频率。同时优化服务流程并提高效率的同时也能使运营成本降低。
学术研究辅助:运用混合或父文档检索器RAG能够拓宽研究视野并实现对核心文献的初步筛选工作;在深入探索前沿课题的过程中可以通过Hyde或RAG结合的方式挖掘潜在的知识联系以激发创新思维从而加速科研进程并提升研究成果的质量与学术影响力
新闻资讯创作中情境化RAG机制用于提炼关键点以提高创作效率;在创意写作领域智能化RAG系统能够灵活获取所需素材并实施审核把关以提升内容品质和丰富度的同时也提升了创作效率;该平台通过赋能创作者实现更多可能性满足受众对多元化的阅读需求助力平台在内容领域更具竞争力
四、RAG 技术发展趋势展望
(一)技术优化方向
在性能提升方面,在算法创新方面实现了向量索引的压缩与加速检索匹配,在硬件适配方面充分运用了GPU集群以及量子计算的潜力,并成功突破了计算瓶颈;在智能融合层面,在深度协同多种检索策略与语言模型架构的基础上,并结合知识图谱拓展了知识理解边界;在用户体验优化方面,则特别关注多模态交互体验,并通过融合图像识别与语音识别技术实现无缝交互,在个性化定制方面则依据用户偏好动态调整相关策略,并最终塑造出专属的互动体验。
(二)新兴应用拓展
教育领域基于学生学习进度和能力的自适应教学体系旨在实现个性化的知识推送及能力评估功能,并革新传统学习模式
(三)挑战与应对策略
在数据隐私保护的前提下构建了加密检索和联邦学习的框架结构,在实现知识的有效利用的同时兼顾隐私安全。对知识更新进行管理时应打造动态索引,并实时监测并更新相关机制。针对模型偏见问题提出治理措施并强化数据均衡采样的策略,在提升系统公平公正的基础上确保技术的发展既公平又具有包容性,并于复杂伦理法律环境稳健前行。
针对大型语言模型在处理私有或最新信息时的表现受限这一问题, RAG 技术提供了一种创新性的解决方案。 通过整合外部文档并运用上下文学习机制, RAG 框架 (参考文献链接: [CR4] "CR4" 的深入探讨) 不仅使 LLM 生成的回答具有高度的相关性,还能够实现高效准确的信息检索。 尽管如此, 在进一步释放 RAG 技术的潜力方面仍面临诸多技术和实践上的障碍, 包括如何有效地构建与管理和检索文档库、如何系统性地评估与优化其性能、以及根据具体应用场景需求选择最合适的解决方案等。 经过持续深入的研究和技术探索, 我们有望克服这些障碍, 并推动该技术在更多应用场景中的广泛应用与突破性进展
各种rag技术代码实现:https://github.com/athina-ai/rag-cookbooks
