目录

引言:为什么我们需要三个框架?

一、一句话定位:三个框架分别解决什么问题?

二、LlamaIndex:为RAG而生的“数据专家”

2.1 核心设计思想

2.2 核心组件

2.3 代码示例

2.4 LlamaIndex的擅长与不擅长

三、LangChain:通用LLM应用的“瑞士军刀”

3.1 核心设计思想

3.2 核心组件

3.3 代码示例

3.4 LangChain的擅长与不擅长

四、LangGraph:生产级智能体的“总设计师”

4.1 核心设计思想

4.2 核心设计

4.3 代码示例

4.4 LangGraph的擅长与不擅长

五、三大框架的协同:1+1+1 > 3

5.1 协同案例:智能客服系统

六、如何选择?一份实用指南

七、总结:不是替代,而是进化


引言:为什么我们需要三个框架?

2026年,大模型应用开发早已不再是简单的“调API、写提示词”。当我们需要构建一个真正能用的AI系统时,往往会面临三个核心挑战:

  1. 数据怎么喂给模型?——私有文档、数据库、API数据如何变成模型能理解的上下文?

  2. 流程怎么编排?——如何把模型调用、工具使用、结果处理串联成一条工作流?

  3. 复杂任务怎么管理?——多轮对话、状态维护、条件跳转、自我纠错如何实现?

这三个挑战,恰好对应了今天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 协同案例:智能客服系统

假设我们要构建一个企业智能客服系统,需要:

  1. 知识库检索:用LlamaIndex处理企业内部文档,构建高效索引

  2. 基础问答:用LangChain的RetrievalQA链快速实现问答

  3. 复杂处理:当遇到需要多轮沟通、确认信息的场景,用LangGraph管理整个对话状态和分支逻辑

这种“各司其职、层层递进”的架构,正是目前生产级AI应用的主流模式 。

六、如何选择?一份实用指南

场景 首选框架 理由
快速搭建知识库问答系统 LlamaIndex 开箱即用的RAG能力,配置简单 
需要调用多个外部工具 LangChain 丰富的工具生态和Agent机制 
复杂的多轮对话任务 LangGraph 状态管理和循环控制能力 
混合场景(RAG+Agent+复杂流程) 协同使用 各取所长,发挥最大效能

七、总结:不是替代,而是进化

理解这三个框架的关系,有一个很好的比喻 :

  • LlamaIndex 是 数据仓库——解决“LLM如何获取私有数据”

  • LangChain 是 基础脚手架——解决“LLM如何整合基础工具与流程”

  • LangGraph 是 进阶引擎——解决“LLM如何完成复杂、可控的业务流程”

它们共同构成了从数据接入→基础编排→复杂流程的完整技术闭环。

2026年的今天,AI应用开发早已不是“哪个框架更好”的选择题,而是如何组合使用的实践题。掌握这三个框架的核心思想,你就能像搭积木一样,构建出真正能落地的生产级AI系统。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