LlamaIndex 高层次概念
本篇内容为您快速介绍在构建基于大型语言模型(LLM)的应用程序时会频繁遇到的一些核心概念。
增强检索生成(RAG)
LLM 是基于海量数据训练而成,但并未涵盖您的具体数据。增强检索生成(Retrieval-Augmented Generation, RAG)通过将您的数据添加至 LLM 已有的数据集中,解决了这一问题。在本文档中,您将频繁看到对 RAG 的引用。
在 RAG 中,您的数据被加载并为查询做好准备,即“索引”。用户查询作用于索引,筛选出与查询最为相关的数据上下文。随后,该上下文连同查询一同传递给 LLM,并附带一个提示(prompt),LLM 根据这些信息提供响应。
即使您正在构建的是聊天机器人或智能代理,也应掌握 RAG 技术,以便将数据引入您的应用程序。
RAG 中的关键阶段
RAG 包含五个关键阶段,这些阶段也将成为您构建的任何大型应用程序的组成部分。它们分别是:
加载(Loading):指将您的数据从原始存储位置(如文本文件、PDF、网站、数据库或 API)导入到处理流程中。LlamaHub 提供了数百种连接器供您选择。
索引(Indexing):这意味着创建一种数据结构,允许对数据进行查询。对于 LLM 而言,这几乎总是意味着生成向量嵌入(vector embeddings),即数据意义的数值表示,同时采用多种元数据策略,便于准确找到与上下文相关联的数据。
存储(Storing):一旦数据被索引,通常需要存储索引以及其它元数据,以避免重复索引。
查询(Querying):对于任何索引策略,都有多种方式利用 LLM 和 LlamaIndex 数据结构进行查询,包括子查询、多步骤查询和混合策略。
评估(Evaluation):评估是管道中的关键步骤,用于衡量其相对于其他策略的有效性或在进行更改后的效果。评估提供了查询响应的准确度、忠实度和速度等客观指标。
各阶段中的重要概念
在每个阶段中,您还会遇到一些与其中步骤相关的术语。
加载阶段
节点(Nodes)与文档(Documents):文档是任何数据源(如 PDF、API 输出或数据库检索数据)的容器。节点是 LlamaIndex 中数据的基本单元,代表源文档中的“数据块”。节点包含与所属文档及其它节点相关的元数据。
连接器(Connectors):数据连接器(通常称为 Reader)负责从不同数据源和数据格式中摄取数据,将其转化为文档和节点。
索引阶段
索引(Indexes):在摄取数据后,LlamaIndex 将帮助您将数据组织成易于检索的结构。这通常涉及生成向量嵌入,存储在名为向量存储(vector store)的专用数据库中。索引还可存储关于数据的各种元数据。
嵌入(Embeddings):LLM 生成数据的数值表示,即嵌入。当过滤数据以寻找相关项时,LlamaIndex 将查询转换为嵌入,而向量存储则查找与查询嵌入数值上相似的数据。
查询阶段
检索器(Retrievers):检索器定义了在接收到查询时如何高效地从索引中检索相关上下文。您的检索策略对所检索数据的相关性和检索效率至关重要。
路由器(Routers):路由器决定从知识库中检索相关上下文时使用哪个检索器。具体而言,RouterRetriever 类负责选择一个或多个候选检索器执行查询。它们使用选择器根据每个候选者的元数据和查询选择最佳选项。
节点后处理器(Node Postprocessors):节点后处理器接收一组已检索节点,对其应用变换、过滤或重新排序逻辑。
响应合成器(Response Synthesizers):响应合成器使用用户查询和给定的一组检索到的文本片段,通过 LLM 生成响应。
结合运用
基于数据的 LLM 应用程序有无数种用例,但大致可分为以下三类:
查询引擎(Query Engines):查询引擎是一条端到端的流水线,使您能够针对数据提出问题。它接收自然语言查询,并返回响应,同时提供传递给 LLM 的参考上下文。
聊天引擎(Chat Engines):聊天引擎是一条端到端的流水线,支持您与数据进行对话(多次来回交流而非单次问与答)。
智能代理(Agents):智能代理是由 LLM 驱动的自动化决策者,通过一组工具与外界互动。代理可以根据任务需求采取任意数量的步骤完成指定任务,动态决定最佳行动方案,而不是遵循预设步骤。这种灵活性使其能应对更为复杂的任务。
Ref: https://docs.llamaindex.ai/en/stable/getting_started/concepts/
Link:https://www.cnblogs.com/farwish/p/18133680
LlamaIndex 高层次概念的更多相关文章
- 高层次综合(HLS)-简介
本文是我近段时间的学习总结,主要参考了Xilinx的技术文档以及部分网上其他资料.文档主要包括ug998<Introduction to FPGA Design Using High-Level ...
- TensorFlow高层次机器学习API (tf.contrib.learn)
TensorFlow高层次机器学习API (tf.contrib.learn) 1.tf.contrib.learn.datasets.base.load_csv_with_header 加载csv格 ...
- Python 完美诠释"高内聚"概念的 IO 流 API 体系结构
1. 前言 第一次接触 Python 语言的 IO API 时,是惊艳的.相比较其它语言所提供的 IO 流 API . 无论是站在使用者的角度还是站在底层设计者的角度,都可以称得上无与伦比. 很多人在 ...
- Kotlin将Realm提升到更高层次
作者:Víctor Manuel Pineda 时间:Feb 14, 2017 原文链接:https://antonioleiva.com/kotlin-realm-extensions/ 当有人问我 ...
- Azure 上的高可用概念
更多内容,添加公众号关注: 场景一: 某智能家居厂家,用户喊出“小X同学,帮我扫地”后,服务器宕机了,扫地机器人不能立即启动,于是,用户可能再连续喊几次后,无奈又习惯的按下了扫地机器人的启动按钮. 场 ...
- Java高并发-概念
一.为什么需要并行 业务要求 http处理多个客户端请求 java虚拟机启动多个线程 进程开销比线程大的多 性能 多线程在多核系统比单线程要好的多 摩尔定律失效 二.几个重要概念 2.1 同步和异步 ...
- 基于URL的高层次Java网络编程
一致资源定位器URL URL(Uniform Resource Locator)是一致资源定位器的简称,它表示Internet上某一资源的地址.通过URL我们可以访问Internet上的各种网络资源, ...
- C#学习历程(五)[高阶概念]
>>修饰符的访问权限 private : 私有成员, 在类的内部才可以访问. protected: 保护成员,该类内部和继承类中可以访问. public: 公共成员,完全公开,没有访问限制 ...
- 如何编写高质量的C#代码(一)
从"整洁代码"谈起 一千个读者,就有一千个哈姆雷特,代码质量也同样如此. 想必每一个对于代码有追求的开发者,对于"高质量"这个词,或多或少都有自己的一丝理解.当 ...
- 关于HTTP协议,一篇就够了
HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送 ...
随机推荐
- TCP可靠传输的保证
我们知道传输层提供最主要的两种协议,TCP和UDP,其中TCP是保证可靠传输,为什么他要保证可靠传输呢,IP说:当然是我不能,我只提供尽力而为的服务,不保证你能不能交付,不保证能不能正确的交付,不保证 ...
- 【Atcoder F - Cumulative Cumulative Cumulative Sum】线段树
要特别注意下精度,long,int范围.WA了几次 import java.util.Scanner; class Main { // static long[] A2 ;//i^2*AI // st ...
- uni学习笔记分享
目录介绍 01.遇到问题汇总 02.关于布局设置 03.基础语法总结 04.关于交互问题 06.关于回传数据 07.关于网络请求 08.关于页面刷新 09.关于注意问题 10.待解决和思考 01.遇到 ...
- WebStorm 没有找到本地修改记录LocalChanges,怎么查看本地修改记录
一直用IDEA做后端Java开发,也写过vue+elementUI的前端代码,但前后端都放在一个项目里写,本地修改代码记录,可以在git-LocalChanges中查看修改记录. 最近前后端分离,自己 ...
- springboot 低于 2.6 版本设置 SameSite=None,springboot 1.x set SameSite=none in embedded tomcat
speingboot 使用自带的 tomcat 运行,设置 SameSite. springboot 过低的版本没有 SameSite 的属性设置,升级到 1.5.22 版本后,虽然 Rfc6265C ...
- 工作中常用且容易遗忘的 CSS 样式清单
注:本文转载自公众号 Vue中文社区的一篇文章 1.文字超出部分显示省略号 单行文本的溢出显示省略号(一定要有宽度) p{ width:200rpx; overflow: hidden; ...
- C# OpenCvSharp 轮廓检测
效果 代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data ...
- KingbaseES 表级设置autovacuum有关参数和触发机制
前言 在表级别设置autovacuum有关参数清理表的死亡元祖可以有效规避autovacuum触发全局默认阈值的高峰.例如,如果想让表的autovacuum任务更频繁,可以在表级设置更小的触发auto ...
- KingbaseES使用kbbench计算连接耗时
前言 本文讨论一下KingbaseES数据库中如何计算数据库连接耗时.有这样一个场景,不借助第三方工具,在数据库服务端计算1000个数据库连接的总耗时,并取得每个连接耗时的平均值.怎样实现呢?我们可以 ...
- Android记账本界面实现
<!--activity_main.xml-->1 <?xml version="1.0" encoding="utf-8"?> 2 & ...