什么是RAG(Retrieval Augmented Generation)

现在的大语言模型对话app基本都用了RAG,下图是我在腾讯元宝(腾讯的大语言模型对话app)的一个问答截图,从图中可以看到app在回答我的问题之前,先找到了13篇资料作为参考,这个找外部资料的动作并利用,然后回答,就到了RAG。

RAG,Retrieval Augmented Generation(检索增强生成),是一个框架,这个框架可以构建以大预言模型为基础的系统,它利用外部数据源来弥补大语言模型的局限性。RAG是克服知识截止问题的有效方式,可以帮助模型更新对世界的理解。虽然你可以通过在新数据上重新训练模型来更新其知识,但这样做会很快变得非常昂贵,并且需要不断地重新训练以定期更新模型的新知识。一个更灵活、成本更低的方法是在推理时让你的模型访问额外的外部数据。在你希望语言模型访问它在训练期间可能未见过的数据的任何情况下,RAG都是有用的。这可能是未包括在原始训练数据中的新信息文档,或存储在你组织的私有数据库中的专有知识。为你的模型提供外部信息,可以提高其完成任务的相关性和准确性。

检索增强生成并不是一套特定的技术,而是一种为LLM提供训练期间未见数据的框架。存在许多不同的实现方式,你选择哪一种取决于你的任务细节和你需要处理的数据格式。这里我们将讨论Facebook研究人员在2020年发表的关于RAG的最早的论文中讨论的实现方式。这种实现的核心是一个称为“检索器”(Retriever)的模型组件,它包括一个查询编码器和一个外部数据源。编码器将用户的输入提示编码成可以用来查询数据源的形式。在Facebook的论文中,外部数据是一个向量存储。但是它也可以是一个SQL数据库、CSV文件或其他数据存储格式。这两个组件一起训练(训练要fine-tuning 的是query encoder的参数和LLM的参数),以在外部数据中找到与输入查询最相关的文档。检索器从数据源返回最佳的单个或一组文档,并将新信息与原始用户查询结合起来。然后将新扩展的提示传递给语言模型,语言模型生成一个利用该数据的回答。

下图是Facebook研究人员2020年论文里的RAG框架图:

下图来自2023年RAG的一篇综述论文里,演示RAG在问答中的应用:

除了克服知识截止问题外,RAG还可以帮你避免模型在不知道答案时产生幻觉的问题。RAG架构可以用来整合多种类型的外部信息源。你可以通过访问本地文档(包括私有Wiki和专家系统)来增强大型语言模型。RAG还可以实现对互联网的访问,以提取网页上发布的信息,例如维基百科。通过将用户输入提示编码为SQL查询,RAG还可以与数据库进行交互。另一个重要的数据存储策略是向量存储,它包含文本的向量表示。这对于语言模型来说是一种特别有用的数据格式,因为在内部,它们使用语言的向量表示来生成文本。向量存储可以基于相似度实现快速且高效的相关搜索。
值得注意的是,实现RAG比简单地将文本添加到大型语言模型中稍微复杂一些。有几个关键考虑因素需要注意,首先是上下文窗口的大小。大多数文本来源太长,无法适应模型有限的上下文窗口,该窗口最多只有几千个标记。于是,外部数据源被切分成许多块,每一块都可以塞进上下文窗口。像Langchain这样的软件包可以为你处理这项工作。其次,数据需要以一种格式存在,这种格式便于轻松检索最相关的文本。回想一下,大型语言模型并不直接处理文本,而是在嵌入空间中为每个标记创建向量表示。这些嵌入向量使LLM能够通过余弦相似度等度量来识别语义上相关的单词。RAG方法将外部数据切分成小块,然后通过预训练的大型语言模型处理它们,为每一块创建嵌入向量。这些数据的新表示可以存储在称为向量存储的结构中,这些结构允许快速搜索数据集并有效识别语义相关的文本。向量数据库是向量存储的一种特定实现,其中每个向量也由一个键来标识。这可以让RAG生成的文本也包含来自接收文档的引用。

关于RAG,你也可以看这篇写RAG的文章,写的也很清晰:

What is RAG? - Retrieval-Augmented Generation Explained - AWS

Reference:

Generative AI with LLMs - DeepLearning.AI

RAG最初的论文, https://arxiv.org/pdf/2005.11401

RAG的一篇综述论文,https://arxiv.org/pdf/2312.10997

  • 23
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值