run-llama/llama_index · 上手攻略
- 仓库:run-llama/llama_index
- 链接:https://github.com/run-llama/llama_index
- 分类:ai
- 作者:Jay
- 更新:2026-07-10
一、是什么
LlamaIndex 是一个开源框架,用于构建 Agentic(智能体)应用。它最初以"RAG(检索增强生成)框架"闻名,随着大模型 Agent 概念的兴起,已逐步演进为覆盖文档解析、索引构建、知识库问答、Agent 编排的完整技术栈。
核心组件:
| 组件 | 定位 |
|---|---|
| LlamaParse | 文档解析平台(Agentic OCR),支持 130+ 格式文档提取 |
| LlamaAgents | 可部署的文档 Agent 运行时 |
| Extract | 从非结构化文档中做结构化数据抽取 |
| Index | 数据摄取、RAG 索引管道 |
项目配套有商业平台 LlamaCloud,提供企业级解析、存储服务。开源框架本身完全免费。
二、解决什么问题
- 文档解析乱码/结构丢失 — 传统 OCR 对 PDF/PPT/Word 效果差,LlamaParse 专门解决多格式复杂文档的结构化解析。
- RAG 管道搭建繁琐 — 自行实现分块、向量化、检索、注入链路容易踩坑,LlamaIndex 提供开箱即用的抽象层。
- 多 Agent 协作缺乏框架 — LlamaAgents 提供多 Agent 之间的任务分发与结果聚合机制。
- 300+ 集成生态碎片化 — LlamaHub 提供统一的集成接口,切换 LLM / Embedding / VectorStore 无需重写业务代码。
三、快速安装
方式一:Starter 包(推荐新手)
包含核心库 + 常用集成包(OpenAI、Chroma、Pinecone 等):
pip install llama-index
方式二:自定义精简安装
只装核心,按需从 LlamaHub 追加集成包:
pip install llama-index-core
# 按需追加集成,例如:
pip install llama-index-llms-openai
pip install llama-index-vector-stores-chroma
pip install llama-index-embeddings-huggingface
环境依赖
- Python ≥ 3.9(建议 3.10+)
- 部分功能需要 Node.js(如 LlamaAgents Web 界面)
四、核心用法
4.1 基础 RAG 问答(5 行代码)
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
from llama_index.llms.openai import OpenAI
# 1. 加载文档(支持 PDF、MD、TXT、CSV 等)
documents = SimpleDirectoryReader("./data").load_data()
# 2. 选 LLM
llm = OpenAI(model="gpt-4o-mini", api_key="your-api-key")
# 3. 构建索引
index = VectorStoreIndex.from_documents(documents)
# 4. 查询
query_engine = index.as_query_engine(llm=llm)
response = query_engine.query("这份文档的核心结论是什么?")
print(response)
4.2 使用本地模型(Ollama)
from llama_index.llms.ollama import Ollama
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
llm = Ollama(model="qwen2.5:7b", request_timeout=120)
documents = SimpleDirectoryReader("./data").load_data()
index = VectorStoreIndex.from_documents(documents)
query_engine = index.as_query_engine(llm=llm)
response = query_engine.query("总结主要观点")
4.3 文档解析(LlamaParse)
LlamaParse 需要 LlamaCloud API Key,有免费额度。
from llama_parse import LlamaParse
from llama_index.core import VectorStoreIndex
# 设置 API Key(环境变量)
import os
os.environ["LLAMA_CLOUD_API_KEY"] = "your-llamacloud-key"
# 解析 PDF,返回结构化文档对象
parser = LlamaParse(result_type="markdown")
documents = parser.load_data("./report.pdf")
index = VectorStoreIndex.from_documents(documents)
4.4 高级检索(Hybrid Search + Rerank)
from llama_index.core import VectorStoreIndex
from llama_index.core.retrievers import VectorIndexRetriever
from llama_index.postprocessor.cohere_rerank import CohereRerank
# 构建索引
index = VectorStoreIndex.from_documents(documents)
# 配置向量检索 + 重排
retriever = VectorIndexRetriever(index=index, similarity_top_k=20)
reranker = CohereRerank(api_key="your-cohere-key", top_n=5)
query_engine = index.as_query_engine(
retriever=retriever,
node_postprocessors=[reranker]
)
4.5 LlamaAgents(多 Agent 编排)
from llama_index.core.agent import AgentRunner
from llama_index.llms.openai import OpenAI
from llama_index.tools.tavily import TavilyToolSpec
llm = OpenAI(model="gpt-4o")
tools = TavilyToolSpec(api_key="your-tavily-key").to_tool_list()
agent = AgentRunner.from_tools(tools, llm=llm)
response = agent.chat("帮我查询 2026 年 AI Agent 领域的最新进展")
五、典型适用场景
| 场景 | 推荐组合 |
|---|---|
| 企业内部知识库问答 | LlamaParse + Milvus/Qdrant + GPT-4o |
| 合同/报告结构化抽取 | LlamaParse + Extract + OpenAI |
| 私域文档 RAG | llama-index + Ollama/本地 Embedding |
| 多 Agent 协作(搜索+分析+报告) | LlamaAgents + Tavily + 代码执行工具 |
| 客服机器人(带知识库) | LlamaIndex + VectorStore + History |
六、坑与注意
⚠️ 版本分裂问题
LlamaIndex 存在较长时间的版本迭代,早期代码示例可能使用旧 API(如 VectorStoreIndex.from_dict)。建议以官方最新文档为准,本攻略基于 2026 年中最新版。
⚠️ Token 成本
llama-indexstarter 包默认包含多个 LLM 集成,容易在不知觉中调用付费 API- 使用本地模型前确保 Ollama 已启动:
ollama serve
⚠️ Embedding 模型选择
- 默认有时会尝试调用 OpenAI Embedding,需要显式指定本地模型:
python from llama_index.embeddings.huggingface import HuggingFaceEmbedding embed_model = HuggingFaceEmbedding(model_name="BAAI/bge-m3") index = VectorStoreIndex.from_documents(documents, embed_model=embed_model)
⚠️ LlamaParse 是付费服务
免费额度有限,生产环境建议评估 LlamaCloud 定价。
⚠️ 性能提示
- 大文档集分批处理:
batch_size参数控制 - 生产环境使用异步 API:
ainject、arun系列
七、与同类对比
| 特性 | LlamaIndex | LangChain | Haystack (deepset) |
|---|---|---|---|
| RAG 抽象层 | ✅ 成熟 | ✅ 成熟 | ✅ 成熟 |
| 文档解析(OCR) | ✅ LlamaParse 强 | ❌ 弱 | ❌ 弱 |
| Agent 编排 | ✅ LlamaAgents | ✅ LCEL | ⚪ 较弱 |
| 集成数量 | 300+ | 100+ | 较少 |
| 本地模型支持 | ✅ 好 | ✅ 好 | ✅ 好 |
| 上手难度 | 中等 | 中等偏高 | 中等 |
| 维护活跃度 | 非常活跃 | 非常活跃 | 活跃 |
结论:如果核心需求是文档解析 + RAG + Agent 链路,LlamaIndex 是当前最完整的开源选择;如果已在用 LangChain 生态,可以继续用 LangChain 的 RAG 模块。
八、一句话结论
LlamaIndex 是目前最完整的开源 Agentic 应用框架,从文档解析到 RAG 再到多 Agent 编排一站式搞定,是构建企业级知识库和 AI 应用的首选底座之一。
来源
- GitHub README: https://github.com/run-llama/llama_index
- LlamaIndex 官方文档: https://developers.llamaindex.ai/
- LlamaCloud: https://cloud.llamaindex.ai