AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


LlamaIndex是如何进行RAG的?
发布日期:2024-04-19 06:32:48 浏览次数: 1996 来源:PyTorch研习社


RAG 的全称是 Retrieval Augmented Generation,也就是“检索增强生成”。

LLM 接受过大量数据的训练,但这些训练数据中不包括你的数据。RAG 通过将你的数据添加到 LLM 已经有权访问的数据中来解决这个问题。

在 RAG 中,你的数据已加载并准备好用于查询或索引。用户查询作用于索引,索引将数据过滤到最相关的上下文。然后,此上下文和你的查询连同提示一起转到 LLM,LLM 负责生成回复。

RAG 的步骤

RAG 中有五个关键阶段,这将成为你构建的任何大型应用程序的一部分。这些都是:

  • 加载(Loading):这是指将数据从其所在位置(无论是文本文件、PDF、其他网站、数据库还是 API)获取到你的管道中。LlamaHub 提供数百种连接器可供选择。

  • 索引(Indexing):这意味着创建一个允许查询数据的数据结构。对于 LLM 来说,这几乎总是意味着创建 vector embedding(文本含义的数字表示),以及许多其他元数据策略,以便轻松准确地找到上下文相关的数据。

  • 存储(Storing):一旦数据被索引,你几乎总是希望存储索引以及其他元数据,以避免重新索引。

  • 查询(Querying):对于任何给定的索引策略,你可以通过多种方式利用 LLM 和 LlamaIndex 数据结构进行查询,包括子查询、多步查询和混合策略。

  • 评估(Evaluating):何管道中的关键步骤是检查它相对于其他策略的有效性,或者何时进行更改。评估提供客观衡量你对查询的答复的准确性、忠实度和速度的程度。

每个步骤中的重要概念

加载阶段

node 和 document:document 是任何数据源的容器 - 例如 PDF、API 输出或从数据库检索数据。node 是 LlamaIndex 中数据的原子单元,表示源文档的“块”。node 具有将它们与它们所在的 document 以及其他 node 相关联的元数据。

连接器:数据连接器(通常称为读取器)将来自不同数据源和数据格式的数据提取到 document 和 node 中。

索引阶段

索引:获取数据后,LlamaIndex 将帮助你将数据索引到易于检索的结构中。这通常涉及生成向量嵌入,并将其存储在称为向量存储的专用数据库中。索引还可以存储有关数据的各种元数据。

嵌入(embedding):LLM 生成数据的数字表示,称为嵌入。在过滤数据的相关性时,LlamaIndex 会将查询转换为嵌入,并且你的向量存储将查找在数字上与查询的嵌入相似的数据。

查询阶段

检索器:检索器定义在给定查询时如何从索引有效检索相关上下文。你的检索策略对于检索数据的相关性及其完成效率至关重要。

路由器:路由器确定将使用哪个检索器从知识库检索相关上下文。更具体地说,RouterRetriever 类负责选择一个或多个候选检索器来执行查询。他们使用选择器根据每个候选检索器的元数据和查询来选择最佳选项。

node 后处理器:node 后处理器接收一组检索到的 node 并对它们应用转换、过滤或重新排序逻辑。

响应合成器:响应合成器使用用户查询和给定的一组检索到的文本块从 LLM 生成响应。

把它们放在一起

有数据支持的 LLM 应用程序有无数的用例,但它们可以大致分为三类:

  • 查询引擎:查询引擎是一个端到端管道,允许你对数据提出问题。它接受自然语言查询,并返回响应,以及检索并传递给 LLM 的参考上下文。

  • 聊天引擎:聊天引擎是一个端到端的管道,用于与你的数据进行对话(多次来回而不是单个问答)。

  • 代理:代理是由 LLM 提供支持的自动化决策者,通过一组工具与世界进行交互。代理可以采取任意数量的步骤来完成给定的任务,动态地决定最佳的行动方案,而不是遵循预先确定的步骤。这赋予它额外的灵活性来处理更复杂的任务。


53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询