run-llama/llama_index:LLM应用开发框架

run-llama/llama_index 在 GitHub 上已经拿到 49,249 Star。
这是一个开源框架,用于构建智能体应用。配套企业平台 LlamaParse 提供智能 OCR、解析、提取、索引等功能,可与框架结合使用,也可独立运行。

1、 核心功能

LlamaIndex 为 LLM 应用开发提供全套工具链。
它提供数据连接器,支持接入 API、PDF、文档、SQL 等各类数据源和格式。提供数据结构化方式,生成索引、图结构,让数据可直接被 LLM 使用。提供高级检索查询接口,输入任意 LLM 提示词,返回检索到的上下文和知识增强后的输出。支持与外部应用框架集成,包括 LangChain、Flask、Docker、ChatGPT 等。
LlamaIndex 同时适配不同用户需求。高阶 API 允许初学者用5行代码完成数据接入和查询。低阶 API 支持高级用户自定义扩展任意模块,包括数据连接器、索引、检索器、查询引擎、重排序模块等,满足个性化需求。
正文顶部截图

2、 安装方式

LlamaIndex 在 Python 环境下有两种安装模式。
第一种是 starter 模式,直接安装 llama-index 包,包含核心功能和部分常用集成,适合快速上手。
第二种是自定义模式,先安装 llama-index-core 核心包,再从 LlamaHub 选择需要的集成包安装。目前 LlamaHub 有超过300个集成包,可兼容不同 LLM、embedding、向量存储提供商。
库采用命名空间设计,import 语句含 core 表示使用核心包,不含 core 表示使用集成包。示例如下:

# 核心模块导入
from llama_index.core.llms import LLM
# 集成模块导入
from llama_index.llms.openai import OpenAI

3、 配套平台能力

LlamaParse 是独立的文档智能体平台,专注于文档处理相关功能。
它包含 Parse 模块,支持智能 OCR 和130+格式的文档解析。包含 Extract 模块,支持从文档中提取结构化数据。包含 Index 模块,提供数据摄入、索引和 RAG 流水线功能。包含 Split 模块,支持将大文档拆分为子分类。包含 Agents 模块,支持通过 Workflows 和 Agent Builder 构建端到端文档智能体。
README区域截图

4、 基础使用示例

使用 OpenAI 构建简单向量存储索引的代码如下:

import os
os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_API_KEY"
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
documents = SimpleDirectoryReader("YOUR_DATA_DIRECTORY").load_data()
index = VectorStoreIndex.from_documents(documents)

使用非 OpenAI 模型,例如 Ollama 托管的 LLM,代码如下:

from llama_index.core import Settings, VectorStoreIndex, SimpleDirectoryReader
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
from llama_index.llms.ollama import Ollama
from transformers import AutoTokenizer
# 设置 LLM
Settings.llm = Ollama(
    model="llama-3.1:latest",
    request_timeout=360.0,
)
# 设置匹配的 tokenizer
Settings.tokenizer = AutoTokenizer.from_pretrained(
    "meta-llama/Llama-3.1-8B-Instruct"
)
# 设置 embedding 模型
Settings.embed_model = HuggingFaceEmbedding(
    model_name="BAAI/bge-small-en-v1.5"
)
documents = SimpleDirectoryReader("YOUR_DATA_DIRECTORY").load_data()
index = VectorStoreIndex.from_documents(
    documents,
)

查询数据的代码如下:

query_engine = index.as_query_engine()
query_engine.query("YOUR_QUESTION")

默认数据存储在内存中,持久化到磁盘的方法如下:

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)

5、 适用场景

  • 开发 RAG 系统,需要接入各类私有数据的开发者
  • 构建智能体应用,需要处理复杂文档流程的团队
  • 做 LLM 相关产品开发,希望减少数据预处理工作量的从业者
    开源地址:https://github.com/run-llama/llama_index

做 LLM 相关产品开发,希望减少数据预处理工作量的从业者
开源地址:https://github.com/run-llama/llama_index

Logo

更多推荐