为了账号安全,请及时绑定邮箱和手机立即绑定

基于RAG工作流的高效信息检索方法

简介

检索增强生成(RAG)摆脱了知识的限制,融入外部数据源,提升了对上下文的理解。

它的受欢迎程度越来越高,原因在于它能够在不进行持续的微调的情况下高效地集成外部数据。

让我们看看RAG是如何克服LLM挑战的。

LLM 的知识局限

大型语言模型面临几个挑战,主要是关于知识的准确性和时效性。其中两个常见的问题是幻觉和知识过时。

  • 幻觉现象:当模型自信地给出错误答案时,就发生了幻觉现象。例如,如果模型声称“googly retriever”是一种真正的狗品种,这就是幻觉现象,可能会误导用户。

这是一种幻觉。

  • 知识更新截止:当大型语言模型返回的信息根据其训练数据是过时的,这种情况就叫知识更新截止。每个基础模型都有自己的知识截止时间,这意味着它们的知识只到训练时的数据为止。比如,如果你问它最近的NBA冠军是谁,它可能就会给你过时的答案。

知识的断点

RAG提供了一种缓解这些挑战的技术。它允许你为模型提供访问外部数据源的权限,通过减少幻觉并引入事实性上下文,以及通过引入最新的信息来克服知识的局限性。

检索增强生成模型(RAG)

检索增强生成(RAG)是一个多用途框架,它允许大型语言模型(LLM)访问其训练数据之外的外部数据。RAG 不局限于单一实现;它可以适应不同任务和数据格式的各种方法。

它使大型语言模型能够接入外部数据源,在运行过程中包括知识库、文档、数据库和互联网。这对于利用外部数据增强语言模型来说非常重要,填补其训练数据中的知识空白。

高效地对文档索引,以便快速检索

为了高效地从文档中检索信息,通常的做法是将它们索引进向量数据库,利用捕捉语义的嵌入向量。此外,将大型文档进行分块,以提高相关性并减少噪音干扰,从而通过提供具体的上下文信息来增强模型的响应。

架构(指软件或系统的结构和组织方式)

RAG框架中有两个关键模型如下:

  • RAG-Sequence 模型: 此模型利用相同的检索文档来生成整个序列。它将检索到的文档视为单一的潜在变量,并通过 top-K 近似法来实现边缘化以获得序列到序列的概率。在这种方法中,检索器检索出前 K 个文档,生成器计算每个文档的输出序列概率。这些概率通过边缘化进行组合。
  • RAG-Token 模型: 在此模型中,每个目标标记都可以从不同的潜在文档中抽取,使得生成器在生成答案时可以从多个文档中选择内容。类似于 RAG-Sequence 模型,它检索出前 K 个文档,然后为每个文档生成下一个输出标记的分布。此过程会针对每个输出标记重复进行,相应地进行边缘化。

此外,RAG也可以用于序列分类任务(例如,将目标类别视为单序列目标),在这种情形下,RAG-Sequence和RAG-Token模型在这种情况下等价。

RAG的组件
  • Retriever :Retriever(DPR),根据查询和文档索引检索相关文档。检索基于 DPR,采用基于 BERT 的双编码器架构生成密集的文档和查询表示,并通过 Maximum Inner Product Search (MIPS) 算法选择具有最高相关性的前 K 个文档。
  • Generator :基于 BART-large 的 Generator:负责生成序列。它通过简单地将输入与检索到的内容连接起来,来结合输入和检索内容。

训练期

在训练过程中,检索器和生成器共同训练,无需直接指定检索的文档。训练目标是将每个目标的负边缘对数似然性最小化。

解码步骤

在解码阶段,RAG-Sequence 和 RAG-Token 模型需要不同的方法。RAG-Token 使用 自回归序列生成 和束搜索解码器。相比之下,RAG-Sequence 对每个文档进行束搜索,并使用生成器的概率来评估假设。对于较长的输出序列,采用了一种高效的解码方法以避免过多的前向计算。

RAG的实现和操作

实现RAG工作流可能很复杂,涉及从接受用户提示到查询数据库、分割文档以及协调整个过程的多个步骤。

LangChain 这样的框架通过提供可以与大型语言模型(LLM)和诸如RAG之类的增强技术一起使用的模块化组件,来简化这一过程。LangChain 包括适用于多种输入格式的文档加载器,以及用于拆分文档的文档拆分器,进一步简化了使用大型语言模型的应用程序的开发。

RAG工作流结合LangChain

LangChain是一个全面的自然语言处理平台,在让RAG模型易于访问和更高效方面起着关键作用。以下是LangChain如何融入RAG工作流程的说明:

文档加载器及转换工具

LangChain 提供了一系列文档加载器,可以从各种来源获取文档,包括私有 S3 桶和公共网站。这些文档类型多样,例如 HTML、PDF 或代码。文档转换器组件负责准备这些文档以供检索,包括将大文档拆分成更小、更易处理的片段。

文本嵌入技术

LangChain中的文本嵌入模型旨在与各种文本嵌入服务提供商和方法对接,包括OpenAI、Cohere以及Hugging Face。这些模型生成文本的向量表示,以捕捉其语义含义。这种向量化使得相似文本的高效检索成为可能。

向量数据库

随着嵌入技术的兴起,我们 需要高效的数据库来存储和搜索这些嵌入向量。LangChain 提供了超过 50 种不同向量存储的集成,让用户轻松选择最适合需求的那一个。

寻回犬

在 LangChain 中,检索器提供了一个接口来根据查询检索相关文档。这些检索器可以使用向量存储作为其基础,但也支持其他类型的检索方式。LangChain 的检索器提供了高度灵活的定制选项,从简单的语义搜索到增强性能的高级技术。

缓存词嵌入

LangChain的缓存嵌入功能可以允许嵌入被缓存或存储,减少重新计算的需求,从而提升整体性能。

与Hugging Face的集成

Hugging Face,一个领先的基于变压器的模型平台,提供预训练模型,包括在RAG中使用的模型。LangChain可以与Hugging Face的模型无缝集成,让你可以针对特定任务对它们进行微调和适应。

结论部分

Retrieval-Augmented Generation(RAG)模型在大语言模型技术领域内实现了重大的突破。

LangChain 和类似框架使实现 RAG 和其他增强技术变得更简单,从而能够快速开发出充分利用大语言模型潜力的应用程序。

这些技术之间的协同效应为知识密集型语言相关的任务的创新领域带来了令人兴奋的可能性。

这是理论部分,你已经对RAG工作流有所了解了。接下来的部分我们会动手实现代码。期待下次交流!咱们下次见!

有关RAG代码实现的下一篇文章,可以在这里查看:here

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消