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

使用案例

数据支持的 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.xdnf.cn/news/1538123.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

cdr怎么画虚线?

虚线是以点或者短线画成的断续的线,多用于几何图形或者标记。我们在平常学习工作中经常使用标记的方式。根据国标制图规定 机械制图 图样画法 图线规定,技术图样中,主要使用细虚线和粗虚线两种,细虚线用以表示不可见棱边线和不可见…

使用高版本nodej报错:node: /lib64/libm.so.6: version `GLIBC_2.27‘ not found

如果要更新GLIBC_2.27会很繁琐,且耗时较长,所以建议下载带glibc的版本的nodejs 解决方案:下载带glibc的版本安装,如果是使用nvm则解压到对应的版本控制路径 我使用的版本是v20.16.0:Index of /download/release/v20.1…

apk反编译修改教程系列-----修改apk 去除软件加固状态 实例操作步骤解析_1【二十七】

上期博文我们基本了解了apk的一些加固方面的常识。了解了加固的一些手段与 列举了加固检测的方法。其实对于初学者来说。这些常识了解一下即可。具体还是要实际应用。今天将陆续以实例操作来演示有些apk应用去加固的步骤。尽量步骤详细到每一步方便对照操作。 通过博文了解 1…

SD-WAN如何保障企业数据安全?

SD-WAN(软件定义广域网)作为一种现代化网络解决方案,不仅能够优化和管理广域网的连接,还集成了一系列安全功能,帮助企业保护其数据安全。以下将详细介绍SD-WAN如何有效保障企业数据安全的机制。 在采用SD-WAN技术之前&…

杭州等保测评揭秘:数据安全如何成为企业的“一道锁”

在数字化时代,数据安全已成为企业和机构面临的重要挑战。杭州作为科技创新的前沿城市,积极推进信息安全建设,其中等保测评(等级保护测评)成为保障数据安全的重要手段。 等保测评是依据《信息安全等级保护管理办法》对…

进程的重要函数

进程的重要函数: fork函数 了解fork函数 通过调用fork()函数&#xff0c;则会产生一个新的进程。调用fork()函数的进程叫做 父进程&#xff0c;产生的新进程则为子进程。 其编码过程: 1.函数功能: 函数头文件 #include <sys/types.h> #include <unistd.h> 函数…

AI绘画Stable Diffusion 自制素材工具: layerdiffusion插件—你的透明背景图片生成工具

大家好&#xff0c;我是灵魂画师向阳 今天给大家分享一款AI绘画的神级插件—LayerDiffusion。 Layerdiffusion是一个用于stable-diffusion-webui 的透明背景生成&#xff08;不是生成图再工具扣图&#xff0c;是直接生成透明背景透明图像&#xff09;插件扩展&#xff0c;它可…

C++ STL全面解析:六大核心组件之一----迭代器(STL进阶学习)

目录 迭代器&#xff08;iterator&#xff09; 迭代器的分类 迭代器的使用 创建迭代器 迭代器的基本操作 使用迭代器遍历容器 迭代器的有效性和安全性 迭代器的类型 迭代器与算法 迭代器设计思维 迭代器的本质 文件 mylist-iter.h 文件 mylist-iter-test.cpp 迭代…

多线程学习篇三:共享带来的问题及解决方案

1. 共享带来的问题 1.1 案例演示 两个线程对初始值为 0 的静态变量一个做自增&#xff0c;一个做自减&#xff0c;各做 5000 次&#xff0c;结果是 0 吗&#xff1f; Slf4j(topic "c.Sync01") public class Sync01 {private static int COUNTER 0;public static…

一次渲染十万条数据:前端技术优化(上)

今天看了一篇文章&#xff0c;写的是一次性渲染十万条数据的方法&#xff0c;本文内容是对这篇文章的学习总结&#xff0c;以及知识点补充。 在现代Web应用中&#xff0c;前端经常需要处理大量的数据展示&#xff0c;例如用户评论、商品列表等。直接渲染大量数据会导致浏览器性…

【C++登堂入室】类和对象(下)

目录 一、 再谈构造函数 1.1 构造函数体赋值 1.2 初始化列表 1.3 explicit关键字 二、static成员 2.1 概念 2.2 特性 三、友元函数 3.1 友元函数 3.2 友元类 四、内部类 五、 再次理解类和对象 结尾 一、 再谈构造函数 1.1 构造函数体赋值 在创建对象时&#xf…

【C++】多态的认识和理解

个人主页 文章目录 ⭐一、多态的概念&#x1f384;二、多态的定义及实现1.多态的构成2.实现多态的条件3.虚函数的概念4.虚函数的重写和覆盖5.析构函数的重写6.协变7.override和 final关键字8.重载、重写/覆盖、隐藏这三者的区别 &#x1f3e0;三、纯虚函数和抽象类的关系&#…

三目运算及简单案例

//三目运算是用来简化判断的 //所谓的三目 有三个表达式组成 //表达式一 条件表达式 返回的结果是布尔 //表达式二 条件表达式结果为true 时 返回的结果 //表达式三 条件表达式结果为false 时 返回的值 int age 20; //获取用…

树莓派驱动之spi回环测试

开启spi sudo raspi-config选择Interfacing options,选择spi打开 lsmod可以看到spi_bcm2835 短接MISO和MOSI 编写回环代码spitest.c #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <fcntl.h> #include <string.h>…

【Python机器学习】NLP信息提取——命名实体与关系

我们希望计算机能够从文本中提取信息和事实&#xff0c;从而略微理解用户所说的内容。例如&#xff0c;当用户说“提醒我星期一浏览***.org网站”&#xff0c;我们希望这句话触发当天后下一个周一的日程或者提醒的操作。 要触发上述操作&#xff0c;需要知道“我”代表一种特定…

【devops】devops-gitlab之部署与日常使用

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…

新任项目经理,如何快速接手项目

新任项目经理踏上管理岗位&#xff0c;面临着前所未有的挑战与机遇。如何快速适应角色&#xff0c;有效管理团队&#xff0c;确保项目顺利推进&#xff0c;是每一位新任项目经理必须面对的。 一、深入了解项目与团队 1、项目定位与规划 新任项目经理应对项目进行全面的调研与…

初识zookeeper

Zookeeper介绍 Zookeeper是Apache Hadoop项目下的一个子项目&#xff0c;是一个树形目录服务。 Zookeeper是一个分布式的、开源的分布式应用程序的协调服务。 Zookeeper提供的主要功能包括&#xff1a; 配置管理分布式锁集群管理 Zookeeper数据模型 Zookeeper客户端常用命…

windows使用tcpdump.exe工具进行抓包教程

windows主机安装一些抓包工具可能有些不方便&#xff0c;这里有一个tcpdump.exe工具直接免安装&#xff0c;可以直接使用进行抓包。&#xff08;工具下载见 附件&#xff09; tcpdump.exe使用教程 如下&#xff1a; 1&#xff1a;tcpdump -D 可查看网络适配器(注意前面的编号)…

分治算法专题(一)——快速排序之【三路划分】

目录 1、分治算法简介 2、算法应用【leetcode】 2.1 题一&#xff1a;颜色分类 2.1.1 算法原理 2.2.1 算法代码 2.2 题二&#xff1a;排序数组——数组分三块原理 2.2.1 算法原理 2.2.2 算法代码 2.3 题三&#xff1a;数组中的第K个最大元素 2.3.1 算法原理 2.3.2 算…