三大AI应用框架深度解析:LangChain、LangGraph与LlamaIndex的关联与区别
LlamaIndex是数据仓库——解决“LLM如何获取私有数据”LangChain是基础脚手架——解决“LLM如何整合基础工具与流程”LangGraph是进阶引擎——解决“LLM如何完成复杂、可控的业务流程”它们共同构成了从数据接入→基础编排→复杂流程的完整技术闭环。2026年的今天,AI应用开发早已不是“哪个框架更好”的选择题,而是如何组合使用的实践题。掌握这三个框架的核心思想,你就能像搭积木一
目录
引言:为什么我们需要三个框架?
2026年,大模型应用开发早已不再是简单的“调API、写提示词”。当我们需要构建一个真正能用的AI系统时,往往会面临三个核心挑战:
-
数据怎么喂给模型?——私有文档、数据库、API数据如何变成模型能理解的上下文?
-
流程怎么编排?——如何把模型调用、工具使用、结果处理串联成一条工作流?
-
复杂任务怎么管理?——多轮对话、状态维护、条件跳转、自我纠错如何实现?
这三个挑战,恰好对应了今天AI应用开发领域的三个明星框架:LlamaIndex、LangChain、LangGraph。
它们不是替代关系,而是各司其职、层层递进的“黄金三角”。今天,我们就来彻底理清这三个框架的定位、核心能力,以及在实际项目中如何协同使用。
一、一句话定位:三个框架分别解决什么问题?
在深入细节之前,先用三句话概括它们的核心定位:
| 框架 | 定位 | 一句话总结 |
|---|---|---|
| LlamaIndex | 数据连接专家 | “让LLM看懂你的私有数据”——专注数据索引与检索,解决知识库问答的基础问题 |
| LangChain | 编排协调大师 | “给LLM配上手脚和流水线”——提供模块化组件,串联模型、工具和逻辑 |
| LangGraph | 状态流程管家 | “让智能体能走循环、能回头看”——基于状态图管理复杂、可控的工作流 |
用一张图可以更直观地理解三者的关系:
LlamaIndex: [数据接入] → [索引构建] → [精准检索]
↓
LangChain: [模型调用] → [工具使用] → [流程编排]
↓
LangGraph: [状态管理] → [条件跳转] → [循环控制]
二、LlamaIndex:为RAG而生的“数据专家”
2.1 核心设计思想
LlamaIndex的目标非常纯粹:让大模型高效、精准地访问私有数据 。
它的设计围绕一个核心理念展开——以数据为中心。LlamaIndex把“数据如何被索引、如何被检索”作为第一优先级,而不是通用流程编排 。
2.2 核心组件
1. 数据连接器(Data Connectors)
支持PDF、Word、网页、数据库等50+格式的文档解析,几乎覆盖所有常见数据源 。
2. 文档处理与节点构建
LlamaIndex将文档切分为语义完整的“节点(Node)”,这是检索的基本单元。开发者可以精细控制切分策略和块大小,避免语义断裂 。
3. 索引引擎(Indexing Engine)
这是LlamaIndex最核心的部分,提供多种索引类型:
-
向量索引:最常用,通过语义相似度匹配检索
-
树形索引:适合文档摘要场景,按层级组织节点
-
关键词索引:基于关键词匹配,适合精确检索
4. 检索器与查询引擎
封装了从检索到生成的完整RAG流程,开发者只需几行代码就能搭建知识库问答系统 。
2.3 代码示例
from llama_index import VectorStoreIndex, SimpleDirectoryReader
# 1. 加载文档
documents = SimpleDirectoryReader("knowledge_base").load_data()
# 2. 创建向量索引
index = VectorStoreIndex.from_documents(documents)
# 3. 执行查询
query_engine = index.as_query_engine()
response = query_engine.query("如何优化RAG系统的检索精度?")
print(response)
这段代码背后,LlamaIndex完成了文档加载→文本分割→向量化→索引构建→检索→生成的全流程 。
2.4 LlamaIndex的擅长与不擅长
✅ 擅长:
-
快速搭建知识库问答系统
-
精细控制文档索引和检索策略
-
多路检索融合(向量+关键词)
-
与本地向量数据库集成,保障数据隐私
❌ 不擅长:
-
复杂的流程编排(多工具调用)
-
智能体的自主决策
-
多轮对话状态管理
三、LangChain:通用LLM应用的“瑞士军刀”
3.1 核心设计思想
如果说LlamaIndex是“数据专家”,那LangChain就是“通用集成平台”。它的目标是解决AI能力碎片化的问题,为开发者提供统一的组件化编程接口 。
LangChain的核心理念是:将LLM应用开发分解为多个可复用的组件,并通过链(Chain)将这些组件连接起来 。
3.2 核心组件
1. 模型(Models)
封装各类LLM,支持主流模型(OpenAI、Qwen、Llama等)和本地部署模型 。
2. 提示词(Prompts)
提供提示词模板、示例选择器等工具,支持动态注入上下文 。
3. 链(Chains)
将多个组件串联为执行流程,如顺序链、检索链等 。
4. 工具(Tools)
让模型能够调用外部能力——API、数据库、搜索引擎等。LangChain提供了@tool装饰器,可以系统化地创建工具 。
@tool
def search_db(query: str) -> str:
"""搜索客户数据库"""
# 实际查询逻辑
return f"找到与'{query}'相关的结果"
5. 代理(Agents)
让LLM自主决策调用哪些工具,基于ReAct框架(思考-行动-观察)实现 。
6. 记忆(Memory)
维护对话上下文,支持多轮交互 。
3.3 代码示例
from langchain.agents import create_agent
from langchain.tools import tool
@tool
def search_knowledge_base(query: str) -> str:
"""搜索知识库"""
# 检索逻辑
return relevant_docs
agent = create_agent(
model="gpt-4o",
tools=[search_knowledge_base]
)
response = agent.invoke("介绍一下LangChain的核心功能")
3.4 LangChain的擅长与不擅长
✅ 擅长:
-
快速搭建各类LLM应用原型
-
集成多种工具和外部服务
-
基础RAG和Agent场景
-
模块化、可复用的组件设计
❌ 不擅长:
-
复杂的状态管理
-
循环和条件跳转的精细控制
-
长流程的自我纠错和回溯
四、LangGraph:生产级智能体的“总设计师”
4.1 核心设计思想
LangGraph是LangChain生态的子项目,但它解决的是LangChain力所不能及的问题:复杂工作流管理 。
LangGraph的核心理念是:将业务流程建模为有向图(Graph),通过显式的状态管理实现可控、可回溯的智能体系统 。
如果说LangChain是线性链条,LangGraph就是有环图——这意味着智能体可以“回头看”,根据当前状态决定是继续下一步、重试上一步,还是跳转到完全不同的分支 。
4.2 核心设计
1. 状态(State)
LangGraph的核心是共享状态。所有节点(Agent或工具)都从状态中读取信息,并将执行结果写入状态。这解决了传统多智能体协作中信息传递碎片化的问题 。
2. 节点(Nodes)
封装具体逻辑的执行单元,可以是LLM调用、工具执行、API请求等。
3. 边(Edges)
定义节点之间的连接关系,支持条件边(Conditional Edge)——根据当前状态的值决定下一步路由 。
4. 循环与分支
原生支持条件判断和迭代优化,这是LangGraph区别于LangChain最本质的特征 。
4.3 代码示例
from langgraph.graph import StateGraph, END
from typing import TypedDict
# 定义状态
class GraphState(TypedDict):
question: str
documents: list
quality_score: float
# 定义节点
def retrieve(state: GraphState) -> GraphState:
# 检索逻辑
state["documents"] = retrieve_docs(state["question"])
return state
def evaluate(state: GraphState) -> GraphState:
# 评估检索质量
state["quality_score"] = evaluate_relevance(state["documents"])
return state
def rewrite(state: GraphState) -> GraphState:
# 重写查询
state["question"] = rewrite_query(state["question"])
return state
def generate(state: GraphState) -> GraphState:
# 生成回答
return {"answer": generate_answer(state)}
# 构建图
graph = StateGraph(GraphState)
graph.add_node("retrieve", retrieve)
graph.add_node("evaluate", evaluate)
graph.add_node("rewrite", rewrite)
graph.add_node("generate", generate)
# 条件边:根据质量分数决定是否重写
graph.add_conditional_edges(
"evaluate",
lambda state: "rewrite" if state["quality_score"] < 0.7 else "generate"
)
这是一个典型的“检索→评估→(重写→再检索)→生成”流程,如果检索结果质量不佳,系统会自动触发查询重写并重新检索——这正是LangGraph的循环能力 。
4.4 LangGraph的擅长与不擅长
✅ 擅长:
-
复杂的多轮对话和任务流程
-
需要状态持久化的场景(断点续跑)
-
多智能体协作系统
-
自我纠错和回溯机制
❌ 不擅长:
-
简单的线性流程(杀鸡用牛刀)
-
快速原型验证
五、三大框架的协同:1+1+1 > 3
在实际项目中,这三个框架往往是协同使用的。一个典型的RAG+Agent复杂应用,可以这样分工:
| 环节 | 使用框架 | 作用 |
|---|---|---|
| 数据准备 | LlamaIndex | 文档加载、分块、索引构建 |
| 基础问答 | LangChain | 串联检索和生成,调用工具 |
| 复杂流程 | LangGraph | 状态管理、条件跳转、自我纠错 |
5.1 协同案例:智能客服系统
假设我们要构建一个企业智能客服系统,需要:
-
知识库检索:用LlamaIndex处理企业内部文档,构建高效索引
-
基础问答:用LangChain的RetrievalQA链快速实现问答
-
复杂处理:当遇到需要多轮沟通、确认信息的场景,用LangGraph管理整个对话状态和分支逻辑
这种“各司其职、层层递进”的架构,正是目前生产级AI应用的主流模式 。
六、如何选择?一份实用指南
| 场景 | 首选框架 | 理由 |
|---|---|---|
| 快速搭建知识库问答系统 | LlamaIndex | 开箱即用的RAG能力,配置简单 |
| 需要调用多个外部工具 | LangChain | 丰富的工具生态和Agent机制 |
| 复杂的多轮对话任务 | LangGraph | 状态管理和循环控制能力 |
| 混合场景(RAG+Agent+复杂流程) | 协同使用 | 各取所长,发挥最大效能 |
七、总结:不是替代,而是进化
理解这三个框架的关系,有一个很好的比喻 :
-
LlamaIndex 是 数据仓库——解决“LLM如何获取私有数据”
-
LangChain 是 基础脚手架——解决“LLM如何整合基础工具与流程”
-
LangGraph 是 进阶引擎——解决“LLM如何完成复杂、可控的业务流程”
它们共同构成了从数据接入→基础编排→复杂流程的完整技术闭环。
2026年的今天,AI应用开发早已不是“哪个框架更好”的选择题,而是如何组合使用的实践题。掌握这三个框架的核心思想,你就能像搭积木一样,构建出真正能落地的生产级AI系统。
更多推荐



所有评论(0)