LangChain vs LangGraph vs LlamaIndex:Agent/RAG 框架怎么选
AI 应用绕不开框架选择,但 LangChain、LangGraph、LlamaIndex 的边界很多人没搞清——以为它们是竞争关系,其实各管一段。本文讲清三者定位(LangChain 全栈胶水 / LangGraph Agent 编排 / LlamaIndex 数据与 RAG),按你的需求选,以及一个被低估的选项:什么都不用,自己写。
本文要点
- 主题聚焦:AI Agent、DevOps
- 适合人群:独立开发者、全栈工程师、AI 应用开发者
- 核心价值:快速理解背景、实践路径、常见误区和工程建议
做 AI 应用,框架选型第一道坎就是 LangChain / LangGraph / LlamaIndex——名字像、功能重叠、文档互相借鉴,选错了一路别扭,选对了事半功倍。这篇不讲谁"最好",讲它们各自适合什么。
一、先纠正一个误解:它们不是竞争关系
很多人以为三者是"二选一",其实各管一段,常常组合使用:
- LangChain:全栈"胶水"——LLM 调用、prompt、工具、记忆、文档加载,大而全的抽象。
- LangGraph:Agent 编排——把复杂 Agent 流程画成状态图,可控、可观测。
- LlamaIndex:数据与 RAG——文档接入、切分、索引、检索,这块最深。
LangChain 和 LangGraph 同一家公司,后者是前者的"Agent 编排升级";LlamaIndex 专注数据/RAG。你可以用 LlamaIndex 做 RAG + LangGraph 编 Agent + LangChain 做杂项胶水——它们互补。
二、LangChain:大而全的胶水
定位:AI 应用的瑞士军刀。几乎覆盖所有环节——LLM 调用、prompt 模板、工具、记忆、各种文档 loader、向量库集成、chain(链式调用)。
优点:
- 生态最全。要接什么(向量库、文档源、工具),多半有现成集成。
- 入门快。文档/教程/示例最多。
- 适合快速搭原型。
缺点:
- 抽象过度。层层封装,出了问题调试困难,"magic"太多。
- chain 抽象不适合复杂 Agent(控制流不灵活)——这也是为什么出了 LangGraph。
- 版本变动频繁,API 常变。
适合:快速原型、需要接大量现成集成、流程简单的应用。一旦 Agent 复杂,LangChain 的 chain 会力不从心,该上 LangGraph。
三、LangGraph:Agent 编排的正确形态
定位:用状态图编排复杂 Agent。它就是为解决"LangChain chain 模型做不了复杂可控 Agent"而生的。
核心心智模型:Agent = 状态图。节点是 Agent/函数,边是控制流,state 在节点间流动。条件边、循环、并行、人工介入,都原生支持。
优点:
- 复杂 Agent 的可控性。状态图让控制流清晰、可追踪、可调试。
- 生产级特性:人在回路、持久化(可中断恢复)、流式、trace(配 LangSmith)。
- 和具体模型/库解耦。你可以用它编排任何 LLM/工具。
缺点:
- 对简单任务偏重。做个单步 RAG 用它杀鸡用牛刀。
- 学习曲线。状态图的心智模型要适应。
适合:多步、有分支/循环、需要可控可观测的 Agent(研究 Agent、多 Agent 协作、复杂工作流)。之前《多 Agent 协作》《研究 Agent》都用它。
四、LlamaIndex:数据与 RAG 的深度
定位:把"数据接进 LLM"这件事做到最深。文档加载、解析、切分、索引、检索、查询引擎、各种高级 RAG 技巧,这块它最专。
优点:
- 数据管道最全。几十种文档 loader、多种切分/解析策略。
- RAG 进阶内置。混合检索、rerank、查询转换、small-to-big,开箱即用。
- 结构化数据查询(Text-to-SQL、知识图谱)强。
缺点:
- Agent 编排不如 LangGraph。它有 Agent,但复杂编排不是强项。
- 抽象也有点重,但比 LangChain 聚焦。
适合:RAG / 数据密集型应用(知识库问答、文档问答、结构化数据查询)。做 RAG,LlamaIndex 通常比 LangChain 顺手。
五、决策框架
你的需求是?
├ 简单原型、要接一堆集成 → LangChain
├ 复杂可控的 Agent(多步/分支/循环) → LangGraph
├ RAG / 数据接入为主 → LlamaIndex
└ 组合 → 常见: LlamaIndex(检索) + LangGraph(编排)
一句话:Agent 编排找 LangGraph,RAG/数据找 LlamaIndex,快速胶水找 LangChain。三者经常共存。
六、被低估的选项:不用框架
框架不是必须。尤其当你的应用简单,或对可控性要求极高时,直接用模型 SDK + 自己写编排,常常更清爽:
- 简单 RAG:自己切分 + pgvector + 一个 LLM 调用,几十行,比上 LlamaIndex 的全套抽象清晰。
- 简单 Agent:之前《手写 ReAct Agent》演示过——50 行循环,核心 Agent 本体。
- 可控性优先:框架的"magic"在出 bug 时是负担,关键系统自己写更可控。
框架的价值在"帮你省去模板代码",代价是"学习 + 调试 + 锁定"。小项目,自己写可能更快;大项目,框架省心。别为了"用框架"而用框架。
七、选型的几个实操建议
- 先想清楚需求,再选框架。别"听说 LangChain 火就用",先问"我要做 RAG 还是 Agent 还是胶水"。
- 小项目优先自己写。你能自己写的,别引入框架(减少依赖和调试痛苦)。
- 大项目按需组合。LlamaIndex 做 RAG + LangGraph 编 Agent,是常见的生产组合。
- 关注锁定风险。框架抽象一旦深入,迁移成本高。核心数据/逻辑保持框架无关(用标准格式存数据/状态),降低锁定。
- 看维护活跃度。AI 领域框架更迭快,选维护活跃、文档好的(这三个都是)。
小结
三个框架不是竞争对手,各管一段:
- LangChain:全栈胶水,原型快、集成多。
- LangGraph:复杂 Agent 编排,状态图、可控可观测。
- LlamaIndex:数据与 RAG,这条最专最深。
按需求选:Agent 编排→LangGraph,RAG/数据→LlamaIndex,胶水→LangChain,常常组合。而简单或高可控场景,自己写往往更好——框架不是默认选项。
记住一句:框架是工具,不是信仰。选能让你的项目更简单、更可控的那个——哪怕那个是"不用框架"。在 AI 领域尤其如此,模型和需求变化太快,过度依赖某框架,往往半年后就成了包袱。
Related