当前位置: 首页 > news >正文

检索增强生成(Retrieval-Augmented Generation,RAG)

检索增强生成(Retrieval-Augmented Generation,RAG)是一种结合信息检索(Retrieval)和大型语言模型(LLM)文本生成(Generation)的技术框架。它使LLM能够在生成回应时,引用其训练数据之外的外部、权威、最新的知识,从而克服LLM训练数据静态、知识有截止日期以及可能产生虚假信息(幻觉)的局限性。


RAG


RAG的核心价值:允许AI模型访问和利用那些不在其训练数据中的信息,使其能生成基于最新、最相关外部知识的回答。

RAG的工作原理基于一个简单而强大的流程:在LLM生成答案前,先从一个外部知识库中检索出与用户查询最相关的片段,然后将这些检索结果作为额外的上下文信息与原始查询一起输入给LLM,指导LLM生成更准确、更丰富、更具时效性的回答。

在这里插入图片描述

RAG技术的核心流程通常包含三个主要阶段:

  1. 索引(Indexing) :将外部知识源(如文档、网页、数据库)处理成可检索的形式,通常涉及文本分块、生成向量嵌入,并存储在向量数据库中。
  2. 检索(Retrieval) :当用户提出问题时,系统将问题转换成查询向量,从索引中检索出最相关的知识片段。
  3. 生成(Generation) :将检索到的相关知识片段与原始问题一起提供给LLM,由LLM生成最终回答。

2. 朴素RAG

朴素RAG(Naive RAG)是2020年首次提出的最基础RAG实现方式,代表了RAG技术的初始阶段。它严格按照"索引 -> 检索 -> 生成"的三阶段顺序执行,实现相对直接,但也面临一些明显的局限性。
在这里插入图片描述

2.1 朴素RAG的工作流程

  1. 索引阶段

    • 将原始文档简单地分割成固定大小的块(chunks)
    • 对每个文本块生成向量嵌入(通常使用通用嵌入模型如OpenAI的text-embedding-ada-002)
    • 将这些向量存储在向量数据库中(如Pinecone、Milvus等)
  2. 检索阶段

    • 将用户查询转换为向量表示
    • 通过向量相似度搜索找到最相似的Top-K个文本块
    • 直接返回这些文本块,不做进一步处理
  3. 生成阶段

    • 将检索到的文本块连同原始查询一起发送给LLM
    • LLM基于提供的上下文生成答案

2.2 朴素RAG的局限性

朴素RAG面临的主要问题:

  • 噪声干扰:检索结果中可能包含与查询相关性不高的信息,干扰LLM的理解
  • 检索冗余:多个检索结果可能包含重复信息,浪费有限的上下文窗口
  • 复杂查询理解不足:对于复杂或含糊的查询,直接检索往往效果不佳
  • 召回率有限:如果关键信息分散在多个文档中,简单检索可能遗漏重要内容
  • 上下文窗口限制:LLM的上下文窗口有限,无法容纳过多检索结果

尽管存在这些局限性,朴素RAG作为一种基础实现,已经能够显著提升LLM回答特定领域问题的能力,尤其是在处理那些超出模型训练数据范围的问题时。然而,为了解决上述问题并进一步提高性能,RAG技术随后进化出了更加高级和复杂的形式。

3. 高级RAG

高级RAG(Advanced RAG)是对朴素RAG的全面优化升级,通过在RAG流程的各个环节引入专门的优化技术,显著提升了检索质量和生成效果。高级RAG不再是简单的线性流程,而是在每个阶段都融入了更复杂、更智能的处理策略。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3.1 高级RAG的优化策略

3.1.1 预检索优化
  • 查询重写(Query Rewriting)

    使用LLM对原始查询进行改写,生成多个语义相似但表达不同的变体,增加检索到相关内容的概率。例如,将"股票市场今天怎么样?"改写为"今日股市表现如何?“和"最新的股票市场指数是多少?”

  • 查询分解(Query Decomposition)

    将复杂查询分解为多个简单子查询,分别检索后再整合结果。例如,"比较特斯拉和比亚迪的电池技术和市场份额"可分解为分别关于电池技术和市场份额的子查询。

  • 智能索引优化

    使用更先进的文档分块策略(如语义分块而非固定大小分块),为文档添加元数据标签,使用领域适应的嵌入模型等,提高索引质量。

3.1.2 检索过程优化
  • 混合检索(Hybrid Search)

    结合稠密检索(向量相似度)和稀疏检索(关键词匹配,如BM25算法),平衡语义理解和关键词精确匹配的优势。

  • 多查询检索(Multi-Query Retrieval)

    使用不同的查询变体并行检索,然后合并结果,提高查全率。

  • 元数据过滤(Metadata Filtering)

    基于文档的元数据(如时间、来源、主题分类等)进行检索范围限定,提高检索效率和相关性。
    在这里插入图片描述

