什么是RAG检索增强生成?
00 min
2024-2-22
2024-6-24
type
status
date
slug
summary
tags
category
icon
password
从检索增强生成(RAG)应用的角度学习大型语言模型(LLM)。
notion image
  1. 什么是检索增强生成? (Retrieval Augmented Generation)
    1. 如果您一直在矢量存储或其他数据库中查找数据,并在生成输出时将相关信息作为上下文传递给 LLM,那么您已经在进行检索增强生成了。检索增强生成(简称 RAG)是 Meta 于 2020 年推广的一种架构,旨在通过将相关信息与问题/任务细节一起传递给模型来提高 LLM 的性能。
  1. 为什么是 RAG?
    1. LLM 是在大量数据的基础上训练出来的,可以回答任何问题或利用参数化记忆完成任务。
      这些模型的知识截止日期取决于它们上次接受训练的时间。当被问及知识库之外的问题或知识截止日期之后发生的事件时,模型很有可能会产生”幻觉“。
      Meta 的研究人员发现,通过提供手头任务的相关信息,模型完成任务的性能会显著提高
      例如,如果模型被问及一个发生在截止日期之后的事件,那么提供该事件的相关信息作为上下文,然后再提问,将有助于模型正确回答问题。由于 LLM 的上下文窗口长度有限,我们只能传递与当前任务最相关的知识。我们在上下文中添加的数据的质量会影响模型生成的回答的质量。人工智能从业者在 RAG 管道的不同阶段使用多种技术来提高 LLM 的性能。
  1. RAG 架构
    1. LangChain 有一个最小形式的 RAG 例子:
      一个典型的 RAG 应用程序有两个主要组件:
      索引 Indexing:从数据源摄取数据,并编制索引的管道。这通常是离线进行的。
      检索和生成 Retrieval and Generation:实际的 RAG 链,它在运行时接收用户查询,并从索引中检索相关数据,然后将其传递给模型。
      从原始数据到答案的最常见完整序列如下所示:
      索引 Indexing
    2. 加载:首先,我们需要加载数据。这可以通过 DocumentLoaders 来完成。
    3. 分割:文本分割器可将大文档分割成小块。这对于索引数据和将数据传入模型都很有用,因为大块数据更难搜索,而且无法放入模型有限的上下文窗口中。
    4. 存储:我们需要一个地方来存储和索引我们的拆分数据,以便日后进行搜索。这通常需要使用向量存储和嵌入模型。
    5. 检索:根据用户输入,使用检索器从存储中检索相关的分块。
    6. 生成:聊天模型/LLM 使用包含问题和检索数据的提示生成答案。
    7. notion image
      notion image
      通过这五行代码,我们获得了 RAG 的描述,但代码被完全抽象化,因此很难理解发生了什么:我们获取一个网页(本例中的知识库)的内容。
      处理源内容并将其存储到知识库(本例中为向量数据库)中。
      我们输入一个提示,LangChain 从知识库中查找信息,并将提示和知识库结果传递给 LLM。
      虽然这个脚本有助于建立原型和了解使用 RAG 的主要步骤,但它对于超越这个阶段并没有什么用处,因为没有太多的控制权。之后让我们来讨论实施过程中的问题。
      Translate from Vipra Singh
       
上一篇
Consensus.AI
下一篇
RAG中的数据准备

Comments
  • Giscus