一、一句话定位
LlamaIndex 是一个 LLM 数据框架——专注把"非结构化/半结构化的私有数据"高效接入 LLM 的全过程:读入 → 切块 → 向量化 → 索引 → 检索 → 喂给模型。它不是"另一个 Agent 框架",而是 Agent 和 RAG 应用的数据底座。
2022 年项目最早叫 GPT Index(Jerry Liu 开源),那会儿 ChatGPT 刚火、大家都在想"怎么让 GPT 读我们自己的 PDF"。它把 RAG 的每一步抽象成清晰的模块——这比当时拿 OpenAI Embedding API + FAISS 手写循环要省事一个量级。2023 年改名 LlamaIndex,到 2026 年已经是 RAG 生态的事实标准之一。
二、为什么需要一个"数据框架"
看起来 RAG 不就是五步吗?
每一步单看都简单。真正做起来每一步都有几十个要选的参数和细节,而且互相影响:
| 步骤 | 表面上 | 实际要纠结的 |
|---|---|---|
| 读文档 | 打开文件 | PDF 表格怎么保留?扫描件 OCR?Markdown 标题层级?多语言?图片?元数据? |
| 切块 | 按字符切 | chunk_size = 512 还是 1024?overlap 要多少?按句子还是 token?Markdown 要不要按 section? |
| 向量化 | 调 embedding | 选 OpenAI/BGE/M3?中文还是多语?维度 768 vs 1536 存储成本?batch 多大? |
| 检索 | 最相似 top-k | k=5 够不够?要不要重排?加 BM25 混合?metadata 过滤?HyDE 改写 query? |
| 拼 prompt | 塞进 context | context 超长怎么办?多个源冲突?引用格式?"我不知道"怎么写? |
手写做几版玩具还行,生产项目里这些参数都要可配、可换、可观测、可回放。LlamaIndex 就是把这整套流水线做成"可插拔组件",你决定用哪些,它负责把管道焊好。
三、LlamaIndex vs LangChain vs Haystack vs 手写
| 特征 | LlamaIndex | LangChain | Haystack | 手写 |
|---|---|---|---|---|
| 定位 | 数据框架(RAG-first) | 通用 LLM orchestration | 企业级搜索+NLP pipeline | — |
| RAG 深度 | ★★★★★ | ★★★ | ★★★★ | 看你写多少 |
| Agent 能力 | ★★★(持续加强) | ★★★★(LangGraph 加持) | ★★ | 看你写多少 |
| 上手 | 5 行 RAG | 偏工程(LCEL) | 需学 Pipeline/Node 抽象 | 自己发明轮子 |
| 数据连接器 | LlamaHub 300+ | 150+ | 若干 | 自己写 |
| 可观测 | Arize Phoenix 原生 | LangSmith | 需额外接 | 自己搭 |
| 适合 | RAG/检索/Agentic RAG | 复杂工作流/Agent | 传统搜索 + LLM | 几十行的小 demo |
四、RAG 全景图:LlamaIndex 覆盖的范围
这张图是后续 12 章的路线——每一章深挖一两个框。现在你只需要先记住:LlamaIndex 就是把"从数据到答案"之间所有机械工序自动化掉。
五、五行 Hello RAG
最小可运行的 RAG,放一个文件夹的 PDF,问一个问题,看到答案:
pip install "llama-index>=0.12"
export OPENAI_API_KEY=sk-...
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
docs = SimpleDirectoryReader("./data").load_data() # 读文件夹
index = VectorStoreIndex.from_documents(docs) # 建索引(切块+嵌入+存)
qe = index.as_query_engine() # 默认 Query Engine
ans = qe.query("这份报告里 2025 Q3 的营收是多少?")
print(ans)
跑一次背后发生了什么:
SimpleDirectoryReader识别./data里各种后缀的文件,分派给对应解析器(PDF → pypdf,docx → python-docx,...),产出Document列表VectorStoreIndex.from_documents默认:用 SentenceSplitter 切块 → 用 OpenAItext-embedding-3-small嵌入 → 存到内存的SimpleVectorStoreas_query_engine()默认:top-k=2 检索 +gpt-4o-mini回答 + 拼 prompt.query()执行检索+合成,返回一个Response对象,自带.source_nodes(被引用的 chunk)
这 5 行能跑,但离"生产可用"还远——后面每一章就是把这 5 行中的每个默认项,换成真正讲究的选择。
六、核心概念速览
TextNode。VectorStoreIndex(语义检索),也有 SummaryIndex、KeywordTableIndex、KnowledgeGraphIndex。@step。是 LlamaIndex 的 LangGraph 对应物。七、装配 LlamaIndex 的正确姿势
LlamaIndex 模块化很彻底,核心包 + 按需装集成包:
# 核心(轻量,不绑 provider)
pip install llama-index-core
# LLM / Embedding provider
pip install llama-index-llms-openai
pip install llama-index-embeddings-openai
pip install llama-index-llms-anthropic
pip install llama-index-llms-ollama # 本地模型
# Vector Store
pip install llama-index-vector-stores-qdrant
pip install llama-index-vector-stores-postgres
# Reader(LlamaHub)
pip install llama-index-readers-web
pip install llama-index-readers-database
# 方便的元包(把上面常用的都装上)
pip install llama-index # 包含 openai + 常用 reader
llama-index-core + 显式装需要的集成包,比元包 llama-index 干净,版本锁定也清楚。
八、2026 年生态位
- LlamaHub:300+ Reader/Tool/Loader,社区贡献量最大的 RAG 生态中心
llamahub.ai - LlamaParse:公司主打的 SaaS——复杂 PDF(表格/公式/扫描件)转 Markdown,比开源方案效果高出一个档次,免费额度 1000 页/天
- llama_deploy:把 Workflow 包成微服务,支持 Kafka/Redis 后端,面向多用户并发
- llama-extract / llama-classify:新推的数据抽取/分类云服务
- Arize Phoenix:和 LlamaIndex 深度整合的开源 LLM 观测,本地
px.launch_app()即开 - TypeScript 版本:
llamaindex.ts是一等公民,Node/Bun/Deno 生态可用(生态比 Python 版小一圈)
九、什么时候别用 LlamaIndex
- 只需一次性"给 LLM 发一段 prompt"——直接调 OpenAI SDK 就够
- 问答的数据本身是结构化的数据库——Text2SQL 或传统 ORM 更合适
- 重度 multi-agent 编排 + 状态机——LangGraph 生态更成熟
- 对 JVM 生态依赖强——考虑 Haystack 或 Spring AI 搭配
十、12 章的学习路线
- 基础三章(Ch1-3):框架定位、Document/Node 数据模型、数据连接器
- 索引与向量(Ch4-6):Ingestion Pipeline、Index 家族、Vector Store 选型
- 查询与高级 RAG(Ch7-8):Retriever/QueryEngine 精调、HyDE/SubQ/Self-RAG
- Agent 与 Workflow(Ch9-10):FunctionAgent/ReAct、事件驱动 Workflow
- 质量与生产(Ch11-12):Eval/观测、FastAPI/llama_deploy/上线 checklist
每章都围绕"这一步你要做什么决策,各方案的取舍"讲,而不是照搬 API 文档。读完后你应该能独立设计一个 RAG 系统,并说出为什么每一步这样选。
十一、本章小结
① LlamaIndex 是 数据框架,LangChain 是 orchestration 框架,二者常组合使用而不是互斥。
② RAG 看起来五步,每一步几十个参数要选;LlamaIndex 把这些做成可插拔组件。
③ 五行 Hello RAG 能跑通,但默认项都要根据业务替换——这是后面 11 章的主题。
④ 2026 年 LlamaIndex 已是 RAG 事实标准之一,300+ 连接器 + LlamaParse + llama_deploy 构成完整生态。