什么是 RAG(检索增强生成)?

检索增强生成 (RAG) 的定义

检索增强生成 (RAG) 是一种使用来自私有或专有数据源的信息来辅助文本生成的技术。它将检索模型(设计用于搜索大型数据集或知识库)和生成模型(例如大型语言模型 (LLM),此类模型会使用检索到的信息生成可供阅读的文本回复)结合在一起。

通过从更多数据源添加背景信息,以及通过训练来补充 LLM 的原始知识库,检索增强生成能够提高搜索体验的相关性。这能够改善大型语言模型的输出,但又无需重新训练模型。额外信息源的范围很广,从训练 LLM 时并未用到的互联网上的新信息,到专有商业背景信息,或者属于企业的机密内部文档,都会包含在内。

RAG 对于诸如回答问题和内容生成等任务,具有极大价值,因为它能支持生成式 AI 系统使用外部信息源生成更准确且更符合语境的回答。它会实施搜索检索方法(通常是语义搜索或混合搜索)来回应用户的意图并提供更相关的结果。

深入研究检索增强生成 (RAG),以及这个方法如何将您的专有实时数据与生成式 AI 模型关联起来,以获得更好的最终用户体验和准确性。

那什么是信息检索呢?

信息检索 (IR) 指从知识源或数据集搜索并提取相关信息的过程。这一过程特别像使用搜索引擎在互联网上查找信息。您输入查询,系统会检索并为您呈现最有可能包含您正在查找的信息的文档或网页。

信息检索涉及使用相关技术来高效索引并搜索大型数据集,这让人们能够更轻松地从海量的可用数据中访问他们所需的特定信息。除了用于网络搜索引擎,IR 还经常用于数字图书馆、文档管理系统以及各种各样的信息访问应用程序。

AI 语言模型的演变

AI 语言模型的演变图

AI 语言模型在过去这些年发生了巨大演变:

  • 在 1950 和 1960 年代,这一领域还处于萌芽阶段,使用的是基于规则的基础系统,这一系统对语言的理解能力有限。
  • 1970 和 1980 年代出现了专家系统:这些专家系统会将人类知识进行编码以解决问题,但是在语言学能力方面仍十分有限。
  • 在 1990 年代,统计学方法开始盛行,其会使用数据驱动型方法来完成语言任务。
  • 到了 2000 年代,Machine Learning 技术——例如支持矢量机(在一个高维度空间内对不同类型的文本数据进行分类)——开始出现,尽管深度学习仍处于早期阶段。
  • 在 2010 年代,深度学习出现了巨大转变。转换器架构通过使用注意力机制,改变了自然语言处理;通过注意力机制,模型能够在处理输入序列时专注于输入序列的不同部分。

当今,转换器模型通过预测词汇序列中随后将会出现的词汇,能够以模拟人类语言的方式处理数据。这些模型为这一领域带来了变革,并促生了 LLM(例如谷歌的 BERT(基于转换器的双向编码器表示))的兴起。

我们看到业界正在将大型预训练模型与设计用于具体任务的专业模型相结合。诸如 RAG 等模型仍在继续获得关注,将生成式 AI 语言模型的范围扩展到了标准训练的边界以外。在 2022 年,OpenAI 推出了 ChatGPT,这可以说是最为人熟知的基于转换器架构的 LLM。ChatGPT 的竞争对手有聊天式的基础模型,例如谷歌的 Bard,以及微软的 Bing Chat。Meta 的 Llama 2 并非面向消费者的聊天机器人,而是一个开源 LLM,免费提供给熟悉 LLM 运行原理的研究人员。

将预训练模型关联至开源 LLM 的 AI 供应链

相关内容:选择 LLM:2024 年开源 LLM 入门指南

RAG 的工作原理?

检索增强生成是一个多步式流程,始于检索,然后推进到生成。下面介绍了它的运作方式:

检索

  • RAG 从输入查询开始。这可以是用户的问题,或者需要详细回复的任意一段文本。
  • 检索模型会从知识库、数据库或外部来源(或者同时从多个来源)抓取相关信息。模型在何处搜索取决于输入查询所询问的内容。检索到的这一信息现在可以作为模型所需要的任何事实或背景信息的参考来源。
  • 检索到的信息会被转化为高维度空间中的矢量。这些知识矢量会被存储在矢量数据库中。
  • 矢量模型会基于与输入查询的相关性,对检索到的信息进行排序。分数最高的文档或段落会被选中,以进行进一步的处理。

生成

  • 接下来,生成模型(例如 LLM)会使用检索到的信息来生成文本回复。
  • 生成的文本可能会经过额外的后处理步骤,以确保其语法正确,语义连贯。
  • 整体而言,这些回复更加准确,也更符合语境,因为这些回复使用的是检索模型所提供的补充信息。在缺少公共互联网数据的专业领域,这一功能尤其重要。

