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 )服务器传输超文本到本地浏览器的传送 ...
随机推荐
- getClass()方法----getName()方法
public class Test { public static void main(String[] args) { Person p = new Person(1,"刘德华" ...
- VR虚拟现实原型制作-应用及解决方案的特点
VR虚拟现实原型制作 利用VR虚拟现实软件进行原型制作可以用于增强原型测试期间的沉浸感,减少产品设计迭代次数,并将与产品原型制作相关的成本降低40-65%. VR虚拟现实原型制作市场规模 用于原型制作 ...
- 实时云渲染技术_如何助力VR虚拟现实走向成熟?
近年来,虚拟现实(Virtual Reality, VR)技术在市场上的应用越来越广泛,虚拟现实已成为一个热门的科技话题.相关数据显示,2019年至2021年,我国虚拟现实市场规模不断扩大,从2019 ...
- Android组件化开发实践和案例分享
目录介绍 1.为什么要组件化 1.1 为什么要组件化 1.2 现阶段遇到的问题 2.组件化的概念 2.1 什么是组件化 2.2 区分模块化与组件化 2.3 组件化优势好处 2.4 区分组件化和插件化 ...
- 浅析三维模型OBJ格式轻量化压缩集群处理方法
浅析三维模型OBJ格式轻量化压缩集群处理方法 三维模型的OBJ格式轻量化压缩是指通过一系列技术和方法将三维模型的文件大小进一步减小,以提高模型在计算机中的加载.传输和存储效率.集群处理技术是指利用多台 ...
- DevOps迈向标准化,平台工程让开发运维更轻松
在近一代人的时间里,DevOps 在软件开发和运维领域占据了主导地位.这是一套开发人员都离不开的技能和方法.Pearl Zhu 在 "The Digital Master" 一书中 ...
- 重新点亮linux 命令树————进程的控制[二十二]
前言 简单整理一下进程的控制 正文 进程优先级 nice 从-20-19,值越小,优先级越高 renice 从新设置优先级 进程的作业控制: job 那么先来创建一个进程. 那么使用top -p 26 ...
- 重新点亮linux 命令树————权限的修改[十]
前言 简单介绍一下文件的权限修改. 正文 chmod 修改文件.目录的权限 chmod u+x /tmp/testfile chmod u-x /tmp/testfile u 表示用户 g 表示组 o ...
- 堡垒机安装pytorch,mmcv,mmclassification,并训练自己的数据集
堡垒机创建conda环境,并激活进入环境 conda create -n mmclassification python=3.7 conda activate mmclassification 堡垒机 ...
- React 逃离闭包陷阱
众所周知,JavaScript 中的闭包(Closures)一定是这种语言最可怕的特性之一,即使是无所不知的 ChatGPT 也是这样说的.另外它可能也是最隐蔽的语言特性之一,我们在编写 React ...