跳转至相应部分

什么是检索增强生成?

复制 URL

检索增强生成(RAG)是一种面向大语言模型(LLM)的生成式 AI 方法,通过将大语言模型链接到外部资源使生成式 AI 应用输出更准确的回答。 

了解红帽如何助力 AI

RAG 可以用您选择的外部知识源(例如数据存储库、文本集合和既有文档)来补充大语言模型中的数据。这种方法会先把这些资源切分成较小的片段,再在向量数据库中为其添加索引,然后将其用作参考资料以提供更准确的回答。

RAG 的实用之处在于它指示大语言模型从您选择的一个或多个事实来源中检索特定的实时信息。RAG 可通过提供定制体验来节省成本,不会产生模型训练和微调费用。它还可以在查询大语言模型时仅发送最相关的信息(而非整篇冗长的文档),从而节省资源。

进一步了解生成式 AI

大语言模型利用机器学习和自然语言处理(NLP)技术来理解和生成人类语言。大语言模型在通信和数据处理方面极具价值,但也有一些缺点:

  • 大语言模型是通过常规可用的数据进行的训练,但其中可能不包括您希望其引用的特定信息,例如您的企业组织的内部数据集。
  • 大语言模型也有知识截止日期,这意味着模型的训练数据只包含在特定日期之前的数据和内容。因此,这些来源材料可能会变得过时,不再适用于当前的需求。
  • 大语言模型往往被设计为尽力满足用户的需求,这意味着它们有时会提供虚假或过时的信息,又称“幻觉”。

在基于大语言模型的问答系统中实施 RAG 架构,可以让大语言模型利用外部知识源来获取更广泛、更准确的信息,并将这些信息整合到其回答中,从而提升问答系统的质量和准确性。大语言模型能够交叉引用和补充其内部知识,从而为用户提供更可靠、更准确的查询结果。

进一步了解大语言模型

RAG 架构由于有内置检索机制,因而能够利用大语言模型常规训练之外的额外数据源。通过 RAG 将大语言模型建立在外部的一系列可验证的事实上,可实现以下几个有益目标:

准确性
RAG 为大语言模型提供了引用来源,因此,用户可以加以验证。您还可以将 RAG 架构设计为在问题超出其知识范围时将“我不知道”作为回答。总体而言,RAG 可以减少大语言模型在输出结果中分享错误或误导性信息的几率,进而可能会提高用户的信任度。

成本效益
对大语言模型进行重新训练和微调既昂贵又耗时,就像从头开始创建一个基础模型(例如构建一个聊天机器人)并添加特定领域的信息一样。借助 RAG,用户可以将新数据引入大语言模型,还可以通过上传文档或文件来轻松替换或更新信息源。

RAG 还可以降低推理成本。大语言模型查询的成本很高,如果您在本地运行模型,您自己的硬件需要能够满足需求,如果您通过应用编程接口(API)使用外部服务,则会产生计费账单。RAG 可以只发送参考资料中最相关的部分,而非一次将整个参考文档发给 LLM,因此,可减小查询规模并提高效率。

开发人员控制
与传统的微调方法相比,RAG 提供了一种更方便、更直接的方式来获取反馈、进行故障排除以及修复应用。对开发人员而言,RAG 架构的最大优势在于他们可以利用特定域的最新信息流。

数据主权和隐私
之前,使用机密信息对大语言模型工具进行微调一直有风险,因为大语言模型可能会泄露训练数据中的信息。而 RAG 允许将敏感数据保留在本地,同时继续将其用于向本地或值得信赖的外部大语言模型提供信息,为这类隐私问题提供了解决方案。RAG 架构还可以设置为将敏感信息检索限制在不同的授权级别上,即,某些用户可以基于其安全许可级别访问特定信息。 

RAG 架构的工作原理是从外部来源检索数据,将其处理到大语言模型的语境中,然后基于组合来源生成回答。该过程包括三个主要阶段:数据准备、检索和生成。