rag-in-action.jpeg

RAG 优势

相比于单独运行的语言模型,检索增强生成有数项优势。下面列举了它可以从哪些方面改进文本生成和回复:

  • RAG 会确保您的模型能够访问最新、最及时的事实和相关信息,因为它能定期更新外部参考信息。这能确保:它所生成的回复会纳入可能与提出查询的用户相关的最新信息。您还可以实施文档级安全性,来控制数据流中数据的访问权限,并限制特定文档的安全许可。
  • RAG 是更具有成本效益的选项,因为它需要的计算和存储都更少,这意味着您无需拥有自己的 LLM,也无需花费时间和资金对您的模型进行微调。
  • 声称数据准确固然很简答,但要证明数据准确却不简单。RAG 可以引用外部来源并将其提供给用户,以便用户为其回复提供支持性信息。如果愿意的话,用户还可以评估来源,以确认他们所收到的回复是否准确。
  • 虽然由 LLM 提供支持的聊天机器人可以提供比之前的脚本式回复更加个性化的答案,但 RAG 可以提供更加量身定制的答案。这是因为,RAG 在通过衡量意图来生成答案时,能够使用搜索检索方法(通常是语义搜索)来参考一系列基于背景信息得出的要点。
  • 当遇到训练时未出现过的复杂查询时,LLM 有时候会“出现幻觉”,提供不准确的回复。对于模糊性查询,RAG 可以更准确地进行回复,因为它的答案基于来自相关数据源的更多参考资料。
  • RAG 模型用途多样,可用于执行各种各样的自然语言处理任务,包括对话系统、内容生成,以及信息检索。
  • 在任何人造 AI 中,偏见都会是一个问题。RAG 在回答时可以帮助减少偏见,因为它依赖的是经过筛查的外部来源。

检索增强生成与微调的对比

检索增强生成和微调是训练 AI 语言模型的两种不同方法。RAG 会将检索大量外部知识的过程与文本生成结合在一起,而微调则专注于狭窄的数据范围以实现不同的目的。

在微调过程中,系统会使用专门数据对预训练模型进一步加以训练,以便其能适用于任务子集。这一过程涉及基于新数据集修改模型的权重和参数,让模型学习特定于任务的模式,同时保留来自最初预训练模型的知识。

微调可用于各种类型的 AI。一个基本的例子是识别小猫,具体而言是识别网络上猫的照片。在基于语言的模型中,除了文本生成,微调还能够协助完成诸如文本分类、情感分析和命名实体识别等事务。但是,这一过程可能会极其耗费时间和资金。RAG 能够加速完成这一过程,并且由于计算和存储需求较低,还能降低时间和资金成本。

由于能够访问外部资源,RAG 在处理下列任务时尤其有用:需要纳入来自网络或企业知识库的实时或动态信息,以便生成明智的回复。微调则有不同的优势:如果手头的任务已经被很好地定义,而且目标是单纯优化该任务的性能,则微调会十分高效。两种技术的共同优势是:无需针对每个任务都从零开始训练 LLM。

检索增强生成的挑战和局限

虽然 RAG 能提供巨大优势,但也存在数项挑战和局限:

  • RAG 依赖于外部知识。如果检索到的信息不正确,RAG 就会生成不准确的结果。
  • RAG 的检索部分涉及在大型知识库或网络上进行搜索,这从计算量方面来看,不仅费用高昂,而且速度慢,尽管相比于微调,速度还是快一些,费用也要低一些。
  • 要将检索和生成部分无缝集成到一起,这需要进行精心设计和优化,而设计和优化可能会在训练和部署方面造成潜在难题。
  • 当处理敏感数据时,从外部来源检索信息可能带来隐私问题。由于需要遵守隐私和合规要求,这也可能会限制 RAG 能够访问的来源。然而,这能通过文档级访问权限加以解决;文档级访问权限指您可以向特定角色赋予访问和安全许可。
  • RAG 的基础是基于事实的准确性。它可能难以生成富有想象力或虚构性质的内容,这限制了它在创意内容生成领域的使用。

检索增强生成和 Elasticsearch

借助 Elasticsearch,您可以针对生成式 AI 应用、网站、客户或员工体验,打造基于 RAG 的搜索功能。Elasticsearch 可提供完整的工具包,以便您能:

  • 存储并搜索专有数据,以及搜索可从中提取背景信息的其他外部知识库
  • 使用各种方法(文本、矢量、混合,或语义搜索),基于您的数据生成高度相关的搜索结果
  • 为您的用户提供更加准确的回复并打造更加引人入胜的体验

了解 Elasticsearch 可以如何针对您的业务改进生成式 AI