📦 run-llama/llama_index:领先的文档代理与OCR平台
英文标题:📦 run-llama/llama_index
LlamaIndex 是用于构建智能代理应用的开源框架,同时提供企业级文档代理和OCR平台 LlamaParse,支持130+种格式的文档解析、结构化提取、索引与RAG流水线。框架采用核心包与超过300个集成插件灵活组合的设计,开发者可自定义LLM、嵌入与向量存储。该工具链能帮助团队将私有数据高效融入大语言模型,显著降低构建知识增强型应用的门槛。
2.1 KB
1.5 KB
1.5 KB
2.5 KB
6.8 KB
1.5 KB
1.5 KB
1.7 KB
57.5 KB
中文
LlamaIndex OSS(由 LlamaIndex 提供)是一个用于构建智能代理应用的开源框架。Parse 是我们面向代理OCR、解析、提取、索引等场景的企业平台。你可以将 LlamaParse 与该框架结合使用,也可以单独使用;有关注册和产品链接,请参见下方的 LlamaParse 部分。
使用 LlamaIndex 进行构建通常需要同时使用 LlamaIndex core 以及一组选定的集成(或插件)。在 Python 中有两种开始使用 LlamaIndex 构建的方式:
-
入门方式:
llama-index。一个包含核心 LlamaIndex 以及若干精选集成的入门 Python 包。 -
自定义方式:
llama-index-core。安装核心 LlamaIndex,然后根据你的应用需要,在 LlamaHub 上添加所选的 LlamaIndex 集成包。目前有超过 300 个与核心无缝配合的集成包,让你可以使用自己喜欢的 LLM、嵌入模型和向量存储提供商进行构建。
LlamaIndex Python 库的命名空间设计使得包含 core 的 import 语句表示正在使用核心包,而不含 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
from llama_index.llms.openai import OpenAI
LlamaParse(文档代理平台)
LlamaParse 本身是一个专注于文档代理和代理OCR的平台。它包括 Parse(解析)、LlamaAgents(可部署的文档代理)、Extract(结构化提取)和 Index(摄入与 RAG)。你可以将它与 LlamaIndex 框架一起使用,也可以独立使用。
- 注册 LlamaParse — 创建账号并获取 API 密钥。
- Parse — 代理OCR与文档解析(支持130+种格式)。文档
- Extract — 从文档中提取结构化数据。文档
- Index — 摄入、索引和 RAG 流水线。文档
- Split — 将大型文档拆分为子类别。文档
- Agents — 使用
Workflows和 Agent Builder 构建端到端文档代理。文档
注意:本 README 的更新频率低于文档。请查阅上方文档以获取最新信息!
- 大语言模型(LLM)是一项出色的知识生成与推理技术。它们在海量公开数据上进行了预训练。
- 我们如何最好地用自己的私有数据增强 LLM?
我们需要一套全面的工具包来实现这种面向 LLM 的数据增强。
LlamaIndex 正是为此而生。LlamaIndex 是一个可帮助你构建 LLM 应用的“数据框架”,它提供了以下工具:
- 提供数据连接器来摄入手现有的数据源和数据格式(API、PDF、文档、SQL 等)。
- 提供数据组织方式(索引、图),使这些数据能够轻松地与 LLM 配合使用。
- 提供基于数据的高级检索/查询接口:输入任何 LLM 提示,即可获得检索到的上下文和知识增强后的输出。
- 允许与你的外部应用框架轻松集成(例如 LangChain、Flask、Docker、ChatGPT 或其他任何框架)。
LlamaIndex 同时为初级用户和高级用户提供了工具。高级 API 允许初级用户用 5 行代码完成数据摄入和查询。低级 API 则允许高级用户根据需要自定义和扩展任何模块(数据连接器、索引、检索器、查询引擎、重排序模块等)。
有兴趣参与贡献?我们对 LlamaIndex core 的贡献以及构建在核心之上的集成贡献均持欢迎态度并大力鼓励!详情请查看我们的贡献指南。
新的集成应与现有的 LlamaIndex 框架组件进行有意义的整合。部分集成可能会根据 LlamaIndex 维护者的判断而被拒绝。
完整文档可在此处找到:文档
请查阅文档以获取最新的教程、操作指南、参考和其他资源!
# 自定义选择与核心配合使用的集成包
pip install llama-index-core
pip install llama-index-llms-openai
pip install llama-index-llms-ollama
pip install llama-index-embeddings-huggingface
示例位于 docs/examples 文件夹中。索引位于 indices 文件夹中(参见下方索引列表)。
English / 原文
LlamaIndex OSS (by LlamaIndex) is an open-source framework to build agentic applications. Parse is our enterprise platform for agentic OCR, parsing, extraction, indexing and more. You can use LlamaParse with this framework or on its own; see LlamaParse below for signup and product links.
Building with LlamaIndex typically involves working with LlamaIndex core and a chosen set of integrations (or plugins). There are two ways to start building with LlamaIndex in Python:
-
Starter :
llama-index. A starter Python package that includes core LlamaIndex as well as a selection of integrations. -
Customized :
llama-index-core. Install core LlamaIndex and add your chosen LlamaIndex integration packages on LlamaHub that are required for your application. There are over 300 LlamaIndex integration packages that work seamlessly with core, allowing you to build with your preferred LLM, embedding, and vector store providers.
The LlamaIndex Python library is namespaced such that import statements which include core imply that the core package is being used. In contrast, those statements without core imply that an integration package is being used.
# typical pattern
from llama_index.core.xxx import ClassABC # core submodule xxx
from llama_index.xxx.yyy import (
SubclassABC,
) # integration yyy for submodule xxx
# concrete example
from llama_index.core.llms import LLM
from llama_index.llms.openai import OpenAI
LlamaParse (document agent platform)
LlamaParse is its own platform—focused on document agents and agentic OCR. It includes Parse (parsing), LlamaAgents (deployed document agents), Extract (structured extraction), and Index (ingest and RAG). You can use it with the LlamaIndex framework or standalone.
- Sign up for LlamaParse — Create an account and get your API key.
- Parse — Agentic OCR and document parsing (130+ formats). Docs
- Extract — Structured data extraction from documents. Docs
- Index — Ingest, index, and RAG pipelines. Docs
- Split — Split large documents into subcategories. Docs
- Agents — Build end-to-end document agents with
Workflowsand Agent Builder. Docs
NOTE : This README is not updated as frequently as the documentation. Please check out the documentation above for the latest updates!
- LLMs are a phenomenal piece of technology for knowledge generation and reasoning. They are pre-trained on large amounts of publicly available data.
- How do we best augment LLMs with our own private data?
We need a comprehensive toolkit to help perform this data augmentation for LLMs.
That's where LlamaIndex comes in. LlamaIndex is a "data framework" to help you build LLM apps. It provides the following tools:
- Offers data connectors to ingest your existing data sources and data formats (APIs, PDFs, docs, SQL, etc.).
- Provides ways to structure your data (indices, graphs) so that this data can be easily used with LLMs.
- Provides an advanced retrieval/query interface over your data : Feed in any LLM input prompt, get back retrieved context and knowledge-augmented output.
- Allows easy integrations with your outer application framework (e.g. with LangChain, Flask, Docker, ChatGPT, or anything else).
LlamaIndex provides tools for both beginner users and advanced users. Our high-level API allows beginner users to use LlamaIndex to ingest and query their data in 5 lines of code. Our lower-level APIs allow advanced users to customize and extend any module (data connectors, indices, retrievers, query engines, reranking modules), to fit their needs.
Interested in contributing? Contributions to LlamaIndex core as well as contributing integrations that build on the core are both accepted and highly encouraged! See our Contribution Guide for more details.
New integrations should meaningfully integrate with existing LlamaIndex framework components. At the discretion of LlamaIndex maintainers, some integrations may be declined.
Full documentation can be found here
Please check it out for the most up-to-date tutorials, how-to guides, references, and other resources!
# custom selection of integrations to work with core
pip install llama-index-core
pip install llama-index-llms-openai
pip install llama-index-llms-ollama
pip install llama-index-embeddings-huggingface
Examples are in the docs/examples folder. Indices are in the indices folder (see list of indices below).
To build a simple vector store index using 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)
To build a simple vector store index using non-OpenAI LLMs, e.g. LLMs hosted through Ollama:
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
# set the LLM
Settings.llm = Ollama(
model="llama-3.1:latest",
request_timeout=360.0,
)
# set tokenizer to match LLM
Settings.tokenizer = AutoTokenizer.from_pretrained(
"meta-llama/Llama-3.1-8B-Instruct"
)
# set the embed model
Settings.embed_model = HuggingFaceEmbedding(
model_name="BAAI/bge-small-en-v1.5"
)
documents = SimpleDirectoryReader("YOUR_DATA_DIRECTORY").load_data()
index = VectorStoreIndex.from_documents(
documents,
)
To query:
query_engine = index.as_query_engine()
query_engine.query("YOUR_QUESTION")
By default, data is stored in-memory. To persist to disk (under ./storage):
index.storage_context.persist()
To reload from disk:
from llama_index.core import StorageContext, load_index_from_storage
# rebuild storage context
storage_context = StorageContext.from_defaults(persist_dir="./storage")
# load index
index = load_index_from_storage(storage_context)
A note on Verification of Build Assets
By default, llama-index-core includes a _static folder that contains the nltk and tiktoken cache that is included with the package installation. This ensures that you can easily run llama-index in environments with restrictive disk access permissions at runtime.
To verify that these files are safe and valid, we use the github attest-build-provenance action. This action will verify that the files in the _static folder are the same as the files in the llama-index-core/llama_index/core/_static folder.
To verify this, you can run the following script (pointing to your installed package):
#!/bin/bash
STATIC_DIR="venv/lib/python3.13/site-packages/llama_index/core/_static"
REPO="run-llama/llama_index"
find "$STATIC_DIR" -type f | while read -r file; do
echo "Verifying: $file"
gh attestation verify "$file" -R "$REPO" || echo "Failed to verify: $file"
done
Reference to cite if you use LlamaIndex in a paper:
@software{Liu_LlamaIndex_2022,
author = {Liu, Jerry},
doi = {10.5281/zenodo.1234},
month = {11},
title = {{LlamaIndex}},
url = {https://github.com/jerryjliu/llama_index},
year = {2022}
}