核心要点
LangChain:通用 LLM 应用编排框架,组件极丰富(链、Agent、工具、记忆、各类集成),覆盖面广,适合搭建涉及多步推理与工具调用的复杂应用。
LlamaIndex:专注「数据 → 索引 → 检索 → 问答」的数据框架,在数据连接器、索引结构与查询引擎上更专精、开箱即用,是 RAG 与知识库的首选。
索引能力差异:LlamaIndex 内置向量索引、树(摘要)索引、关键词索引、知识图谱索引等多种结构,并提供成熟的 Query Engine 与检索后处理。
选型:重知识库/文档问答/RAG 用 LlamaIndex 更省心;重 Agent、工具编排、复杂工作流用 LangChain;两者可混用——LlamaIndex 做检索引擎,挂到 LangChain 的 Agent 里。
标准回答
定位:通用编排框架 vs 专精数据框架
LangChain 是一个通用的 LLM 应用编排框架。它提供的组件覆盖面非常广:Prompt 模板、链(LCEL)、Agent 与工具、记忆、各种模型与向量库的集成等。它的设计目标是让你能编排任意复杂的 LLM 工作流——尤其是需要多步推理、调用外部工具、和环境交互的 Agent 类应用。RAG 只是它能做的众多事情之一。
LlamaIndex 则聚焦在「把你的数据喂给 LLM」这一件事上,是一个数据框架。它的整条主线是:数据接入(Connector)→ 建立索引(Index)→ 检索(Retriever)→ 查询问答(Query Engine)。在这条链路上的每一环它都打磨得更深、更开箱即用。
LlamaIndex 在 RAG 上的优势
- 数据连接器丰富:通过 LlamaHub 接入 PDF、Notion、数据库、API 等几百种数据源,省去自己写解析。
- 多样的索引结构:不只是向量索引(VectorStoreIndex),还有树/摘要索引(自底向上摘要,适合长文档总结)、关键词索引、知识图谱索引等。可针对数据特点和查询类型选合适的结构,甚至组合使用。
- 成熟的 Query Engine 与后处理:内置子问题拆解、路由、重排、引用溯源等检索增强能力,几行代码就能跑出一个质量不错的问答。
LangChain 在编排上的优势
当应用不止是「查文档回答」,而要多步决策、调用多个工具、维护对话状态、串联多个 LLM 步骤时,LangChain 的 Agent、工具生态和链式抽象更顺手;配合 LangGraph 还能做有状态、可循环的复杂 Agent。
怎么选 + 能否混用
- 以检索问答 / 知识库 / RAG 为核心 → 优先 LlamaIndex,索引与检索更省心、效果起点更高。
- 以 Agent / 工具调用 / 复杂工作流为核心 → 优先 LangChain。
- 两者并不互斥:常见做法是用 LlamaIndex 构建强大的检索引擎,再把它作为一个工具挂进 LangChain 的 Agent,各取所长。如今二者也都在向对方领域扩展(LlamaIndex 增强了 Agent/Workflow,LangChain 也有完善的 RAG 组件),界线没那么绝对,关键看你的应用重心在哪。
常见误区
⚠️ 常见踩坑
把两者当成「二选一的竞品」是常见误区——它们重心不同且能组合使用,不必非此即彼。另一个误区是无论数据特点一律只用向量索引:LlamaIndex 提供树/关键词/知识图谱等多种索引,长文档摘要、结构化关系查询等场景换用合适的索引结构效果会明显更好。还要避免「为了用 Agent 而用 Agent」,纯文档问答其实用 LlamaIndex 的 Query Engine 更简单可靠。
追问
追问 1:LlamaIndex 的树索引(Summary/Tree Index)和向量索引分别适合什么查询?
向量索引把文档切块后做嵌入,按语义相似度检索 Top-K,适合「在大量文档里找到与问题最相关的几段」这类点查/事实型问题,是 RAG 最常用的结构。树/摘要索引则自底向上对节点逐层生成摘要形成树,查询时可遍历或自上而下汇总,适合「请总结这份长报告」「这批文档的整体结论是什么」这类全局摘要/聚合型问题——这类问题向量检索只取 Top-K 容易丢信息。实际系统常组合多种索引,按查询类型路由。
追问 2:如果已经用 LangChain 搭了 Agent,还想要 LlamaIndex 的检索能力,怎么集成?
典型做法是用 LlamaIndex 构建好 Index 和 Query Engine(负责数据接入、切块、索引、检索后处理),然后把这个 Query Engine 封装成 LangChain 的一个 Tool(给它清晰的名称和描述,说明何时该用它查知识库)。LangChain 的 Agent 在推理时若判断需要查资料,就调用这个工具,LlamaIndex 返回带引用的检索答案,Agent 再综合进最终回复。这样检索这件「脏活」交给更专精的 LlamaIndex,编排与决策交给 LangChain。
追问 3:两个框架都能做 RAG,从工程角度怎么决定用哪个起步?
看团队需求的重心和长期演进方向。如果当下核心就是知识库问答、要快速拿到高质量检索效果、数据源多样,用 LlamaIndex 起步更省心,默认配置就不错。如果可以预见应用会长成带多工具、多步决策、对话状态管理的复杂 Agent,用 LangChain(+LangGraph)起步能避免后续重构。不确定时,可以先用 LlamaIndex 把检索做扎实,再在外层用 LangChain 做编排,两者解耦,后续替换任一层成本都可控。
🔗 相似问题
同一考点的不同问法,面试官可能换着问,一起刷更稳
没找到想看的面试题?把你想看的告诉我们 →
延伸学习
按主题分类的相关资源,便于系统复习