构建 LLM 应用程序时经常遇到的高级概念的快速指南

devtools/2024/9/23 8:29:00/

使用案例

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

结构化数据提取 Pydantic 提取器允许您指定要从数据中提取的精确数据结构,并使用 LLM 以类型安全的方式填充缺失的部分。这对于从 PDF、网站等非结构化来源中提取结构化数据非常有用,并且是自动化工作流程的关键。

查询引擎:查询引擎是一种端到端流程,可让您针对数据提出问题。它接收自然语言查询,并返回响应,以及检索并传递给 LLM 的参考上下文。

聊天引擎:聊天引擎是一种与您的数据进行对话的端到端流程(多次来回对话而不是单个问答)。

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

检索增强生成 (RAG)

提示

如果您还没有,请在阅读本文之前安装 LlamaIndex并完成入门教程。这将有助于您在经验中巩固这些步骤。

LLM 是在大量数据上进行训练的,但它们并不是在您的数据上进行训练的。检索增强生成 (RAG) 通过将您的数据添加到 LLM 已经可以访问的数据中来解决此问题。您将在本文档中经常看到对 RAG 的引用。查询引擎、聊天引擎和代理经常使用 RAG 来完成其任务。

RAG 中,您的数据会被加载并准备用于查询或“索引”。用户查询将根据索引进行,索引会将您的数据过滤到最相关的上下文。然后,此上下文和您的查询将连同提示一起发送到 LLMLLM 会提供答复。

即使您正在构建的是聊天机器人或代理,您也需要了解将数据传入应用程序的 RAG 技术。

在这里插入图片描述

RAG 内的阶段

RAG 中有五个关键阶段,它们将成为您构建的大多数大型应用程序的一部分。它们是:

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

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

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

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

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

在这里插入图片描述

RAG 中的重要概念

您还会遇到一些涉及每个阶段内的步骤的术语。

加载阶段

  • 节点和文档:ADocument是任何数据源的容器 - 例如,PDF、API 输出或从数据库检索数据。ANode是 LlamaIndex 中数据的原子单位,代表源的“块”Document。节点具有将它们与所在文档和其他节点相关联的元数据。

  • 连接器:数据连接器(通常称为Reader)将来自不同数据源和数据格式的数据导入Documents和Nodes。

索引阶段

  • 索引:一旦您提取了数据,LlamaIndex 将帮助您将数据索引为易于检索的结构。这通常涉及生成存储vector embeddings在称为 的专用数据库中的数据vector store。索引还可以存储有关数据的各种元数据。

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

查询阶段

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

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

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

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


http://www.ppmy.cn/devtools/113834.html

相关文章

基于python+django+vue的外卖管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于pythondjangovueMySQL的外…

国产服务器CPU发展分析

CPU行业概览:信创带动服务器CPU国产化 目前CPU行业由两大生态体系主导:一是基于X86指令系统和Windows操作系统的Wintel体系,主要用于服务器与电脑等;二是基于ARM指令系统和Android操作系统的AA体系,主要用于移动设备…

项目实战 (11)---搜索进度

目录 背景 相关技术 需要解决的问题 查询进度实时展示 描述 代码 python 后端 html JS 运行效果 查询逻辑结合 描述 代码 运行效果 总结与问题 背景 通过前面1-10,视频搜索系统的前后端及视频录入功能已经可以正常使用。但是我们清楚随着视频量的增加及客户搜…

NFT Insider #147:Sandbox 人物化身九月奖励上线;Catizen 付费用户突破百万

市场数据 加密艺术及收藏品新闻 Doodles 动画特别剧《Dullsville and The Doodleverse》在多伦多国际电影节首映 Doodles 最近在多伦多国际电影节(TIFF)首映了其动画特别剧《Dullsville and The Doodleverse》,这是该品牌的一个重要里程碑。…

adb的安装和使用 以及安装Frida 16.0.10+雷电模拟器

.NET兼职社区 .NET兼职社区 .NET兼职社区 1.下载adb Windows版本:https://dl.google.com/android/repository/platform-tools-latest-windows.zip 2.配置adb环境变量 按键windowsr打开运行,输入sysdm.cpl,回车。 高级》环境变量》系统变量》…

2024最新版零基础学习Modbus通信协议(保姆级教程)

合集 - 上位机开发(2) 1.零基础学习Modbus通信协议09-13 2.RS485与ModbusRTU09-10 收起 大家好!我是付工。 2012年开始接触Modbus协议,至今已经有10多年了,从开始的懵懂,到后来的顿悟,再到现在的开悟,…

最优化理论与自动驾驶(一):概述

目录 1. 最优化理论的原理 2. 最优化问题的分类 1. 按目标函数的性质分类 2. 按变量的性质分类 3. 按约束条件分类 4. 按时间维度分类 5. 按不确定性分类 6. 按决策变量的维度分类 3. 常用的最优化方法 1. 梯度类优化算法 2. 约束优化算法 3. 启发式算法 4. 线性规…

Sqoop

Sqoop 是一个用于在 Hadoop 和关系型数据库(如 MySQL、PostgreSQL、Oracle 等)之间高效传输数据的工具。它的全称是 SQL to Hadoop,主要用于将结构化数据从关系型数据库导入 Hadoop 的分布式存储系统(如 HDFS、Hive、HBase&#x…