LlamaIndex 一 简单文档查询

前言

在学习LangChain的时候,我接触到了LlamaIndex。它犹如我在开发vue时用到的axios,主要负责数据打理。别问我为什么打这个比方,前端老狗,重走AI路,闭关一年能否学的妥当?

LlamaIndex 是一个用于 LLM 应用程序的数据框架,用于注入,结构化,并访问私有或特定领域数据。LLM(各种大模型)基于全网公开数据,向我们提供了基于自然语言交互的接口能力。但是,当我们在开发一些AI应用时,需要基于私有或特定数据来增强LLM的能力。LlamaIndex擅长将散落于各种数据库、各种文档的知识,与LLM结合,为AI应用提供定制性的ARG能力。如下图:

image.png

左边是它支持的大模型,右边是数据的来源,可以是数据库、各类文档和原有各种APIS。当我们在帮助大型企业或机构开发其私有专家知识库时,LlamaIndex帮我们摆平这些纷繁复杂的数据。

之前帮一位年营业额几个亿的朋友,开发公司内部知识库系统时,看到的数据来源,犹如n年没打扫的房间一样, 乱的要死,如果你在AI应用开发时,也遭遇了这样的感受,就先停下来学习LlamaIndex吧,它为我们建立了数据孤岛,也就是图中的Data Silos。LlamaIndex帮助我们在大模型和私有数据间搭建了沟通的桥梁。

LlamaIndex的功能模块

image.png

LlamaIndex为我们提供了如上图的五大功能模块,我们一一来解析。

  • Data Connectors

它帮助应用程序注入已有的数据,从字面意义也好理解,帮助程序连接各种数据,专治各种数据源、不同格式(数据库、API、…、SQL),Data Connectors都提供了相应的接口。

  • Data Indexes

该模块帮助我们将数据转换成大模型更好处理的数据格式。下图列出了四种,其中包括我们在使用OpenAI的Embedding接口时,经常使用的向量数据,并存到Chromadb中。在后面的例子中,我们会一一介绍。

image.png

  • Engines

引擎提供了我们自然语言访问数据的模块和接口。比如,查询引擎Query,具有强大的查询接口,能够帮助我们构建基于知识的输出。聊天引擎Chat,是一个对话的接口,能够具有沟通能力,具有记忆、聊天历史等功能

  • Application Integrations

如下图,此模块可以方便的将LlamaIndex与AI应用框架结合。目前,用的比较多的是LangChainLangChainLlamaIndex一起联手,打造私有专家知识库AI智能系统,很快很强大。image.png

  • Data Agent

第一个例子

让我们基于官方文档Starter Tutorial - LlamaIndex 🦙 0.9.13使用一下LlamaIndex,这里我们用的是colab环境下的python note book。

  • 安装llama-index
css复制代码!pip install -q llama-index
  • 数据集
bash复制代码!mkdir data
!wget https://raw.githubusercontent.com/jerryjliu/llama_index/main/examples/paul_graham_essay/data/paul_graham_essay.txt -O data/paul_graham_essay.txt

创建data文件夹,并使用wget下载paul_graham_essay.txt文件,保存到data目录下。

  • 引入OpenAI,并设置OPENAI_API_KEY环境变量
lua复制代码import os 
os.environ['OPENAI_API_KEY'] = 'your valid openai api key'

image.png

  • 读取文件,并转化为向量索引
ini复制代码from llama_index import VectorStoreIndex, SimpleDirectoryReader 
documents = SimpleDirectoryReader('data').load_data() 
index = VectorStoreIndex.from_documents(documents)

向量存储索引构建过程中,默认会使用到OpenAI。

  • 构建查询索引
ini复制代码query_engine = index.as_query_engine() 
response = query_engine.query("Who is the author?")
print(response)
response2 = query_engine.query("Introduce me Paul Graham") print(response2)

这轮的LlamaIndex学习,更加系统。LlamaIndex返回的索引对象,可以创建查询引擎,我们向该引擎的查询,将会由大模型和大模型需要的索引数据一起,得到答案。

image.png

总结

  • LlamaIndex搭建了大模型与私有数据间的沟通桥梁
  • Query Engine模块,LlamaIndex为大模型提供了其需要的数据格式, Data Index 和 查询接口,对打造知识库RAG应用,非常好用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/23458.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端项目打包、部署的基础 (vue)

详细请看B站视频 BV19n4y1d7Gr 《禹神:前端项目部署指南,前端项目打包上线》,本博客为自用视频笔记。 目录 项目打包vue打包打包前分析项目请求 本地服务器部署问题 & 解决问题1:刷新页面404问题问题2:ajax请求废…

【人工智能】第六部分:ChatGPT的进一步发展和研究方向

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 目录 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌…

秀肌肉-海外短剧系统的案例展示

多语种可以选择,分销功能,多种海外支付方式,多种登录模式可供选择,总之你想到的我们都做了,你没想到的我们也都做了

企微自动化机器人的应用与前景

一、引言 随着信息技术的飞速发展,企业对于提高内部运营效率、降低人力成本的需求日益迫切。在这样的背景下,企微自动化机器人应运而生,以其高效、便捷的特点,迅速成为企业内部的得力助手。本文将深入探讨企微自动化机器人的应用现…

头歌易-算式运算的合法性

给定一个算式运算,算式由运算数、+、-、*、/、(、)组成,请编写程序判断该算式运算是否合法。如果合法,计算该算式的值。 输入描述: 第一行输入一个运算表达式 输出描述: 如果表达式合法则计算其值,结果保留两位小数,如果不合法则输出 表达式不合法! 输入样例: (5+3)…

Partially Spoofed Audio Detection论文介绍(ICASSP 2024)