第 1 步:数据准备(用于检索)

  • 源文档和加载文档:识别并获取要与大语言模型共享的源文档,并确保这些文档采用大语言模型能够理解的格式,通常是文本文件、数据库表或 PDF 格式。无论源格式如何,在嵌入向量数据库之前,每份文档都需要转换为文本文件。该过程也称为 ETL 阶段:提取、转换和加载。ETL 可确保对原始数据进行清理和整理,使数据为存储、分析和机器学习做好准备。
     
  • 转换:进行“文本分割 ”或 “分块 ”,使文档为检索做好准备。这意味着对更新后的文档进行解析,然后根据不同的特征以目录的形式将其编入相关的“块”。例如,按段落编排的文档可能比按表格和图表编排的文档更易于模型搜索和检索。

    分块可以基于语义、句子、标记、格式、HTML 字符或代码类型等因素。许多开源框架都可以协助进行文档注入,其中包括 LlamaIndexLangChain
     

  • 嵌入:嵌入使用专门的机器学习模型(向量嵌入模型)将数据转换为数值向量,使您能够应用数学运算来评估数据之间的相似性和相异性。借助嵌入功能,您可以将文本(或图像)转换为向量,从而捕获内容的核心含义,同时丢弃不相关的细节。嵌入过程可为数据块分配一个数值(如 [1.2,-0.9,0.3]),并在向量数据库这种更大的系统中为其添加索引。

    在向量数据库中,此数值帮助 RAG 架构指示内容块之间的关联,并对数据进行整理以优化检索。这种索引方式旨在对向量进行结构化处理,从而将相似的概念存储在相邻的坐标中。例如,“咖啡”和 “茶”的位置会离得很近。“热饮”也会离它们很近。“手机”、“电视”等不相关概念的位置则会离它们很远。两个向量点之间的距离或接近程度有助于模型确定对哪些信息进行检索并使其包含在用户查询的输出中。
     

  • 存储:来自多个来源(您选择的外部文档及大语言模型)的组合数据会被存储在中央存储库中。
     

第 2 步:检索

  • 将数据编入向量数据库后,算法便会搜索并检索与用户提示词和查询相关的信息片段。LangChain 等框架支持许多不同的检索算法,其中包括基于语义、元数据和父文档等数据相似性的检索。

    在开放域使用者设置中,信息检索来自互联网上已添加索引的文档,通过信息源的 API 对这些文档进行访问。在封闭域的企业设置中,信息需要保持私密性且不受外部来源的影响,通过 RAG 架构进行检索可以保持本地状态并提高安全性。

    最后,将检索到的数据注入提示符中并发送给大语言模型进行处理。
     

第 3 步:生成

  • 输出:将响应呈现给用户。如果 RAG 方法按预期发挥作用,用户就会获得基于所提供的源知识的准确回答。

在红帽咨询的帮助下开始使用 AI 框架

构建机器学习模型时,寻找优质的源文档非常重要,因为输出结果的质量取决于输入的数据。对于使用 AI 的任何企业组织而言,如果系统生成的结果出现扭曲或存在偏见,便是一个严重问题。因此,请注意确保您的源文档不含存在偏见的信息(即,使优势群体处于优势地位,而使弱势群体处于劣势地位的这种偏见),这一点对于减少输出中的偏见至关重要。

在为 RAG 架构确定源数据时,请确保准确引用源文档中的数据且这些数据是最新数据。此外,在将模型面向更广泛的受众进行部署之前,人类专家应该帮助评估输出结果,而且在将模型部署到生产环境中之后,还应继续评估结果的质量。

了解数据训练方法与 RAG 架构之间的差异有助于您做出战略决策,从而根据需求确定部署哪项 AI 资源,您可能会同时使用多种方法。接下来我们将介绍一些常见的数据处理方法和流程,并将它们与 RAG 进行比较。

RAG 与提示词工程的对比
提示词工程是与大语言模型交互的最基本且技术含量最低的方式。提示词工程需要编写模型需遵循的一系列指令,以便在用户进行查询时生成预期输出。与 RAG 相比,提示词工程所需的数据较少(只有对模型进行预训练时使用的数据),且成本较低(仅使用现有工具和模型),但无法基于最新信息或不断变化的信息生成输出。此外,输出的质量取决于提示词的措辞,这意味着响应内容可能会不一致。

如果您想寻找一种简便易用且具有成本效益的方法来提取与一般主题相关的信息,且不需要很多细节,则可以选择使用提示词工程,而非 RAG。

RAG 与语义搜索的对比
语义研究的是词语的含义。语义搜索是一种通过考虑搜索查询背后的意图和语境来解析数据的技术。

语义搜索利用 NLP 和机器学习来解读查询,并查找可提供比简单的关键词匹配更有意义且更准确的响应的数据。换句话说,语义搜索有助于缩小用户输入的查询内容与用于生成结果的数据之间的差距。

例如,如果您输入一个关于 “梦想假期 ”的查询,语义搜索可帮助模型理解您最有可能想了解的是与“理想”假期相关的信息。模型会提供与您的意图更相关的回答(例如海滨度假套餐),而非提供与梦想相关的回答。

语义搜索是 RAG 的一个元素,RAG 在检索向量数据库的步骤中利用语义搜索来生成符合语境且最新的结果。

RAG 与预训练的对比
预训练是训练大语言模型的初始阶段,旨在通过从大型数据集进行学习来获得对语言的广泛理解。与人脑在学习过程中建立神经通路的方式类似,预训练是在大语言模型中利用训练数据建立神经网络。

与 RAG 相比,对大语言模型进行预训练的成本较高,且可能需要较长的时间以及较多的计算资源(例如数千个 GPU)。如果您可以访问范围广泛的数据集(足以对训练的模型产生重大影响),且希望让大语言模型对某些主题或概念有初步的、基础性的理解,则可以选择使用预训练,而非 RAG。

