LlamaIndex
面向私有数据、RAG 和 Agent 工作流的开源 LLM 应用框架。
项目概述
LlamaIndex 提供数据接入、索引、检索、查询引擎、Agent 与事件驱动工作流等组件,帮助开发者围绕自己的文档和业务数据构建生成式 AI 应用。
LlamaIndex 是采用 MIT 许可证的开源框架,重点解决语言模型如何连接、理解和使用私有数据的问题。它可以从文件、数据库、API 等来源加载数据,将内容转换为 Document 与 Node,经过索引和检索后交给 Query Engine 或 Agent 使用。当前 Python Framework 同时覆盖 RAG、工具调用、记忆与事件驱动 Workflow;TypeScript 生态由独立的 LlamaIndex.TS 项目提供。LlamaIndex 本身不提供基础模型,也不能替代数据权限、内容安全和效果评估。
主要特点
从数据接入到检索和 Agent 编排,LlamaIndex 提供了一套面向知识型 AI 应用的组合式组件。
丰富的数据连接能力
可通过 Reader 和 LlamaHub 集成文件、网页、协作平台、数据库与 SaaS 数据源,把异构内容接入统一的数据处理流程。
Document、Node 与摄取管线
将原始内容转换为带元数据的 Document 和 Node,并组合切分、清洗、Embedding 与自定义转换步骤。
Index、Retriever 与 Query Engine
把索引构建、候选召回、后处理和答案合成拆分为可替换组件,既可快速使用默认方案,也能逐步定制 RAG 管线。
向量存储与模型集成
通过独立集成包连接多种 LLM、Embedding 模型、向量数据库和重排服务,便于按部署条件选择基础设施。
Agent 与工具调用
可将查询引擎、Python 函数、API 或其他 Agent 暴露为工具,让模型围绕私有数据完成多步骤任务。
事件驱动 Workflow
使用事件和 Step 描述长流程,支持流式事件、状态传递、并发、循环与人工介入等编排需求。
存储与持久化
索引、文档、向量和图关系由 Storage Context 管理,可保存到本地目录或接入外部存储后端。
评估与可观测集成
提供检索和回答评估能力,并可连接追踪与可观测工具,帮助定位加载、检索、模型和 Agent 步骤中的问题。
适用场景
当应用的关键价值来自企业文档、业务系统或其他私有数据时,LlamaIndex 尤其值得评估。
企业知识库与 RAG
围绕内部手册、产品文档、制度和历史资料构建带来源证据的检索增强问答。
文档理解与结构化抽取
从合同、报告、票据和长文档中提取字段、摘要与关系,再交给下游业务系统处理。
私有数据 Agent
让 Agent 查询内部知识、调用业务 API 并综合多步结果,同时限制其可以访问的数据和工具。
研究与信息综合
跨多个文件、网页和数据源检索证据,分解复杂问题并生成可追溯的综合结论。
自然语言数据查询
为 SQL、结构化数据库或知识图谱建立查询接口,让用户以自然语言探索业务数据。
客服与产品助手
结合产品文档、用户上下文和服务工具回答问题,并在需要执行操作时调用受控工具。
优点与注意事项
技术选型不仅要看能力,也要理解它带来的团队成本。
主要优点
LlamaIndex 擅长的地方
- 围绕数据接入、索引和检索提供清晰且完整的核心抽象
- 默认 API 能快速建立 RAG 原型,同时保留替换底层组件的空间
- 模型、数据源、向量数据库和观测工具的集成生态丰富
- 查询引擎可直接作为 Agent 工具,便于从问答逐步扩展到行动型应用
- 开源核心可本地运行,并支持把索引和存储接入自有基础设施
- Python 与 TypeScript 生态可覆盖常见的 AI 后端和 Web 技术栈
需要注意
采用前应考虑的问题
仍需自行选择模型、Embedding、向量库、文件存储、队列和部署环境,并处理它们各自的容量、可靠性和费用。
默认切分和 Top-K 只适合起步。真实应用应使用代表性问题评测召回、排序、引用和最终答案,而不是只凭演示效果判断。
核心包与模型、向量库等集成包独立发布,升级前应锁定版本、阅读迁移说明并运行回归测试。
写入索引前后都要保留租户、角色和文档权限信息,检索阶段必须过滤,不能把向量数据库视为天然的授权边界。
网页和上传文档可能包含提示注入。应区分数据与指令,对工具设置白名单和参数校验,并为高风险操作加入人工审批。
多轮规划、检索和工具调用会增加 Token、网络请求和失败点,需要设置最大步骤、超时、缓存、预算与降级路径。
LlamaCloud 等托管能力与开源 LlamaIndex Framework 并非同一交付形态,选型时应分别核对数据驻留、价格、锁定程度和自托管要求。
快速开始
使用 Python、OpenAI 和本地文本文件构建一个可持久化的最小 RAG 查询应用。
bashpython -m venv .venv
source .venv/bin/activate
pip install -U llama-index
export OPENAI_API_KEY="<your-openai-api-key>"bashmkdir -p data
echo "Docs100 收集热门开源软件,并提供中文概述、快速开始和项目比较。" > data/about.txtpythonfrom llama_index.core import SimpleDirectoryReader, VectorStoreIndex
documents = SimpleDirectoryReader("data").load_data()
index = VectorStoreIndex.from_documents(documents)
query_engine = index.as_query_engine()
response = query_engine.query("Docs100 提供什么内容?")
print(response)
print(response.source_nodes)pythonfrom llama_index.core import SimpleDirectoryReader, VectorStoreIndex
documents = SimpleDirectoryReader("data").load_data()
index = VectorStoreIndex.from_documents(documents)
index.storage_context.persist(persist_dir="storage")pythonfrom llama_index.core import StorageContext, load_index_from_storage
storage_context = StorageContext.from_defaults(
persist_dir="storage",
)
index = load_index_from_storage(storage_context)
response = index.as_query_engine().query(
"用一句话介绍 Docs100。",
)
print(response)pythonimport asyncio
from llama_index.core import SimpleDirectoryReader, VectorStoreIndex
from llama_index.core.agent.workflow import FunctionAgent
from llama_index.llms.openai import OpenAI
documents = SimpleDirectoryReader("data").load_data()
index = VectorStoreIndex.from_documents(documents)
query_engine = index.as_query_engine()
def search_docs(question: str) -> str:
"""从 Docs100 本地资料中检索答案。"""
return str(query_engine.query(question))
agent = FunctionAgent(
tools=[search_docs],
llm=OpenAI(model="gpt-4o-mini"),
system_prompt="需要站点资料时,先调用 search_docs。",
)
async def main() -> None:
response = await agent.run(
user_msg="Docs100 是做什么的?",
)
print(response)
asyncio.run(main())下一步:示例适合验证基本链路。进入生产环境前,应针对真实问题评测切分、召回、重排和回答质量,并补充来源引用、权限过滤、成本预算及提示注入防护。
类似项目
这些项目同样连接模型、数据和工具,但在数据抽象、Agent 编排与生产生态上的侧重点不同。
LlamaIndex vs LangChain
LlamaIndex 和 LangChain 都能构建 RAG 与 Agent。LlamaIndex 的抽象从数据接入、索引和检索出发,LangChain 则更侧重模型、工具与通用 Agent 编排。
| 比较维度 | LlamaIndex | LangChain |
|---|---|---|
| 核心侧重 | 数据接入、索引、检索与知识型 Agent | 模型、工具和有状态 Agent 编排 |
| 数据抽象 | Document、Node、Index、Retriever、Query Engine | Document、Retriever、Vector Store 与可组合 Runnable |
| Agent 编排 | Agent + 事件驱动 Workflow | create_agent,底层由 LangGraph 驱动 |
| RAG 体验 | 围绕摄取、索引、检索和答案合成形成集中工具集 | 组件选择灵活,便于嵌入更广泛的应用流程 |
| 集成优势 | 数据源、向量库、检索与知识工作流 | 模型 Provider、通用工具和应用服务 |
| 状态与持久化 | Storage Context、Workflow Context 与 Memory | LangGraph Checkpointer、Store 与线程状态 |
| 主要生态 | Python Framework,另有独立 TypeScript 项目 | Python 与 TypeScript 主线生态 |
| 更适合 | 复杂文档、私有数据检索和知识密集型应用 | 多工具、多模型和复杂业务 Agent |
如果项目首先需要接入大量异构数据,并深入调整切分、索引、召回与答案合成,LlamaIndex 往往更直接;如果核心挑战是组织多种模型、工具和有状态业务流程,LangChain 的通用编排生态通常更顺手。两者能力有明显重叠,也可以组合使用,最终应通过真实数据集、延迟、成本和运维约束做选择。
资料核验
版本、维护信息与本页采用的官方资料来源。
本页依据 LlamaIndex 官方 Python Framework 文档、入门教程和官方源码仓库整理。快速开始采用当前官方的 SimpleDirectoryReader、VectorStoreIndex、StorageContext 与 FunctionAgent API;集成包与云服务更新较快,生产使用前仍应核对最新文档和版本兼容性。
官方仓库未归档,核验时最近可见的代码活动日期为 2026 年 7 月 24 日。该状态表示项目近期仍有公开维护活动,不代表固定发布频率或长期支持承诺。