如何构建LLM申请(一):什么是RAG?

2024年03月08日 由 alex 发表 276 0

什么是检索增强生成?

如果你一直在向量存储或其他数据库中查找数据,并在生成输出时将相关信息作为上下文传递给 LLM,那么你已经在进行检索增强生成了。检索增强生成(简称 RAG)是 Meta 于 2020 年推广的一种架构,旨在通过将相关信息与问题/任务细节一起传递给模型来提高 LLM 的性能。


为什么是 RAG?

LLM 是在大型数据集上训练出来的,可以利用其参数化内存回答任何问题或完成任务。这些模型的知识截止日期取决于它们上次接受训练的时间。当被问及知识库之外的问题或知识截止日期之后发生的事件时,模型很有可能会产生幻觉。Meta 公司的研究人员发现,通过提供手头任务的相关信息,模型完成任务的性能会显著提高。


例如,如果模型被问及一个发生在截止日期之后的事件,那么提供该事件的相关信息作为上下文,然后再提问,将有助于模型正确回答问题。由于 LLM 的上下文窗口长度有限,我们只能传递与当前任务最相关的知识。我们在上下文中添加的数据的质量会影响模型生成的回答的质量。人工智能从业者在 RAG 管道的不同阶段使用多种技术来提高 LLM 的性能。


高级 RAG 架构

LangChain 有一个最小(但不是最简单)形式的 RAG 示例:


典型的 RAG 应用程序有两个主要组件:


  • 索引: 从数据源摄取数据并编制索引的管道。这通常是离线进行的。
  • 检索和生成: 实际的 RAG 链,它在运行时接收用户查询,并从索引中检索相关数据,然后将其传递给模型。


从原始数据到答案的最常见完整序列如下:


索引


  1. 加载 首先,我们需要加载数据。这可以通过 DocumentLoaders 来完成。
  2. 分割: 文本分割器可将大文档分割成小块。这对于索引数据和将数据传入模型都很有用,因为大块数据更难搜索,而且无法放入模型有限的上下文窗口中。
  3. 存储: 我们需要一个地方来存储和索引我们的拆分数据,以便日后进行搜索。这通常需要使用向量存储和嵌入模型。


19


检索: 给定用户输入,使用检索器从存储中检索相关的分片。

生成: 聊天模型/LLM 使用包含问题和检索数据的提示生成答案。


20


from langchain.document_loaders import WebBaseLoader
from langchain.indexes import VectorstoreIndexCreator
loader = WebBaseLoader("https://www.promptingguide.ai/techniques/rag")
index = VectorstoreIndexCreator().from_loaders([loader])
index.query("What is RAG?")


通过这五行代码,我们得到了 RAG 的描述,但代码被严重抽象化,因此很难理解发生了什么: 我们获取网页(本例中的知识库)的内容。


  1. 处理源内容并将其存储到知识库(本例中为向量数据库)中。
  2. 我们输入一个提示,LangChain 从知识库中查找信息,并将提示和知识库结果传递给 LLM。


虽然这个脚本对于原型设计和理解 RAG 的主要功能很有帮助,但对于超越这个阶段并没有什么用处,因为你没有太多的控制权。下面我们就来讨论实施过程中的问题。


总结

在 LLM 应用程序系列的第一部分,我们剖析了检索增强生成(RAG)在增强大型语言模型(LLM)中的重要作用。从了解 RAG 背后的动机到探索 LLM 应用程序架构的各个组成部分,我们揭开了这些应用程序的层层面纱。


我们深入探讨了知识库检索的复杂性,强调了 ETL 管道和工具(如 Unstructured、LlamaIndex 和 LangChain 的文档加载器)的重要性。此外,还强调了维护更新知识库的重要性,以及高效的文档索引流程。


相关文章

1、如何构建LLM申请(二):RAG数据准备过程

2、如何构建LLM申请(三): 用于生成文本的各种嵌入模型

3、如何构建LLM申请(四):矢量数据库

4、如何构建LLM申请(五):探索的过程

文章来源:https://medium.com/@vipra_singh/building-llm-applications-introduction-part-1-1c90294b155b
欢迎关注ATYUN官方公众号
商务合作及内容投稿请联系邮箱:bd@atyun.com
评论 登录
热门职位
Maluuba
20000~40000/月
Cisco
25000~30000/月 深圳市
PilotAILabs
30000~60000/年 深圳市
写评论取消
回复取消