llama_index 官方文档阅读笔记 (持续更新版)

llama 0.10.17🦙版本 阅读

链接: LlamaIndex 🦙 v0.10.17

LlamaIndex 是一个基于 LLM 的应用程序的数据框架,它受益于上下文增强。这种LLM系统被称为RAG系统,代表“检索-增强生成”LlamaIndex 提供了必要的抽象,以便更轻松地摄取、构建和访问私有或特定于域的数据,以便将这些数据安全可靠地注入 LLM,以实现更准确的文本生成。

🚀 为什么选择上下文增强?LLM的局限

LLM 在人类和数据之间提供了一个自然语言接口。广泛可用的模型是在大量公开数据(如维基百科、邮件列表、教科书、源代码等)上预先训练的。然而,虽然 LLM 是在大量数据上训练的,但它们并没有在你的数据上训练,这些数据可能是私有的,也可能是特定于你试图解决的问题。它位于 API 后面、SQL 数据库中,或被困在 PDF 和幻灯片中。

您可以选择使用您的数据微调 LLM,但是:LLM是昂贵的由于培训成本高昂,很难用最新信息更新 LLM。缺乏可观测性。当你问一个LLM一个问题时,LLM是如何得出答案的并不明显。

无需微调,而是可以使用称为检索增强生成 (RAG) 的上下文增强模式来获取与特定数据相关的更准确的文本生成。RAG 涉及以下高级步骤:首先从数据源中检索信息,将其作为上下文添加到您的问题中,然后要求 LLM 根据丰富的提示回答。

通过这样做,RAG 克服了微调方法的所有三个弱点:不涉及培训,所以很便宜只有在您提出要求时才会获取数据,因此数据始终是最新的LlamaIndex 可以向您显示检索到的文档,因此更值得信赖。

🦙 为什么选择 LlamaIndex 进行上下文增强?

首先,LlamaIndex 对您使用 LLM 的方式没有限制。您仍然可以将 LLM 用作自动完成、聊天机器人、半自主代理等(请参阅左侧的用例)。它只会使 LLM 与您更相关。LlamaIndex 提供以下工具来帮助您快速建立生产就绪的 RAG 系统:

数据连接器从其本机源和格式引入现有数据。这些可以是 API、PDF、SQL 等等。

数据索引以中间表示形式构建数据,这些表示形式对 LLM 来说既简单又高效

引擎提供对数据的自然语言访问。例如:查询引擎是用于知识增强输出的强大检索接口。聊天引擎是用于与数据进行多消息“来回”交互的对话界面。

数据代理是由 LLM 驱动的知识工作者,通过工具进行增强,从简单的帮助程序函数到 API 集成等。

应用程序集成将 LlamaIndex 重新绑定到生态系统的其余部分。这可能是 LangChain、Flask、Docker、ChatGPT 或……别的东西!

开始

要安装库,请执行以下操作:

pip install llama-index

我们建议您从如何阅读这些文档开始,这些文档将根据您的经验水平为您指明正确的位置。

社区

相关项目

安装设置过程略。

检索增强生成 (RAG)

LLM 是在大量数据上训练的,但它们不是在您的数据上训练的。检索增强生成 (RAG) 通过将数据添加到 LLM 已经有权访问的数据中来解决这个问题。在本文档中,您将经常看到对 RAG 的引用。在 RAG 中,您的数据被加载并准备用于查询或“索引”。用户查询作用于索引,索引将数据筛选到最相关的上下文。然后,此上下文和您的查询会随着提示一起转到 LLM,LLM 会提供响应。即使您正在构建的是聊天机器人或代理,您也希望了解将数据导入应用程序的 RAG 技术。

RAG 中的阶段

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

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

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

  • 存储:数据编制索引后,您几乎总是希望存储索引以及其他元数据,以避免重新编制索引。

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

  • 评估:任何管道中的关键步骤是检查它相对于其他策略的有效性,或者何时进行更改。评估提供了客观的衡量标准,以衡量您对查询的响应的准确性、忠实度和速度

每个步骤中的重要概念

您还会遇到一些术语,这些术语指的是每个阶段中的步骤。

加载阶段

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

连接器: 数据连接器(通常称为 Reader)将来自不同数据源和数据格式的数据引入到 DocumentsNodes中。

索引阶段

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

嵌入: LLM生成称为embeddings的数据的数字表示。在筛选数据的相关性时,LlamaIndex 会将查询转换为嵌入,并且向量存储将查找与查询嵌入在数值上相似的数据

查询阶段

猎犬检索器定义在给定查询时如何有效地从索引中检索相关上下文。检索策略是检索数据的相关性和效率的关键。

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

节点后处理器: 节点后处理器接收一组检索到的节点,并对其应用转换、过滤或重新排序逻辑

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

把它们放在一起

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

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

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

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

自定义任务需求:自定义教程 – LlamaIndex 🦙 v0.10.17

  构建 LLM 应用程序#

版权声明:本文为博主作者:皮卡丘ZPC原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/weixin_51657614/article/details/136564565

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2024年5月6日
下一篇 2024年5月6日

相关推荐