3.1.3 后检索优化
  • 重排序(Reranking)

    使用更复杂的模型对初步检索结果进行二次评分和排序,将最相关的内容排在前面。例如,使用交叉编码器(Cross-encoder)模型评估查询与每个检索结果的精确匹配度。

  • 冗余过滤(Redundancy Filtering)

    检测并移除检索结果中的重复信息,优化上下文窗口利用。

  • 提示压缩(Prompt Compression)

    使用LLM提取检索结果的核心信息,生成更紧凑的摘要,以便在有限的上下文窗口中包含更多信息。

  • 信息过滤与整合(Filtering and Synthesis)

    根据相关性和重要性筛选信息,并将分散的信息整合成连贯的背景知识。

3.2 高级RAG的优势

高级RAG通过上述优化策略,成功解决了朴素RAG面临的主要问题,带来了一系列显著的性能提升:

  • 更高的检索精度和召回率,确保找到最相关的信息
  • 更有效利用有限的上下文窗口,避免浪费在冗余或不相关内容上
  • 更好地理解复杂查询意图,提供更全面、准确的回答
  • 能够处理多步推理问题,即使所需知识分散在多个文档中
  • 生成更连贯、更相关、更准确的回答

关键改进:高级RAG不再是简单的"检索然后生成"模式,而是在每个环节都引入了智能处理和优化。这种多层次的优化策略极大地提升了RAG系统的整体性能,使其能够处理更复杂的查询并提供更高质量的回答。

4. 模块化RAG

模块化RAG(Modular RAG)代表了RAG技术的最新演进方向,是一种高度灵活、可重构的框架设计理念。与高级RAG专注于具体优化技术不同,模块化RAG关注的是系统架构本身,目标是构建一个能够适应各种场景需求、支持功能快速迭代的可扩展框架。

在这里插入图片描述

4.1 模块化RAG的核心理念

模块化RAG的核心理念是将RAG的流程分解为多个独立的功能模块,每个模块专注于特定的功能,可以独立开发、测试和优化,再通过编排层(Orchestrator)灵活组合成完整的工作流:

  • 组件解耦与标准化

    将RAG流程分解为具有明确边界和标准接口的独立组件,每个组件可以被单独替换或升级。

  • 可配置的流程编排

    使用专门的编排层来定义和管理组件之间的数据流和控制流,支持非线性、条件分支和循环等复杂流程。

  • 插件化扩展机制

    提供统一的扩展接口,允许轻松集成第三方功能,如新的向量数据库、嵌入模型或特殊处理算法。

4.2 模块化RAG的典型模块

模块类型功能描述示例技术/算法
索引模块管理文档的加载、预处理、分块和向量化语义分块、递归分块、嵌入模型选择与微调
预检索模块处理查询意图理解、查询重写和分解HyDE、多查询扩展、查询路由
检索模块执行实际检索操作,获取相关文档向量检索、关键词检索、混合检索、多级检索
后检索模块优化检索结果,提高质量重排序、结果融合、去重、摘要生成
生成模块构建提示、调用LLM生成回答提示工程、多轮生成、自我批评与修正
编排模块协调各模块工作,控制流程执行工作流引擎、条件路由、循环控制

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

4.3 模块化RAG的高级应用场景

模块化RAG的灵活架构使其能够支持一系列复杂应用场景,这些场景通常难以用传统RAG方式有效处理:

  • 多源异构数据融合

    可以同时接入文档库、关系型数据库、知识图谱、API等多种信息源,构建全面的知识检索网络,并根据查询特点动态选择最合适的数据源。

  • 层次化检索(Hierarchical Retrieval)

    先进行粗粒度检索确定相关领域或文档,再进行细粒度检索获取具体内容,提高检索效率和准确性,特别适合处理超大规模知识库。

  • 迭代深化检索(Iterative Retrieval)

    基于初步检索结果和用户反馈进行多轮检索,逐步聚焦和扩展相关信息。例如,先检索基础概念,再基于理解深入检索更专业的内容。

  • 知识推理与整合

    不仅检索已有事实,还能基于检索到的多项事实进行逻辑推导,回答文档中没有直接给出但可以推理得出的问题。

4.4 模块化RAG的优势

模块化RAG相比传统RAG的核心优势:

  • 极高的灵活性:能够根据不同任务需求快速配置最合适的模块组合
  • 可扩展性:轻松集成新技术和算法,无需重构整个系统
  • 持续迭代优化:可以针对特定模块进行独立优化,然后无缝替换
  • 更好的可维护性:模块化设计使系统更易于理解、调试和维护
  • 支持复杂流程:能够实现条件分支、循环等非线性流程,满足复杂业务需求