An Efficient Temporary Deepfake Location Approach Based Embeddings for Partially Spoofed Audio Detection 论文翻译名:一种基于部分欺骗音频检测的基于临时深度伪造位置方法的高效嵌入 摘要: 部分伪造音频检测是一项具有挑战性的任务&#xff0…

NSSCTF-Web题目6

目录 [NISACTF 2022]checkin 1、题目 2、知识点 3、思路 [NISACTF 2022]babyupload 1、题目 2、知识点 3、思路 [SWPUCTF 2022 新生赛]1z_unserialize 1、题目 2、知识点 3、思路 [NISACTF 2022]checkin 1、题目 2、知识点 010编辑器的使用、url编码 3、思路 打…

基于NANO 9K 开发板加载PICORV32软核,并建立交叉编译环境

目录 0. 环境准备 1. 安装交叉编译器 2. 理解makefile工作机理 3. 熟悉示例程序的代码结构,理解软核代码的底层驱动原理 4. 熟悉烧录环节的工作机理, 建立下载环境 5. 编写例子blink, printf等, 加载运行 6. 后续任务 0.…

2024年华为OD机试真题-多段线数据压缩-C++-OD统一考试(C卷D卷)

2024年OD统一考试(D卷)完整题库:华为OD机试2024年最新题库(Python、JAVA、C++合集)​ 题目描述: 下图中,每个方块代表一个像素,每个像素用其行号和列号表示。 为简化处理,多段线的走向只能是水平、竖直、斜向45度。 上图中的多段线可以用下面的坐标串表示:(2, 8), (3…

Modbus TCP转CanOpen网关携手FANUC机器人助力新能源汽车

Modbus TCP转CanOpen网关与FANUC机器手臂的现场应用可以实现FANUC机器手臂与其他设备之间的数据交换和通信。CANopen是一种常见的网络协议,用于处理机器和设备之间的通信,并广泛应用于自动化领域。而Modbus TCP是一种基于TCP/IP协议的通信协议&#xff0…

智慧互联网医院系统开发指南:从源码到在线问诊APP

近期,互联网医院系统的热度非常高,很多人跟小编提问如何开发,今天小编将从零开始为大家详解互联网医院系统源码,以及在线问诊APP开发技术。 一、需求分析与系统设计 1.1 需求分析 用户管理 预约挂号 在线问诊 电子病历 药品…

定个小目标之每天刷LeetCode热题(11)

这是道简单题,只想到了暴力解法,就是用集合存储起来,然后找出其中的众数,看了一下题解,发现有多种解法,我觉得Boyer-Moore 投票算法是最优解,看了官方对这个算法的解释,我是这样理解…

手把手教你用Spring Boot搭建AI原生应用

作者 | 文心智能体平台 导读 本文以快速开发一个 AI 原生应用为目的,介绍了 Spring AI 的包括对话模型、提示词模板、Function Calling、结构化输出、图片生成、向量化、向量数据库等全部核心功能,并介绍了检索增强生成的技术。依赖 Spring AI 提供的功能…

Go基础编程 - 04 - 基本类型、常量和变量

目录 1. 基本类型2. 常量iota 3. 变量3.1 变量声明3.2 自定义类型、类型别名3.3 类型推导3.4 类型断言3.5 类型转换 Go 基础编程 - 03 - init、main、_ 1. 基本类型 支持八进制、十六进制,以及科学记数法 零值:只做了声明,但未做初始化的变量…

进阶之格式化qDebug()输出

创作灵感 刚刚在看qt帮助手册时&#xff0c;无意间在<QtGlobal>中看见了这个函数void qSetMessagePattern(const QString &pattern)&#xff0c;该函数的精华在于&#xff0c;你可以直接重定义qDebug()的输出结果格式。以往打印调试内容&#xff0c;调试内容所在的行…

大数据和数据分析来优化推荐算法

当涉及到使用大数据和数据分析来优化推荐算法时&#xff0c;通常我们会结合编程语言和特定的数据分析工具来实现。以下是一个简化的流程&#xff0c;以及在该流程中可能涉及的代码和工具内容的详细介绍。 1. 数据收集与预处理 工具&#xff1a;Python, pandas, NumPy 代码示例…

00-macOS和Linux安装和管理多个Python版本

在 Mac 上安装多个 Python 版本可通过几种不同方法实现。 1 Homebrew 1.1 安装 Homebrew 若安装过&#xff0c;跳过该步。 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 1.2 安装 Python 如安装 Python …

统计每天某个时间范围内得 数据状态

来统计在特定条件下的记录数。具体来说&#xff0c;并且这些记录必须满足以下时间条件和存在条件&#xff1a; 时间条件&#xff1a;当前时间的小时和分钟部分在0600&#xff08;早上6点&#xff09;和0800&#xff08;早上8点&#xff09;之间。这是通过SUBSTRB和TO_CHAR函数实…

计算机毕业设计 | SSM 校园线上订餐系统 外卖购物网站(附源码)

1&#xff0c; 概述 1.1 项目背景 传统的外卖方式就是打电话预定&#xff0c;然而&#xff0c;在这种方式中&#xff0c;顾客往往通过餐厅散发的传单来获取餐厅的相关信息&#xff0c;通过电话来传达自己的订单信息&#xff0c;餐厅方面通过电话接受订单后&#xff0c;一般通…

Time-LLM :超越了现有时间序列预测模型的学习器

AI预测相关目录 AI预测流程&#xff0c;包括ETL、算法策略、算法模型、模型评估、可视化等相关内容 最好有基础的python算法预测经验 EEMD策略及踩坑VMD-CNN-LSTM时序预测对双向LSTM等模型添加自注意力机制K折叠交叉验证optuna超参数优化框架多任务学习-模型融合策略Transform…