llama_index 介绍
了解项目的详细信息和使用方法
🗂️ LlamaIndex 🦙 大语言模型数据框架
LlamaIndex(原GPT Index)是为大语言模型应用量身打造的数据框架。使用LlamaIndex开发时,通常需要结合其核心模块与选定的扩展插件。在Python中,有两种方式开始使用LlamaIndex:
-
入门版:
llama-index
这个基础安装包已包含核心模块和精选扩展。 -
定制版:
llama-index-core
仅安装核心模块,再通过LlamaHub按需添加扩展。目前已有300+扩展包可与核心模块无缝配合,支持各类主流LLM、嵌入模型和向量数据库。
Python库采用命名空间设计,导入语句中的core
表示使用核心模块,不带core
则表示使用扩展模块。
python1# 典型导入模式 2from llama_index.core.xxx import ClassABC # 核心子模块xxx 3from llama_index.xxx.yyy import ( 4 SubclassABC, 5) # 子模块xxx的扩展yyy 6 7# 具体示例 8from llama_index.core.llms import LLM # 核心LLM接口 9from llama_index.llms.openai import OpenAI # OpenAI扩展
重要链接
LlamaIndex.TS (TypeScript/JavaScript版)
生态体系
- LlamaHub (社区数据加载器库)
- LlamaLab (基于LlamaIndex的前沿AGI项目)
🚀 核心价值
注意:本文档更新可能滞后,请以官方文档为准!
背景洞察
- 大语言模型在知识生成与推理方面表现卓越,但其训练仅基于公开数据
- 如何将私有数据有效融入LLM?
我们需要一套完整的工具链来实现LLM的数据增强。
解决方案
LlamaIndex应运而生,作为构建LLM应用的数据框架,提供以下核心能力:
- 多样化数据连接器:支持API、PDF、文档、SQL等各类数据源
- 智能数据结构化:通过索引和图结构优化数据组织形式
- 高级检索接口:输入任意提示词,获取经过知识增强的响应
- 无缝系统集成:兼容LangChain、Flask、Docker、ChatGPT等框架
既提供5行代码快速上手的顶层API,也开放底层模块(数据连接器、索引、检索器等)的深度定制能力。
📄 文档资源
完整文档请访问官网,包含最新教程、指南和API参考。
💻 使用示例
sh1# 自定义安装组合 2pip install llama-index-core 3pip install llama-index-llms-openai 4pip install llama-index-llms-replicate 5pip install llama-index-embeddings-huggingface
示例代码位于docs/examples
目录,索引实现详见indices
文件夹。
使用OpenAI构建向量索引:
python1import os 2os.environ["OPENAI_API_KEY"] = "您的OpenAI密钥" 3 4from llama_index.core import VectorStoreIndex, SimpleDirectoryReader 5 6documents = SimpleDirectoryReader("数据目录").load_data() 7index = VectorStoreIndex.from_documents(documents)
使用Replicate平台的Llama 2模型:
python1import os 2os.environ["REPLICATE_API_TOKEN"] = "您的Replicate令牌" 3 4from llama_index.core import Settings, VectorStoreIndex, SimpleDirectoryReader 5from llama_index.embeddings.huggingface import HuggingFaceEmbedding 6from llama_index.llms.replicate import Replicate 7from transformers import AutoTokenizer 8 9# 配置LLM 10llama2_7b_chat = "meta/llama-2-7b-chat:8e6975e5ed6174911a6ff3d60540dfd4844201974602551e10e9e87ab143d81e" 11Settings.llm = Replicate( 12 model=llama2_7b_chat, 13 temperature=0.01, 14 additional_kwargs={"top_p": 1, "max_new_tokens": 300} 15) 16 17# 配置Tokenizer 18Settings.tokenizer = AutoTokenizer.from_pretrained("NousResearch/Llama-2-7b-chat-hf") 19 20# 配置嵌入模型 21Settings.embed_model = HuggingFaceEmbedding(model_name="BAAI/bge-small-en-v1.5") 22 23documents = SimpleDirectoryReader("数据目录").load_data() 24index = VectorStoreIndex.from_documents(documents)
执行查询:
python1query_engine = index.as_query_engine() 2query_engine.query("您的问题")
默认数据存储在内存中,持久化到磁盘(./storage
):
python1index.storage_context.persist()
从磁盘加载:
python1from llama_index.core import StorageContext, load_index_from_storage 2 3storage_context = StorageContext.from_defaults(persist_dir="./storage") 4index = load_index_from_storage(storage_context)
🔧 依赖管理
采用poetry管理Python包依赖,各包依赖项详见对应目录下的pyproject.toml
文件。
bash1cd <目标包目录> 2pip install poetry 3poetry install --with dev