5. RAG演化路径总结

从2020年首次提出至今,RAG技术经历了从简单到复杂,从固定流程到灵活架构的显著演化。这一演化路径反映了AI技术社区对提高LLM与外部知识结合能力的持续探索:

阶段核心特点主要局限技术突破
朴素RAG (2020年)简单线性流程,直接检索后生成检索噪声,冗余,理解不足将检索与生成结合的基本框架
高级RAG (2021-2022年)各阶段增加优化策略,提高质量架构灵活性不足,难以适应多样场景查询重写,混合检索,重排序等技术
模块化RAG (2023年至今)解耦组件,可重构,灵活编排实现复杂度高,需要更多工程投入模块化架构,工作流编排,多源数据融合

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

RAG技术的演化反映了AI系统与外部知识结合的几个重要趋势:

  • 从固定流程到灵活架构:越来越倾向于可配置、可扩展的系统设计
  • 从通用解决方案到场景化定制:针对不同应用领域和需求优化检索策略
  • 从单一模式到混合方法:结合多种技术和算法,取长补短
  • 从静态检索到动态交互:支持多轮对话和迭代深化的信息获取
  • 从单一知识源到知识网络:整合多种格式、来源的知识,构建更全面的知识体系

发展趋势:RAG技术正朝着更加智能、灵活和场景化的方向发展。未来的RAG系统将能够更好地理解用户意图,主动寻找和整合相关信息,提供更具洞察力的回答,成为知识密集型AI应用的核心基础架构。

6. 演示案例

下面通过一个具体案例,展示RAG技术在实际应用中的工作方式和价值。本案例以企业内部知识问答系统为背景,分别展示朴素RAG、高级RAG和模块化RAG的处理方式与效果差异。

案例:企业内部知识问答系统

背景:一家大型企业拥有大量内部文档(产品手册、技术规范、政策文件、会议记录等),员工需要快速查询这些文档中的信息。

用户查询“公司最新的差旅报销政策有哪些更新?特别是对于国际差旅的规定。”

朴素RAG方案处理流程
  1. 索引阶段:将所有内部文档按固定大小(如1000字符)分块,生成向量嵌入,存储在向量数据库中。
  2. 检索阶段:将用户问题向量化,检索出最相似的5个文档块。
  3. 生成阶段:将这5个文档块与问题一起交给LLM生成回答。

潜在问题

  • 检索可能同时返回新旧版本的差旅政策文档,造成混淆
  • 国际差旅规定可能分散在多个文档中,单次检索难以全部获取
  • 检索结果可能包含无关的会议记录(仅因提及了"差旅政策")

朴素RAG回答:

根据提供的上下文,公司最新的差旅报销政策有一些更新。文档提到了差旅报销相关内容,但具体更新内容不完全清晰。关于国际差旅,提到需要提前申请批准,但具体规定细节在提供的文档段落中未完全覆盖。建议查阅完整的差旅政策文档获取更详细信息。

高级RAG方案处理流程
  1. 预检索优化

    • 查询分解:将问题分解为两部分 - “最新差旅报销政策更新"和"国际差旅规定”
    • 添加元数据约束:限定文档类型为"政策文件",时间范围为"过去3个月"
  2. 检索阶段

    • 对分解的两个子问题分别进行检索
    • 使用混合检索(结合向量检索和关键词匹配)提高准确度
  3. 后检索处理

    • 对结果进行重排序,确保最新版本的政策排在前面
    • 过滤掉重复信息和低相关度的文档片段
  4. 生成阶段:将优化后的检索结果提供给LLM,并指导它关注政策更新和国际差旅部分。

高级RAG回答:

公司最新的差旅报销政策(更新于上个月)有以下几点重要更新:

  1. 国内差旅标准:住宿费上限提高10%,餐饮补贴保持不变。
  2. 报销流程简化:引入电子发票快速通道,处理时间从7个工作日缩短至3个工作日。

针对国际差旅的新规定:

  1. 所有国际出差必须提前15个工作日(原先为10天)提交申请并获得部门总监批准。
  2. 疫情后新增:前往部分国家需提供额外健康证明和保险证明。
  3. 国际差旅住宿标准按目的地分为三个级别,详细标准可查阅政策附录A。
  4. 外币报销汇率以出发日汇率为准,不再是报销日汇率。

详细内容可在公司内网"政策文件-人事行政-差旅管理"栏目查阅完整文档。

模块化RAG方案处理流程

