项目详情
深入了解 llama_index 的功能与特性
🗂️ LlamaIndex 🦙 大语言模型数据框架
LlamaIndex(原GPT Index)是为大语言模型应用量身打造的数据框架。使用LlamaIndex开发时,通常需要结合其核心模块与选定的扩展插件。在Python中,有两种方式开始使用LlamaIndex:
-
入门版:
llama-index这个基础安装包已包含核心模块和精选扩展。 -
定制版:
llama-index-core仅安装核心模块,再通过LlamaHub按需添加扩展。目前已有300+扩展包可与核心模块无缝配合,支持各类主流LLM、嵌入模型和向量数据库。
Python库采用命名空间设计,导入语句中的core表示使用核心模块,不带core则表示使用扩展模块。
# 典型导入模式
from llama_index.core.xxx import ClassABC # 核心子模块xxx
from llama_index.xxx.yyy import (
SubclassABC,
) # 子模块xxx的扩展yyy
# 具体示例
from llama_index.core.llms import LLM # 核心LLM接口
from 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参考。
💻 使用示例
# 自定义安装组合
pip install llama-index-core
pip install llama-index-llms-openai
pip install llama-index-llms-replicate
pip install llama-index-embeddings-huggingface
示例代码位于docs/examples目录,索引实现详见indices文件夹。
使用OpenAI构建向量索引:
import os
os.environ["OPENAI_API_KEY"] = "您的OpenAI密钥"
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
documents = SimpleDirectoryReader("数据目录").load_data()
index = VectorStoreIndex.from_documents(documents)
使用Replicate平台的Llama 2模型:
import os
os.environ["REPLICATE_API_TOKEN"] = "您的Replicate令牌"
from llama_index.core import Settings, VectorStoreIndex, SimpleDirectoryReader
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
from llama_index.llms.replicate import Replicate
from transformers import AutoTokenizer
# 配置LLM
llama2_7b_chat = "meta/llama-2-7b-chat:8e6975e5ed6174911a6ff3d60540dfd4844201974602551e10e9e87ab143d81e"
Settings.llm = Replicate(
model=llama2_7b_chat,
temperature=0.01,
additional_kwargs={"top_p": 1, "max_new_tokens": 300}
)
# 配置Tokenizer
Settings.tokenizer = AutoTokenizer.from_pretrained("NousResearch/Llama-2-7b-chat-hf")
# 配置嵌入模型
Settings.embed_model = HuggingFaceEmbedding(model_name="BAAI/bge-small-en-v1.5")
documents = SimpleDirectoryReader("数据目录").load_data()
index = VectorStoreIndex.from_documents(documents)
执行查询:
query_engine = index.as_query_engine()
query_engine.query("您的问题")
默认数据存储在内存中,持久化到磁盘(./storage):
index.storage_context.persist()
从磁盘加载:
from llama_index.core import StorageContext, load_index_from_storage
storage_context = StorageContext.from_defaults(persist_dir="./storage")
index = load_index_from_storage(storage_context)
🔧 依赖管理
采用poetry管理Python包依赖,各包依赖项详见对应目录下的pyproject.toml文件。
cd <目标包目录>
pip install poetry
poetry install --with dev