前言
在学习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运用框架结合。现在,用的比较多的是LangChain
。LangChain
与LlamaIndex
一同联手,打造私有专家常识库AI智能体系,很快很强大。
- Data Agent
第一个比方
让咱们根据官方文档Starter Tutorial – LlamaIndex 0.9.13运用一下LlamaIndex
,这儿咱们用的是colab环境下的python note book。
- 装置llama-index
!pip install -q llama-index
- 数据集
!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环境变量
import os
os.environ['OPENAI_API_KEY'] = 'your valid openai api key'
- 读取文件,并转化为向量索引
from llama_index import VectorStoreIndex, SimpleDirectoryReader
documents = SimpleDirectoryReader('data').load_data()
index = VectorStoreIndex.from_documents(documents)
向量存储索引构建过程中,默认会运用到OpenAI。
- 构建查询索引
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运用,十分好用。