LlamaIndex 一 简单文档查询

前言

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

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

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

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

LlamaIndex的功能模块

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

  • Data Connectors

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

  • Data Indexes

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

  • Engines

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

  • Application Integrations

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

  • 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'
  • 读取文件,并转化为向量索引
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返回的索引对象,可以创建查询引擎,我们向该引擎的查询,将会由大模型和大模型需要的索引数据一起,得到答案。

总结

  • LlamaIndex搭建了大模型与私有数据间的沟通桥梁
  • Query Engine模块,LlamaIndex为大模型提供了其需要的数据格式, Data Index 和 查询接口,对打造知识库RAG应用,非常好用。
相关推荐
CSDN专家-赖老师(软件之家)14 分钟前
养老院管理系统+小程序项目需求分析文档
vue.js·人工智能·小程序·mybatis·springboot
emperinter32 分钟前
WordCloudStudio Now Supports AliPay for Subscriptions !
人工智能·macos·ios·信息可视化·中文分词
南门听露1 小时前
无监督跨域目标检测的语义一致性知识转移
人工智能·目标检测·计算机视觉
夏沫の梦1 小时前
常见LLM大模型概览与详解
人工智能·深度学习·chatgpt·llama
WeeJot嵌入式1 小时前
线性代数与数据挖掘:人工智能中的核心工具
人工智能·线性代数·数据挖掘
AI小白龙*2 小时前
Windows环境下搭建Qwen开发环境
人工智能·windows·自然语言处理·llm·llama·ai大模型·ollama
cetcht88882 小时前
光伏电站项目-视频监控、微气象及安全警卫系统
运维·人工智能·物联网
惯师科技2 小时前
TDK推出第二代用于汽车安全应用的6轴IMU
人工智能·安全·机器人·汽车·imu
HPC_fac130520678164 小时前
科研深度学习:如何精选GPU以优化服务器性能
服务器·人工智能·深度学习·神经网络·机器学习·数据挖掘·gpu算力
猎嘤一号4 小时前
个人笔记本安装CUDA并配合Pytorch使用NVIDIA GPU训练神经网络的计算以及CPUvsGPU计算时间的测试代码
人工智能·pytorch·神经网络