模块化RAG可以根据问题特点动态构建最合适的处理流程:

  1. 用户意图理解模块

    • 识别出用户关心两个方面:政策更新概况和国际差旅具体规定
    • 判断这是一个需要多源信息整合的复杂查询
  2. 检索策略选择模块

    • 选择"分阶段检索"策略:先确定最新政策文档,再深入检索相关内容
    • 启用多源检索:同时查询政策库、会议记录库(可能包含政策讨论)和知识库
  3. 层次化检索执行

    • 第一层:检索"差旅政策"相关文档,筛选出最新版本
    • 第二层:在最新版本中定向检索"政策更新"和"国际差旅"部分
    • 第三层:补充检索近期关于差旅政策的会议记录,获取背景信息
  4. 知识整合模块

    • 整合政策文档和会议记录中的信息
    • 提取核心变化点,形成结构化的对比信息
  5. 回答生成与个性化

    • 根据用户角色(如:是否为管理层)定制回答详细程度
    • 添加针对用户部门的特定提示(如:研发部出差有特殊规定)

模块化RAG回答:

根据2024年5月15日更新的《公司差旅管理规定V4.2》,差旅政策有以下重要更新:

一、主要政策更新点(相比上一版V4.1):

  1. 国内差旅:
    • 住宿标准上调:一线城市上限增至800元/晚(原750元)
    • 交通报销:新增商务舱使用条件(连续飞行超8小时)
    • 简化审批:总监以下级别差旅预算3000元以内免预审批
  2. 报销流程优化:
    • 引入移动端报销,支持拍照上传
    • 报销时限延长至差旅结束后30天(原为15天)
    • 电子发票快速通道,3个工作日内完成审核

二、国际差旅专项规定

  1. 申请与审批:
    • 提前申请时间延长:15个工作日(原10天)
    • 审批流程新增风险评估环节(安全、合规、健康)
  2. 住宿与补贴标准:
    • 国家分级调整:按商务成本指数重新划分为A/B/C三类
    • C类国家(如您所在研发部常去的新加坡、日本)住宿标准上调20%
    • 新增时差倒时区补贴:跨5个及以上时区有1天调整假
  3. 财务与报销规定:
    • 外币报销采用出发日汇率(旧政策为报销日汇率)
    • 国际信用卡额度由5000美元提升至8000美元
    • 取消手续费报销上限,改为实报实销

补充信息:根据上周管理层会议记录,此次政策调整主要考虑到业务全球化发展需求和旅行成本上涨因素。特别提醒研发部同事,前往海外研发中心的长期差旅(>30天)适用特殊政策,请咨询部门专员获取详情。

完整政策文档路径:内网>政策制度>行政人事>差旅管理V4.2
如有疑问,可联系差旅管理员张经理(分机8025)。

效果对比
方案信息完整性相关性结构化程度个性化程度
朴素RAG中低
高级RAG中高
模块化RAG

案例总结

通过企业知识问答系统的案例,我们可以清晰看到RAG技术演化的价值:从朴素RAG的基础检索生成能力,到高级RAG的多环节优化,再到模块化RAG的智能策略选择和灵活流程编排。随着RAG技术的发展,AI系统能够提供越来越精确、全面、个性化的知识服务,真正成为人类知识工作的有力助手。


http://www.xdnf.cn/news/877951.html

相关文章:

  • ShardingSphere-JDBC 与 Sharding-JDBC 的对比与区别
  • 【Unity】R3 CSharp 响应式编程 - 使用篇(二)
  • BugKu Web渗透之bp
  • 6个月Python学习计划 Day 14 - 异常处理基础( 补充学习)
  • 制造业数智化:R²AIN SUITE 如何打通提效闭环
  • 苹果企业签名撤销
  • 滑动智能降级:Glide优化加载性能的黑科技
  • Python Day43
  • vue封装gsap自定义动画指令
  • 计算机系统结构-第5章-监听式协议
  • @Minikube安装、配置与应用部署
  • 11. MySQL事务管理(上)
  • C++11新特性(3)
  • Java高级 | 【实验四】Springboot 获取前端数据与返回Json数据
  • DeepSeek进阶应用(三):生成单词卡片高效学英语(可用于开发web应用、app等)
  • MySQL 表的内连和外连
  • 浮动测量技术在现代电力电子系统中的关键作用
  • 每日八股文6.4补
  • Day12
  • GQA(Grouped Query Attention):分组注意力机制的原理与实践《二》
  • 如何选择合适的分库分表策略
  • 前端表单验证进阶:如何使用 jQuery.validator.addMethod() 编写自定义验证器(全是干货,建议收藏)
  • 用布局管理器grid实现计算机界面
  • Python爬虫爬取天猫商品数据,详细教程【Python经典实战项目】
  • VBA中类的解读及应用第二十四讲:把源数据赋给类利用类完成查找
  • 【AI News | 20250604】每日AI进展
  • Markdown基础(1.2w字)
  • OPC UA 知识概述
  • 行业年终工作总结汇报PPT模版分享
  • 并发编程的问题与管程