首页 > 其他分享 >LlamaIndex 高层次概念

LlamaIndex 高层次概念

时间:2024-04-14 23:14:22浏览次数:24  
标签:检索 RAG 索引 数据 查询 概念 LLM LlamaIndex 高层次

 

本篇内容为您快速介绍在构建基于大型语言模型(LLM)的应用程序时会频繁遇到的一些核心概念。

 

增强检索生成(RAG)

LLM 是基于海量数据训练而成,但并未涵盖您的具体数据。增强检索生成(Retrieval-Augmented Generation, RAG)通过将您的数据添加至 LLM 已有的数据集中,解决了这一问题。在本文档中,您将频繁看到对 RAG 的引用。

在 RAG 中,您的数据被加载并为查询做好准备,即“索引”。用户查询作用于索引,筛选出与查询最为相关的数据上下文。随后,该上下文连同查询一同传递给 LLM,并附带一个提示(prompt),LLM 根据这些信息提供响应。

即使您正在构建的是聊天机器人或智能代理,也应掌握 RAG 技术,以便将数据引入您的应用程序。

 

RAG 中的关键阶段

RAG 包含五个关键阶段,这些阶段也将成为您构建的任何大型应用程序的组成部分。它们分别是:

  1. 加载(Loading):指将您的数据从原始存储位置(如文本文件、PDF、网站、数据库或 API)导入到处理流程中。LlamaHub 提供了数百种连接器供您选择。

  2. 索引(Indexing):这意味着创建一种数据结构,允许对数据进行查询。对于 LLM 而言,这几乎总是意味着生成向量嵌入(vector embeddings),即数据意义的数值表示,同时采用多种元数据策略,便于准确找到与上下文相关联的数据。

  3. 存储(Storing):一旦数据被索引,通常需要存储索引以及其它元数据,以避免重复索引。

  4. 查询(Querying):对于任何索引策略,都有多种方式利用 LLM 和 LlamaIndex 数据结构进行查询,包括子查询、多步骤查询和混合策略。

  5. 评估(Evaluation):评估是管道中的关键步骤,用于衡量其相对于其他策略的有效性或在进行更改后的效果。评估提供了查询响应的准确度、忠实度和速度等客观指标。

 

各阶段中的重要概念

在每个阶段中,您还会遇到一些与其中步骤相关的术语。

加载阶段

  • 节点(Nodes)与文档(Documents):文档是任何数据源(如 PDF、API 输出或数据库检索数据)的容器。节点是 LlamaIndex 中数据的基本单元,代表源文档中的“数据块”。节点包含与所属文档及其它节点相关的元数据。

  • 连接器(Connectors):数据连接器(通常称为 Reader)负责从不同数据源和数据格式中摄取数据,将其转化为文档和节点。

索引阶段

  • 索引(Indexes):在摄取数据后,LlamaIndex 将帮助您将数据组织成易于检索的结构。这通常涉及生成向量嵌入,存储在名为向量存储(vector store)的专用数据库中。索引还可存储关于数据的各种元数据。

  • 嵌入(Embeddings):LLM 生成数据的数值表示,即嵌入。当过滤数据以寻找相关项时,LlamaIndex 将查询转换为嵌入,而向量存储则查找与查询嵌入数值上相似的数据。

查询阶段

  • 检索器(Retrievers):检索器定义了在接收到查询时如何高效地从索引中检索相关上下文。您的检索策略对所检索数据的相关性和检索效率至关重要。

  • 路由器(Routers):路由器决定从知识库中检索相关上下文时使用哪个检索器。具体而言,RouterRetriever 类负责选择一个或多个候选检索器执行查询。它们使用选择器根据每个候选者的元数据和查询选择最佳选项。

  • 节点后处理器(Node Postprocessors):节点后处理器接收一组已检索节点,对其应用变换、过滤或重新排序逻辑。

  • 响应合成器(Response Synthesizers):响应合成器使用用户查询和给定的一组检索到的文本片段,通过 LLM 生成响应。

 

结合运用

基于数据的 LLM 应用程序有无数种用例,但大致可分为以下三类:

  1. 查询引擎(Query Engines):查询引擎是一条端到端的流水线,使您能够针对数据提出问题。它接收自然语言查询,并返回响应,同时提供传递给 LLM 的参考上下文。

  2. 聊天引擎(Chat Engines):聊天引擎是一条端到端的流水线,支持您与数据进行对话(多次来回交流而非单次问与答)。

  3. 智能代理(Agents):智能代理是由 LLM 驱动的自动化决策者,通过一组工具与外界互动。代理可以根据任务需求采取任意数量的步骤完成指定任务,动态决定最佳行动方案,而不是遵循预设步骤。这种灵活性使其能应对更为复杂的任务。

 

