AI 工具对比

LlamaIndex vs LangChain:RAG 框架双子星,专精与通用的抉择

2026-08-10
框架对比
对比对象:
LlamaIndexVSLangChain
对比LlamaIndexLangChainRAGAI框架

对比概要

LlamaIndex 和 LangChain 都是构建 LLM 应用的主流框架,但定位不同。LlamaIndex 专注 RAG(检索增强生成),数据处理与索引能力最强;LangChain 是通用 AI 应用框架,Agent 与 Chain 能力更全面。本文从 8 个维度深度对比,帮你根据项目需求选对框架。

推荐结论

RAG 专精选 LlamaIndex,通用 AI 应用选 LangChain,两者可互补使用

对比概览

维度LlamaIndexLangChain
定位RAG 专精框架通用 AI 应用框架
核心优势数据 ingestion + 索引Chain + Agent 编排
RAG 能力⭐⭐⭐⭐⭐⭐⭐⭐
Agent 能力⭐⭐⭐⭐⭐⭐⭐⭐
数据连接器160+60+
索引类型10+3-5
学习曲线中(RAG 概念多)中-高(概念多)
开源✅ MIT✅ MIT
GitHub Stars35K+90K+
适合RAG 应用/知识库Agent/复杂工作流

1. 设计哲学

LlamaIndex:数据为中心

LlamaIndex 的核心理念:LLM 应用的瓶颈是数据接入

数据源(160+)→ 文档解析 → 分块 → 索引 → 检索 → 生成

它把"让 LLM 理解你的数据"做到极致,提供最丰富的数据连接器与索引结构。

LangChain:编排为中心

LangChain 的核心理念:LLM 应用是多个组件的编排

Prompt + LLM + Memory + Tool + Retrieval → Chain → Agent

它把"把组件串起来"做到极致,提供最灵活的 Chain 与 Agent 编排。

2. RAG 能力对比

维度LlamaIndexLangChain
数据连接器160+(PDF/Notion/Slack/Google Drive...)60+
文档解析强(支持复杂格式)
分块策略丰富(10+ 种)基础(3-5 种)
索引类型10+(树/图/关键词/向量...)向量为主
检索策略多样(递归/路由/子问题...)基础
Reranking内置需手动集成
查询转换内置(HyDE/子问题/分解)需手动
多模态 RAG⚠️
评估工具内置(Faithfulness/Relevancy)需 LangSmith

结论:RAG 场景 LlamaIndex 完胜,数据处理与索引能力更深。

3. Agent 能力对比

维度LlamaIndexLangChain
Agent 类型ReAct / OpenAI / CustomReAct / 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. 生态与社区

维度LlamaIndexLangChain
GitHub Stars35K+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 LangChainDify 是低代码,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 的对比。