书名:大模型实战:从零实现RAG与Agent系统
ISBN:978-7-115-66642-0
本书由人民邮电出版社发行数字版。版权所有,侵权必究。
您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。
我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。
如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。
著 郑天民
责任编辑 秦 健
人民邮电出版社出版发行 北京市丰台区成寿寺路11号
邮编 100164 电子邮件 315@ptpress.com.cn
网址 http://www.ptpress.com.cn
读者服务热线:(010)81055410
反盗版热线:(010)81055315
本书深入探讨了RAG技术体系及其应用,内容涉及从基础概念到高级应用的各个方面。首先,解构了大模型应用的基本模式与局限性,并引入RAG作为增强生成能力的一种方法,讲解了RAG的核心概念、组成结构及应用场景,还涵盖了RAG的基础、高级、模块化和智能体形式的技术体系。其次,以LlamaIndex为工具,展示了如何实现RAG,包括提示词设计、文档与索引创建、上下文检索及查询引擎构建等具体步骤。最后,介绍了基于RAG构建文档聊天助手、多模态内容解析器、数据库检索器、知识图谱系统、工作流引擎及多Agent系统的实践案例,每个案例均包含技术细节与实现效果演示。
本书适合人工智能领域的开发者、研究人员,以及自然语言处理、知识图谱、智能客服等专业人士阅读。
随着人工智能(Artificial Intelligence,AI)技术的迅猛进步,特别是像ChatGPT这样的大模型的问世,知识问答类应用进入了快速发展的时期,RAG(Retrieval-Augmented Generation,检索增强生成)随之获得了业界的高度关注。它通过将“检索”与“生成”两种方法相结合,增强了模型在处理需要深厚背景知识的任务时的表现,例如客服自动化和医疗咨询等场景。
RAG持续优化其知识提取、索引创建和检索策略,这些方面的改进推动了相关应用的成熟化。RAG的一大优势是它可以高效地更新知识库,而不需要复杂的微调过程,从而大幅降低了大型模型产生不准确回答的可能性。
随着对AI技术热情的理性回归,企业越来越重视AI的实际效用。RAG凭借其透明性和可控性,在企业级应用中占据了关键位置。对于开发者,构建一个融合文本和文档处理、图像分析、嵌入式模型、向量数据库等组件,并与大型模型集成的企业级RAG系统,不仅要求他们掌握RAG的概念、设计原则及如LlamaIndex这样的主流开发框架,还需要能够根据特定的业务需求提出有效的解决方案,以确保RAG可以顺利实施并实现技术与业务的无缝结合。
作为全面介绍 RAG 应用开发的图书,本书旨在协助开发者更有效地设计和构建RAG应用。
本书具有以下特点。
● 热点主题:在当前的AI领域,大模型的应用落地无疑是最受瞩目的焦点,而其中RAG作为核心应用模式脱颖而出。本书作为一本原创著作,专注于RAG应用开发,涵盖了从基础概念到应用场景、开发方法、技术组件,再到工程实践方案等内容。
● 内容创新:本书聚焦于LlamaIndex——一个主流的数据驱动型RAG开发框架。书中不仅阐述了LlamaIndex的整体架构及其核心技术组件,更关键的是提供了这些组件的应用指南和实践案例。
● 案例驱动:本书采用以业务场景和实际案例为导向的实战方式编写,约四分之三的篇幅致力于介绍RAG的具体应用实例,并提供详尽的设计思路及即插即用的代码示例,旨在为读者提供实用的操作指导。
本书主要面向以下读者。
● 掌握一定编程语言和技术、对大模型特别是RAG应用开发有实际需求的技术人员。
● 对大模型和RAG有兴趣、希望体验AI技术的广大开发者。
● 系统架构分析和设计人员。
第1章着重于RAG的核心概念和技术体系的介绍,解析RAG的基本概念与应用场景,并探讨RAG应用开发中所涉及的关键技术,同时引出主流的开发框架。
第2章详细说明作为RAG应用开发主流框架的LlamaIndex,包括它所提供的各个核心技术组件及其具体应用方式。
第3章~第8章则聚焦于RAG应用开发的具体案例,涵盖文档聊天助手、多模态内容解析器、数据库检索器、知识图谱系统、工作流引擎及多Agent系统等应用。对于每一个案例,本书不仅提供具体的应用场景分析和系统设计思路,还结合LlamaIndex这一主流RAG开发框架的功能特性,讲解其在案例中的应用细节与实现过程,并分享背后的实践。
对于没有大模型和RAG开发基础的读者,建议按照章节顺序从第1章开始阅读,并逐步演练每一个示例,以建立坚实的知识基础。
对于已经具备一定RAG基础的读者,则可以根据自身的实际需求,有针对性地阅读各章节中的技术要点,以便深化已有知识或解决具体问题。
针对书中的每一个项目案例,建议先快速通读一遍,形成整体印象,之后,在开发环境中逐一操作每个项目的代码示例,通过实践加深对背后技术组件的理解。
由于作者水平有限,且编写时间仓促,书中可能存在错误或不准确之处,恳请读者批评指正。你可以通过访问Bug勘误表页面提交阅读过程中遇到的问题。此外,书中涉及的代码资源可以通过以下链接下载:https://github.com/tianminzheng/llamaindex-rag-in-action。同时,我也会在此仓库中及时更新并修正相应的功能。
我要特别感谢我的家人,尤其是我的妻子章兰婷女士,在我撰写本书时占用大量晚间和周末时间的情况下,给予我极大的支持与理解。同时,我也要感谢过去和现在的同事们,身处业界领先的公司和团队,我获得了许多宝贵的学习和成长机会。没有大家平日的帮助和支持,这本书的完成将无从谈起。最后,我要感谢人民邮电出版社的编辑团队,本书能够顺利出版,离不开他们的专业协助和悉心指导。
郑天民
本书提供如下资源:
● 程序源代码;
● 书中图片文件;
● 本书思维导图;
● 异步社区7天VIP会员。
要获得以上资源,您可以扫描下方二维码,根据指引领取。
作者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎您将发现的问题反馈给我们,帮助我们提升图书的质量。
当您发现错误时,请登录异步社区(https://www.epubit.com),按书名搜索,进入本书页面,点击“发表勘误”,输入勘误信息,点击“提交勘误”按钮即可(见下页图)。本书的作者和编辑会对您提交的勘误信息进行审核,确认并接受后,您将获赠异步社区的100积分。积分可用于在异步社区兑换优惠券、样书或奖品。
我们的联系邮箱是contact@epubit.com.cn。
如果您对本书有任何疑问或建议,请您发邮件给我们,并在邮件标题中注明本书书名,以便我们更高效地做出反馈。
如果您有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可以发邮件给我们。
如果您所在的学校、培训机构或企业,想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。
如果您在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请您将怀疑有侵权行为的链接通过邮件发送给我们。您的这一举动是对作者权益的保护,也是我们持续为您提供有价值的内容的动力之源。
“异步社区”是由人民邮电出版社创办的IT专业图书社区,于2015年8月上线运营,致力于优质内容的出版和分享,为读者提供高品质的学习内容,为作译者提供专业的出版服务,实现作者与读者在线交流互动,以及传统出版与数字出版的融合发展。
“异步图书”是异步社区策划出版的精品IT图书的品牌,依托于人民邮电出版社在计算机图书领域四十余年的发展与积淀。异步图书面向各行业的信息技术用户。
大语言模型(Large Language Model,LLM,简称大模型)是通过大量数据训练而成的模型,能够生成连贯文本、理解自然语言并回答问题。作为基础技术,LLM提供了强大的语言理解和生成能力,构成了复杂人工智能系统的基石。
RAG(Retrieval-Augmented Generation,检索增强生成)是当前备受关注的LLM前沿技术之一。它结合了传统信息检索技术和最新的生成式模型,首先从大型知识库中检索与查询最相关的信息,然后基于这些信息生成回答。可以说,RAG是在LLM基础上的扩展或应用,利用LLM的生成能力和外部知识库的丰富信息提供更准确、更全面的输出。
简单来说,RAG是一种方法,在将提示词(prompt)发送给LLM之前,先从数据中找到并注入相关信息片段。这样,LLM能够获得预期的相关信息,并据此进行回复,从而减少幻觉的可能性。
在本章中,我们将从LLM应用的基本模式入手,逐步引入RAG的核心概念、组成结构及其应用场景。同时,我们还将深入探讨与RAG相关的各种技术体系,以期为读者提供全面的内容。
本节旨在探讨LLM应用的基本模式,并指出这些模式中普遍存在的局限性,为引出RAG技术提供必要的理论背景。
在LLM领域,对话系统是最基础且最常见的应用形式。对话系统指的是一种设计用于实现自然语言交流的软件系统,适用于客户服务、信息查询、虚拟助手等多种应用场景。其核心功能在于理解用户的输入(通常为文本形式),并据此生成适当的响应。对话系统一般由以下主要组件构成。
● 理解(understanding):分析和解释用户的输入。
● 对话管理(dialogue management):确定如何回应用户,同时管理和维护对话的状态与上下文。
● 生成(generation):创建自然语言的回应。
对话系统可以基于规则构建(依赖预定义的规则和模式),也可以由数据驱动(利用机器学习模型,如LLM)。对于后者,聊天模型(chat model)是一个特别重要的概念。聊天模型作为对话系统的一种特定应用,专门设计用于进行闲聊和非正式对话。这类模型的主要目标是提供自然流畅的对话体验,而不一定专注于完成特定任务或提供精确信息。聊天模型着重于以下两个方面。
● 对话流畅性:确保对话自然连贯。
● 多样性:能够处理多种话题,产生创意且有趣的回应。
在实际应用中,聊天模型常常作为对话系统的一个组成部分,特别是在需要与用户进行自由交流和互动的场景下。例如,我们当前关于LLM的讨论就可以被视为一种聊天模型的应用,它不仅能够提供有趣且自然的对话体验,也能够应对各种问题。
此外,LLM在文本生成方面表现出色(这是其核心应用之一),涉及自动生成自然语言文本以完成多种任务或满足特定需求。LLM可以根据输入的提示词生成连贯且上下文相关的文本,具体可创建以下类型的内容。
● 故事和文章:生成完整的故事情节或文章段落。
● 对话和回应:模拟对话并生成自然的对话回应。
● 总结和重述:对给定内容进行总结或以不同方式重述。
● 创意写作:创作诗歌、歌词等富有创意的内容。
● 翻译和转述:将文本翻译成其他语言或以不同的风格进行转述。
为了引导LLM生成所需的文本,用户可以采用以下策略。
● 提示工程:设计精准的用户提示词和系统提示词,以指导模型生成特定类型的文本。
● 参数调整:通过调整文本长度、风格、创意性等属性来优化输出效果。
当然,除了对话系统和文本生成以外,LLM在图像处理中的应用也日益多样化。尽管LLM本身并不直接处理图像,但它们可以通过与图像处理技术的结合,提供辅助和增强功能。此外,虽然LLM在语音和视频处理领域的成熟度不及文本和图像处理,但其应用场景正在不断增加,并显著增强了这两个领域的功能和用户体验。
当前主流的OpenAI提供了丰富的功能。
● 在图像处理方面,OpenAI提供了DALL-E模型。
● 在语音处理方面,则有Whisper这一强大的自动语音识别系统,主要用于将语音转换为文本。
● OpenAI还推出了首个视频生成模型Sora,它继承了DALL·E 3的高质量图像生成能力,能够创建丰富的高清视频内容。
关于LLM应用的基本模式,读者可参考OpenAI等主流LLM平台的相关资料进行更深入的学习。
尽管LLM凭借其对人类语言的出色理解能力已在多个领域广泛应用,但它们仍然存在一定的局限性,主要体现在幻觉、上下文长度限制和知识局限等方面。
幻觉是指LLM输出与实际事实不符或没有来源的错误信息。产生这一现象的原因有以下几个。
● 语料库偏差:训练语料库中可能包含不正确的事实描述。
● 数据不足:某些特定领域的知识和经验因训练数据不足而未能充分学习。
● 过度生成:在缺乏明确指示或约束条件下,模型可能会生成看似合理但实际上不真实的超预期内容。
● 模糊输入:问题或任务描述不够清晰,导致歧义。
了解幻觉产生的原因后,我们可以更清楚地识别其表现形式,以下是常见的几种。
● 输入冲突幻觉:LLM生成的内容与用户提供的源输入相矛盾。
● 上下文冲突幻觉:生成的内容与其自身之前生成的上下文信息不符。
● 事实冲突幻觉:生成的内容违背已知的事实,即所谓的“一本正经的胡说八道”。
这些幻觉现象会损害用户对LLM输出的信任。如果无法准确判断LLM生成内容的真实性,我们可能会接收错误的信息,进而影响决策过程和判断。
LLM应用的局限性还体现在对话的上下文长度处理上。现有的LLM在处理长文本时存在一定的局限,这主要归因于它们大多基于Transformer模型构建。尽管Transformer模型显著推动了自然语言处理技术的发展,但其自身也存在一些局限性。
具体而言,在处理超长上下文时,Transformer模型难以保持对所有相关部分的记忆,导致分析和输出内容可能出现不完整或错误的情况。此外,随着文本长度的增加,Transformer模型所需的计算资源呈指数级增长。因此,出于成本和效能的考量,当前大多数LLM所支持的上下文长度较为有限。
这种上下文长度的限制,影响了LLM在实现持续且连贯的聊天功能时的效果,成为制约其应用表现的一个重要因素。
这一点较为直观:LLM的知识来源于预训练数据,而这些数据主要来自互联网上的公开语料及人类历史上累积的公共信息,仅代表了人类产生数据的一部分。非公开的企业级私有数据并未包含在内,这导致LLM无法胜任所有任务,尤其是在高度专业化的领域。
此外,由于对公开数据的训练存在滞后性,LLM应用还面临知识时效性的限制。随着新知识的不断涌现,LLM完成预训练后所固化的知识可能很快变得过时。一旦人类知识更新,旧的知识不再准确,LLM便无法自行更新或剔除这些信息,必须等到下一次版本迭代时通过识别和更新相关训练数据来纠正。对于实时性要求较高的应用场景,这种机制显然无法满足用户需求,因此需要引入新的技术体系以实现及时的知识更新和维护。
为了解决LLM应用中的局限性,我们引入了RAG技术。本节介绍RAG,并探讨其核心概念。
关于RAG,我们需要明确几个基本概念:它的基本模型是什么,它具有哪些价值,以及它的组成结构和应用场景。以下是对这些概念的概述。
我们可以从RAG的字面意思对其背后的概念做进一步解析。所谓的检索增强生成,指的就是一种融合了检索(retrieval)和生成(generation)的自然语言处理方法,旨在提升LLM在特定任务上的表现。图1-1展示了RAG的基本模型。
图1-1 RAG的基本模型
在RAG中,首先利用检索系统从文档集合中找到与用户查询相关的资料或信息,这通常依赖于一个能快速找到相关文档的索引机制。随后,将检索到的相关资料作为上下文输入LLM的生成模型,该模型则基于这些上下文生成回复或完成任务。
RAG是自然语言处理领域的一个热门研究方向,许多研究者和开发者正在探索其在不同应用场景中的潜力。RAG具备以下优势。
● 减少LLM幻觉。RAG能够通过提供准确、基于事实的外部知识来源,减少LLM生成不实或误导信息的可能性。
● 突破上下文长度限制。借助RAG,LLM可以克服自身上下文长度的限制,通过分块和向量化处理,实现更高效的信息检索和处理。
● 获取最新知识。由于LLM存在知识更新的截止日期,RAG允许从外部资源检索最新相关信息,确保模型响应的时效性和准确性。
● 提高可追溯性:使用RAG时,聊天内容的来源更加透明,有助于用户验证生成的内容,并优化LLM的表现。
在提升LLM应用性能和用户体验方面,业界主要采用两种方法——微调(fine-tuning)和RAG。微调涉及使用特定数据集对LLM进行额外训练,以优化其在特定任务或领域中的表现。这种方法通常用于使模型专业化且能够改善其在特定上下文中的准确性。以下是对这两种方法的对比。
● 减少幻觉:RAG通过引入外部数据源来减少LLM的幻觉问题,确保响应基于事实;微调则依赖特定领域的数据训练来降低幻觉风险,但面对未知输入时仍可能出现幻觉。
● 知识获取:RAG能够高效访问包括文档、数据库乃至多媒体信息(如图片、语音和视频等)在内的各种外部资源;而微调利用预训练模型中固有的知识,不适合处理需要频繁更新的数据。
● 知识时效:RAG支持实时检索最新知识,非常适合动态环境,无须重新训练模型;而微调后的模型包含静态知识,更新知识需要重新训练。
● 模型定制:RAG专注于信息检索和整合外部知识,可能限制了模型行为或文本生成风格的定制化;而微调允许根据特定需求调整LLM的行为、文本生成风格,例如,完成基于自然语言输入转化为SQL查询语句的任务。
● 可解释性:RAG提供的上下文可以直接追溯到数据源,增加了模型输出的透明度和用户信任;而微调更像是一个黑盒,降低了模型决策的可解释性和用户信任。
● 计算资源:RAG需要支持检索策略和技术的计算资源以及实时更新的知识库;而微调需要准备高质量的训练数据,并且计算成本和时间开销较大。
● 延迟要求:RAG执行前需要预处理和向量化知识库数据,存在一定的延迟;而微调后的模型由于知识已固化在参数中,响应速度较快。
选择哪种方法取决于具体的应用场景。对于定制化要求高且知识相对稳定的情况,微调可能是更好的选择;而对于需要实时更新的知识库,RAG更合适。在某些情况下,结合两者可以提供最佳性能,同时满足灵活性和定制需求。
通常,微调耗费的计算资源和时间较多。而RAG通过检索外部数据源避免了LLM的再训练,降低了计算成本,提高了效率和灵活性。因此,在考虑实施部署的成本效益时,建议优先尝试RAG,若LLM的表现未达预期,则可考虑结合两种方法。
既然RAG这么有用,那么,它又是怎么组成的呢?我们继续往下看。
在实现过程中,除了最终的生成阶段以外,RAG通常还包括两个典型的阶段——索引阶段和检索阶段。
索引阶段旨在对文档进行预处理,以支持后续检索过程中的高效搜索。这一过程根据所采用的信息检索方法而异,在LLM开发中,我们常使用向量搜索(vector search)技术,也称作语义搜索(semantic search)技术。在此阶段,文本文档经由嵌入模型(embedding model)转换为数字向量,这些向量能够捕捉文本的深层语义特征,并通过余弦相似度或其他相似性度量标准来查找和排序与查询最相关的文档。
对于向量搜索,索引阶段包括清理文档、丰富其内容(添加额外数据和元数据)、将文档分割成更小的片段、执行嵌入操作,以及最终将这些嵌入向量存储在向量数据库中。索引工作一般在离线状态下完成,即不需要用户等待其完成。这可以通过定时任务机制定期更新索引,或通过专门的应用程序仅处理索引任务。然而,当用户上传自定义文档并希望立即访问LLM时,索引过程则需要在线进行,并集成到应用程序中。
图1-2展示了RAG索引阶段的工作流程。
图1-2 RAG索引阶段的工作流程
如图1-2所示,索引阶段涉及多个核心概念。简而言之,在RAG的索引阶段,文档(document)被输入系统后,首先通过文本分割器(text splitter)分解为较小的片段,即文本片段(segment)。每个片段随后经过嵌入模型处理,转换成能表达其语义信息的数值向量——嵌入(embedding)。这些嵌入向量随后被存储在嵌入存储(embedding store)中,这是一种专用于存储和管理向量数据的数据库。通过这种方式,文档的语义内容得以有效转换和存储,从而为检索阶段的高效搜索和生成任务打下了坚实的基础。
检索阶段通常在线上进行,当用户提交一个问题时,系统需要利用已索引的文档来生成回答。此过程会根据所使用的信息检索方法有所不同。在采用向量搜索技术的情况下,它涉及将用户的查询嵌入,并在嵌入存储中执行相似性搜索。随后,系统从搜索结果中选取与原始文档相关的片段,作为上下文信息注入提示词中,发送给LLM以获取响应。
图1-3展示了RAG检索阶段的工作流程。
图1-3 RAG检索阶段的工作流程
如图1-3所示,RAG检索阶段的工作流程包括以下几个关键概念。
● 用户查询(query):流程始于用户提交的查询。
● 查询嵌入(query embedding):查询被输入系统中,通过嵌入模型处理,转换成数字向量。
● 嵌入存储:在嵌入存储中执行搜索,该存储包含了索引阶段生成的所有文档嵌入向量。
● 相关文本片段(relevant segment):通过比较查询嵌入与嵌入存储中的嵌入向量,系统识别出最相关的文档片段。
● 提示词注入:相关文档片段随后被提取并与用户查询一起注入提示词,提供给LLM以生成最终的响应或完成特定任务。
整个检索阶段确保了用户查询的语义内容能够与文档内容有效匹配,从而支持生成更精准和上下文敏感的回答。
RAG技术的应用范围广泛,结合集成性开发框架的支持,可以实现以下典型需求。
● 领域驱动的知识库系统:RAG能够整合企业级私有数据,通过检索相关信息生成回答。这种方式使得RAG能提供更准确、详细的答案,特别是在需要深厚背景知识的情况下。针对不同行业,业务人员可收集符合行业和公司特性的专业信息,开发者则利用RAG将这些信息转化为结构化嵌入,并与LLM集成,以构建满足各种问答需求的系统。
● 智能客服平台:借助RAG,可以建立一个高效的智能客服平台。该平台可以使用文本分割器处理大量的客户服务文档、问答集和产品手册等资料,形成丰富的嵌入式知识库。当客户提出问题时,系统会将查询转化为查询嵌入,执行相似性搜索以找到最相关的文档片段,这些片段随后被注入生成任务中,由LLM进行分析并生成精准、个性化的回复。此外,系统还能根据客户的交互历史和偏好提供定制化服务,提升用户体验。
● 智能推荐系统:在商品销售、图书浏览、消息推送等场景下,RAG可以根据用户的历史行为、兴趣偏好及实时交互数据,在知识图谱中挖掘潜在关联,生成高度个性化的推荐内容,进而构建灵活的智能推荐系统。同时,通过解释推荐理由,增强系统的透明度和用户信任度。
● 数据分析平台。RAG通过分解文档内容、将其嵌入并存储,支持构建高效的数据分析平台。它利用嵌入模型将文本转化为向量,存储在嵌入存储中。当用户发起查询时,系统检索相关向量,生成深度分析和见解,提供智能、个性化的数据分析功能。对于已经拥有大数据平台的企业,可以将RAG技术与现有大数据技术相结合,打造数据驱动的决策支持体系。
上述应用场景展示了RAG在实际应用中的广泛性和灵活性。实际上,只要具备合适的数据基础,RAG都可以用于优化数据管理和分析流程,进一步扩展其应用领域。
伴随技术发展的不同阶段,RAG的技术体系可以分为4种类型:基础RAG、高级RAG、模块化RAG和智能体RAG。每种类型代表了不同的发展阶段和技术复杂度。本节将详细探讨这4种类型。
基础RAG是RAG最简单的一种构建方式,其结构如1.2节所述,主要由索引和检索两个阶段组成。文档在被分块后进行向量化处理,随后基于用户查询执行相似性检索,最终利用返回的上下文生成答案。这种形式的RAG因其灵活性和通用性,成为开发RAG应用的基本手段。
目前,像LlamaIndex、LangChain这样的主流LLM集成框架提供了全面的技术组件,以简化基础RAG的实现过程。
高级RAG(advanced RAG)在基础RAG的基础上进行了增强,旨在通过优化查询内容和检索结果来提高检索准确性及输出质量。它包括以下3个主要方面的优化。
● 索引优化:在文本数据切分和向量化过程中应用优化技术,目标是创建包含完整语义信息的最小文本分块,并计算这些分块的嵌入向量,以便在高维向量空间中准确定位,为后续检索任务做准备。
● 检索预处理:在执行向量搜索或其他搜索之前对查询文本进行优化,使问题表述更加清晰,从而提高检索精度。常见的做法包括查询压缩、路由和重写等技术。
● 检索后处理:在获得相关上下文分块之后,对其进行优化以减少“噪声”影响,避免LLM产生“幻觉”。此外,动态自适应地优化提示词,可以显著提高LLM的回答质量。
高级RAG同样保持了通用性和灵活性,对于高级RAG的支持是选择合适开发框架的重要考量之一。LlamaIndex、LangChain等主流框架通常会提供必要的功能特性来支持高级RAG的实现。在后续章节中,我们将结合具体示例介绍高级RAG的多种实现方式。
模块化RAG(modular RAG)是高级RAG的进阶形式,通过模块化设计搭建整体框架,明确各功能模块的输入和输出,根据具体的应用场景灵活组合这些模块,以形成高效且成本效益高的工作流,完成索引、检索和生成的过程。这不仅提升了RAG系统的灵活性,也对整体架构设计提出了更高的要求。
模块化RAG的优势主要体现在以下两个方面。
● 灵活性:针对不同应用场景的需求,可以选择最适合的策略和参数,像乐高积木一样自由组合模块,而不破坏现有工作流、数据流和任务框架。
● 集成性:通常与工作流引擎、知识图谱系统等复杂技术组件协同工作,以实现更高级别的功能。
例如,通过知识图谱提供的数据分析工具,可以构建结构化的知识体系,使得检索过程更加高效。又如,在RAG中引入一个融合模块,该模块采用多查询策略来扩展用户查询的不同视角,并结合并行向量搜索和智能重排序,以增强信息检索的广度和深度。
模块化RAG是一种面向应用的技术体系,需要依据具体的业务需求进行定制化分析和设计。后续章节将通过示例详细说明模块化RAG的实现方式。
从层级上看,LLM提供了语言理解和生成的基础能力,而RAG则在此基础上结合特定知识库来提高输出的准确性和相关性。智能体(agent)进一步利用LLM和RAG的能力,在更高层次上执行任务,基于其感知和决策机制在各种环境中做出响应。
智能体是指具有感知环境并据此做出决策或响应能力的实体。它们能够利用LLM进行自然语言处理,并借助RAG技术获取和利用知识,在广泛的情境中做出决策和执行任务。智能体位于应用层,代表了LLM和RAG技术在特定环境下的集成应用。
智能体RAG(agentic RAG)是检索-生成模型架构的高级形态,它允许智能体根据不同的应用场景动态调用和协调各个模块,以完成复杂任务。在这种体系中,LLM不仅参与最终响应的生成,还会参与到整个RAG流程中,包括根据用户输入选择合适的模块、评估输出结果以及优化未来的搜索方案。
智能体RAG可以应用于多个领域,如问答、客户服务、教育等,构建出不同类型的智能代理。此外,还可以组合多个智能体来创建混合智能体(Mixture-of-Agents,MoA)架构,以应对更为复杂的任务需求。
本章概述了RAG的各个方面,包括传统LLM应用的基本模式及其局限性、RAG的核心概念与组成结构、应用场景和技术体系。我们明确了实现RAG的4种类型——基础RAG、高级RAG、模块化RAG和智能体RAG,并强调了从基础技术到应用技术再到实际应用的逐级深化关系。这为引入具体的技术框架以实现RAG系统奠定了理论基础。