对比概览
| 维度 | LlamaIndex | LangChain |
|---|---|---|
| 定位 | RAG 专精框架 | 通用 AI 应用框架 |
| 核心优势 | 数据 ingestion + 索引 | Chain + Agent 编排 |
| RAG 能力 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
| Agent 能力 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| 数据连接器 | 160+ | 60+ |
| 索引类型 | 10+ | 3-5 |
| 学习曲线 | 中(RAG 概念多) | 中-高(概念多) |
| 开源 | ✅ MIT | ✅ MIT |
| GitHub Stars | 35K+ | 90K+ |
| 适合 | RAG 应用/知识库 | Agent/复杂工作流 |
1. 设计哲学
LlamaIndex:数据为中心
LlamaIndex 的核心理念:LLM 应用的瓶颈是数据接入。
数据源(160+)→ 文档解析 → 分块 → 索引 → 检索 → 生成
它把"让 LLM 理解你的数据"做到极致,提供最丰富的数据连接器与索引结构。
LangChain:编排为中心
LangChain 的核心理念:LLM 应用是多个组件的编排。
Prompt + LLM + Memory + Tool + Retrieval → Chain → Agent
它把"把组件串起来"做到极致,提供最灵活的 Chain 与 Agent 编排。
2. RAG 能力对比
| 维度 | LlamaIndex | LangChain |
|---|---|---|
| 数据连接器 | 160+(PDF/Notion/Slack/Google Drive...) | 60+ |
| 文档解析 | 强(支持复杂格式) | 中 |
| 分块策略 | 丰富(10+ 种) | 基础(3-5 种) |
| 索引类型 | 10+(树/图/关键词/向量...) | 向量为主 |
| 检索策略 | 多样(递归/路由/子问题...) | 基础 |
| Reranking | 内置 | 需手动集成 |
| 查询转换 | 内置(HyDE/子问题/分解) | 需手动 |
| 多模态 RAG | ✅ | ⚠️ |
| 评估工具 | 内置(Faithfulness/Relevancy) | 需 LangSmith |
结论:RAG 场景 LlamaIndex 完胜,数据处理与索引能力更深。
3. Agent 能力对比
| 维度 | LlamaIndex | LangChain |
|---|---|---|
| Agent 类型 | ReAct / OpenAI / Custom | ReAct / OpenAI / Structured / Custom |
| 多 Agent | ⚠️ 有限 | ✅ LangGraph |
| 状态管理 | ⚠️ 基础 | ✅ 完整状态机 |
| 工具集成 | ✅ | ✅ 更丰富 |
| 人机协作 | ⚠️ | ✅ |
| 复杂工作流 | ⚠️ 有限 | ✅ LangGraph |
| 调试工具 | 基础 | LangSmith |
结论:Agent 场景 LangChain 完胜,LangGraph 的状态机能处理复杂多步任务。
4. 数据连接器
LlamaIndex(160+)
文档类:PDF/Word/Markdown/HTML/Notion/Confluence
API 类:Slack/Google Drive/GitHub/Jira/Notion
数据库:Postgres/MySQL/MongoDB/SQLite
网页:爬虫/Sitemap/RSS
多模态:图片/PDF 表格/PPT
LangChain(60+)
文档类:PDF/Word/Markdown/HTML
API 类:主要 SaaS
数据库:主要 SQL
网页:基础爬虫
结论:LlamaIndex 数据连接器覆盖远超 LangChain,特别是企业数据源。
5. 索引结构
LlamaIndex(10+ 种)
| 索引类型 | 特点 | 适合 |
|---|---|---|
| VectorStoreIndex | 语义检索 | 通用 RAG |
| SummaryIndex | 顺序遍历 | 短文档 |
| TreeIndex | 树形层级 | 长文档 |
| KeywordTableIndex | 关键词检索 | 精确匹配 |
| KnowledgeGraphIndex | 图谱检索 | 关联推理 |
| DocumentSummaryIndex | 摘要+原文 | 大文档概览 |
| ComposableGraph | 多索引组合 | 复杂场景 |
LangChain
主要为 VectorStore(向量检索),其他索引需手动实现。
结论:LlamaIndex 的索引结构远比 LangChain 丰富,能适配更多场景。
6. 查询策略
LlamaIndex 高级查询
| 策略 | 说明 |
|---|---|
| SubQuestionQueryEngine | 把复杂问题拆为子问题分别检索 |
| RouterQueryEngine | 根据问题路由到不同索引 |
| MultiStepQueryEngine | 多步检索逐步精炼 |
| RecursiveRetriever | 递归检索子节点 |
| AutoMergingRetriever | 自动合并相关片段 |
LangChain
主要用 RetrievalQA,高级策略需手动用 Chain 组装。
7. 代码对比
LlamaIndex RAG 示例
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
# 加载文档
documents = SimpleDirectoryReader("./data").load_data()
# 创建索引
index = VectorStoreIndex.from_documents(documents)
# 查询
query_engine = index.as_query_engine(similarity_top_k=5)
response = query_engine.query("什么是 RAG?")
print(response)
LangChain RAG 示例
from langchain.document_loaders import DirectoryLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Chroma
from langchain.chains import RetrievalQA
from langchain.chat_models import ChatOpenAI
# 加载文档
loader = DirectoryLoader("./data")
documents = loader.load()
# 分块
splitter = RecursiveCharacterTextSplitter()
texts = splitter.split_documents(documents)
# 创建向量库
embeddings = OpenAIEmbeddings()
vectorstore = Chroma.from_documents(texts, embeddings)
# 查询
chain = RetrievalQA.from_chain_type(
llm=ChatOpenAI(model="gpt-4o"),
retriever=vectorstore.as_retriever()
)
response = chain.run("什么是 RAG?")
对比:LlamaIndex 5 行代码完成 RAG,LangChain 需 15+ 行。但 LangChain 每步可替换组件,灵活性更高。
8. 生态与社区
| 维度 | LlamaIndex | LangChain |
|---|---|---|
| GitHub Stars | 35K+ | 90K+ |
| 社区规模 | 中 | 大 |
| 文档质量 | 优秀 | 优秀 |
| 模板 | LlamaPacks(50+) | Cookbooks(200+) |
| 课程 | 官方课程 | 官方课程 |
| 企业采用 | 增长中 | 已成熟 |
| Python 支持 | ✅ | ✅ |
| TypeScript 支持 | ✅ | ✅ |
选型决策树
你的需求是?
├── 核心是 RAG(知识库问答)
│ └── → LlamaIndex
├── 需要多种索引结构
│ └── → LlamaIndex
├── 需要接入多种数据源
│ └── → LlamaIndex
├── 核心是 Agent
│ └── → LangChain + LangGraph
├── 需要多 Agent 协作
│ └── → LangChain + LangGraph
├── 需要复杂工作流编排
│ └── → LangChain
├── 既要 RAG 又要 Agent
│ └── → 两者结合(LlamaIndex 做 RAG,LangChain 做 Agent)
└── 快速原型验证
└── → LlamaIndex(RAG)/ LangChain(Agent)
适合的人群
选 LlamaIndex 如果你
- 核心需求是 RAG(知识库问答)
- 需要接入多种企业数据源
- 需要多种索引结构(树/图/关键词)
- 需要高级查询策略(子问题/路由/多步)
- 需要内置的 RAG 评估工具
选 LangChain 如果你
- 核心需求是 Agent
- 需要多 Agent 协作(LangGraph)
- 需要复杂工作流编排
- 需要丰富的工具集成
- 已有 Python/JS 技术栈
能否结合使用?
可以,且推荐:
from llama_index.core import VectorStoreIndex
from langchain.agents import AgentExecutor
# 用 LlamaIndex 做 RAG
index = VectorStoreIndex.from_documents(docs)
retriever = index.as_retriever()
# 用 LangChain 做 Agent,把 LlamaIndex 检索作为工具
def search_knowledge(query):
return str(retriever.query(query))
agent = AgentExecutor.from_functions(
functions=[search_knowledge],
llm=ChatOpenAI(model="gpt-4o")
)
最佳实践:LlamaIndex 做数据层(RAG),LangChain 做逻辑层(Agent)。
与其他框架的关系
- Dify vs LangChain:Dify 是低代码,LangChain 是代码框架
- LlamaIndex vs Dify:LlamaIndex 是代码框架,Dify 是低代码平台
- LlamaIndex vs Haystack:Haystack 也是 RAG 专精,但更偏企业级
- LangChain vs Semantic Kernel:Semantic Kernel 是微软系
小结
LlamaIndex 和 LangChain 不是竞品,而是互补:
- LlamaIndex 是"RAG 专精派":数据接入与索引能力最强
- LangChain 是"通用编排派":Agent 与工作流能力最全
两者结合使用效果最好:LlamaIndex 负责"让 LLM 理解你的数据",LangChain 负责"让 LLM 完成复杂任务"。对于想深入了解 AI 应用开发的读者,可参考我们对 Dify vs LangChain 的对比。