RAG 与微调的对比
如果说 RAG 架构定义了大语言模型需要知道的内容,那么微调则定义了模型的行为方式。微调是指利用更小、更具针对性的数据集对经过预先训练的大语言模型进一步训练的过程。模型可从中学习不会随时间发生变化的常见模式。

从表面上看,RAG 和微调似乎很相似,但二者存在区别。例如,微调需要大量数据和大量计算资源来创建模型,RAG 则可以从单个文档中检索信息,相比之下,所需的计算资源要少得多。此外,RAG 已被证明可以有效减少幻觉,但对大语言模型进行微调以减少幻觉则是一个更为耗时且困难的过程。

通常情况下,模型可以同时受益于微调和 RAG 架构。但是,如果您已经可以访问大量数据和资源,而且这些数据相对不变,或者如果您正在执行一项专业任务,需要比 RAG 所擅长的问答格式更个性化的分析,则可以选择使用微调,而非 RAG。 

RAG 架构具有许多潜在用例。以下是最流行的几种用途:

  • 客户服务:对聊天机器人进行编程,让其通过对特定文档的深入了解来回答客户的咨询,从而缩短问题解决时间,使客户支持系统更高效。

  • 生成洞察:RAG 可以帮助您从已有文档中查询。通过 RAG 架构将大语言模型与年度报告、营销文档、社交媒体评论、客户评价、调查结果、研究文档或其他材料联系起来,查找有助于您更好地了解资源的回答。请注意,您可以通过 RAG 直接连接到实时数据源(例如社交媒体动态、网站或其他经常更新的来源),以便生成实时且实用的回答。

  • 医疗信息系统:RAG 架构可改善提供医疗信息或建议的系统。RAG 支持查看个人病史等因素、预约挂号以及查看最新医学研究和指南,帮助患者获得所需的支持和服务。

红帽® OpenShift® AI 是一个灵活且可扩展的机器学习运维(MLOps)平台,其工具可用于构建、部署和管理依托 AI 技术的应用。该平台采用开源技术构建,能提供值得信赖且运维一致的功能,助力团队进行实验、为模型提供服务以及交付创新应用。

OpenShift AI 通过提供底层工作负载基础架构(如访问向量数据库、用于创建嵌入项的大语言模型以及生成输出所需的检索机制),使企业组织能够在其大语言模型运维(LLMOps)流程中实施 RAG 架构。

红帽咨询团队开发的红帽 OpenShift AI Pilot 可帮助客户开启红帽 OpenShift AI 之旅并将其与客户的现有企业服务集成。有了这个中心平台,用户便可以访问经标准化的库和工具,提高所有用户的计算可用性,并改善数据科学家和其他用户的入职体验。在这种服务模式下,红帽专家将加入您的团队来帮助评估当前的环境和方法并明确未来的需求。专家团队将帮助部署和管理红帽 OpenShift AI,并帮助将其与客户环境中的其他数据科学工具相集成,以充分发挥技术优势。此 Pilot 不需要您为此服务准备任何有效 ML 模型,无论您的团队处于数据科学之旅的哪个阶段,红帽都很乐意为您提供帮助。

如果企业组织希望在完成模型实验后制定策略以将模型部署到生产环境中,红帽咨询服务还可提供后续帮助。MLOps 基础服务可帮助企业组织提升数据科学能力以及推进 ML 策略的方法,为生产就绪型推理服务创建可重用模式,并利用云原生工具和架构实现整个 ML 模型生命周期的自动化。

进一步了解 MLOps 基础

介绍

InstructLab

InstructLab 是一个用于增强大型语言模型(LLM)的开源项目。

扩展阅读

文章

什么是生成式 AI?

生成式 AI 依赖基于大型数据集训练的深度学习模型来创建新内容。

文章

什么是机器学习?

机器学习是一项训练计算机找到模式、做出预测并从经验中学习且无需明确编程的技术。

文章

什么是基础模型?

基础模型是一种经过预训练的机器学习(ML)模型,能够执行一系列的任务。 

有关 AI/ML 的更多信息

产品

新增

可无缝开发、测试和运行适用于企业级应用的 Granite 系列大型语言模型的基础模型平台。

这是一个围绕 AI 打造的产品组合,可提供工具来训练、调优、提供、监控和管理红帽 OpenShift 上的 AI/ML 实验和模型。

一个企业级应用平台,包含一系列统一经过测试的服务,可基于您选择的基础架构将应用推向市场。 

搭载 IBM watsonx Code Assistant 的红帽 Ansible Lightspeed 是一项生成式 AI 服务,由 Ansible 自动化构工作者、运维人员和开发人员专为自动化同行们设计而成。 

资源

电子书

构建生产就绪型 AI/ML 环境的首要考虑因素

分析师资料

适用于 MLOps 的红帽混合云平台的总体经济影响™

网络培训课堂

借助开源和 Kubernetes 充分挖掘 AI 的价值