AI 新世代

ChatAiOnline

Ref: https://docs.llamaindex.ai/en/stable/getting_started/concepts/

Link:https://www.cnblogs.com/farwish/p/18133680

标签:检索,RAG,索引,数据,查询,概念,LLM,LlamaIndex,高层次
From: https://www.cnblogs.com/farwish/p/18133680

相关文章

  • LlamaIndex 安装与配置(不含OpenAI)
     pipinstallllama-index这是一个包含以下组件的启动包:llama-index-corellama-index-legacy(暂时包含)llama-index-llms-openaillama-index-embeddings-openaillama-index-program-openaillama-index-question-gen-openaillama-index-agent-openaillama-index-rea......
  • LlamaIndex 起步教程(本地模型)
     提示:确保您已先按照自定义安装步骤操作。这是一个著名的“五行代码”起步示例,使用本地LLM(大语言模型)和嵌入模型。我们将使用BAAI/bge-small-en-v1.5作为嵌入模型,通过Ollama服务的Mistral-7B作为LLM。下载数据本示例使用PaulGraham的文章《WhatIWorkedOn》文本......
  • LlamaIndex 探索视频系列
     如果您喜欢通过视频学习,现在正是查看我们的“探索LlamaIndex”系列的好时机。否则,我们建议您继续阅读“理解LlamaIndex”教程。自下而上开发(LlamaDocsBot)这是“探索LlamaIndex”系列中的一个子系列,向您展示如何从零开始构建文档聊天机器人。我们将以“自下而上”的方式......
  • LlamaIndex 常见问题解答(FAQ)
     提示:如果您尚未完成,请安装LlamaIndex并完成起步教程。遇到不熟悉的术语时,请参考高层次概念部分。在这个章节中,我们将从您为起步示例编写的代码开始,展示您可能希望针对不同应用场景对其进行的常见定制方法:python fromllama_index.coreimportVectorStoreIndex,Simp......
  • TiDB基础概念
    TIDB是什么官网这么说的,TiDB是PingCAP公司自主设计、研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理(HybridTransactionalandAnalyticalProcessing,HTAP)的融合型分布式数据库产品,具备水平扩容或者缩容、金融级高可用、实时HTAP、云原生的分......
  • RAG 工具和框架介绍: Haystack、 LangChain 和 LlamaIndex
     Haystack、LangChain和LlamaIndex,以及这些工具是如何让我们轻松地构建RAG应用程序的? 我们将重点关注以下内容:HaystackLangChainLlamaIndex增强LLM那么,为什么会有这些工具存在呢?如你所知,ChatGPT和其他LLM是在某个时间点之前的一组数据上进行训练的。更重要的是,它......
  • 基本概念(二):方差、协方差、相关系数 原点矩和中心矩
    方差期望反应的时均值概念,方差反应的则是数据的波动概念,为了防止±波动在求和过程中抵消以及防止求abs导致的不可导问题,我们使用平方来统计波动数据。随机变量的方差定义为:\[D(X)=E[(X-E(X))^2]\]对上式展开:\[D(X)=E\lbraceX^2-2XE(X)+E(X)^2\rbrace=\\E(X^2)-......
  • 数据结构基础概念
    数据结构基础概念数据结构概念数据结构是计算机科学中用于组织和存储数据的方式。它定义了数据之间的关系,提供了一组操作以访问和修改数据。选择合适的数据结构对于解决特定问题至关重要,不同的数据结构适用于不同的应用场景。以下是数据结构的基本概念:数据元素:数据结构中的基......
  • 【1】消息队列概念
    一、什么是消息队列消息队列中间件,又称为消息队列或者消息中间件,是在消息的传输过程中保存消息的容器。二、消息队列模型JMS规范目前支持两种消息模型:点对点(pointtopoint,queue)和发布/订阅(publish/subscribe,topic)。消息不可重复消费。2.1、点对点模型点对点模式是基于队列......
  • 自编概念补充容器启动流程
    1、初始化流程 ①:如果我想生成bean对象,那么就需要一个beanFactory工厂(DefaultListableBeanFactory);②:如果我想对加了特定注解(如 @Service、@Repository)的类进行读取转化成 BeanDefinition 对象(BeanDefinition 是Spring中极其重要的一个概念,它存储了bean对象的所有......