news 2026/5/7 23:01:28

LangChain vs LlamaIndex:从编排到数据,一文搞清核心区别

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LangChain vs LlamaIndex:从编排到数据,一文搞清核心区别

目录

摘要

一、核心区别:一句话版本

二、为什么我会觉得它们很像?

三、核心区别:完整对比

四、用 LangChain 的知识理解 LlamaIndex

五、LlamaIndex 的数据处理主线

1. Document

2. Node

3. Index

4. Retriever

5. QueryEngine

六、LangChain 的应用编排主线

七、RAG 场景下怎么选?

八、Agent 场景下怎么选?

九、最佳实践:两者组合使用

十、实际项目中怎么选?

十一、给 LangChain 学习者的 LlamaIndex 学习路线

十二、总结

参考资料


摘要

最近在学习 LlamaIndex 时,我有一个很直接的感受:它和 LangChain 真的很像。两者都能做文档加载、文本切分、Embedding、向量检索、RAG、Agent 和工具调用。如果只看入门示例,甚至会觉得它们是在重复造轮子。

但继续往下学之后会发现,二者虽然能力有重叠,设计重心却截然不同。LangChain 更像是一个LLM 应用编排框架,擅长把模型、Prompt、工具、Agent 和流程串起来;LlamaIndex 更像是一个数据增强框架,擅长把私有数据组织成 LLM 可以高质量使用的上下文。

本文从一个已经学过 LangChain 的视角,梳理两者的相似点、核心差异、概念映射、使用场景以及学习路线。


一、核心区别:一句话版本

先给两个最直观的类比:

LangChain:让 LLM 会做事。 LlamaIndex:让 LLM 会用你的数据。
LangChain 擅长编排行为。 LlamaIndex 擅长组织知识。

用更工程化的方式理解:

LangChain = 应用编排层 LlamaIndex = 数据上下文层

这是贯穿全文最核心的一条线索,后面所有内容都围绕这个区别展开。


二、为什么我会觉得它们很像?

因为二者都处在 LLM 应用开发这一层,都在解决同一个问题:

如何把大语言模型从一个聊天接口,变成能够处理真实任务的应用系统。

因此,它们都会涉及很多相同概念:

  • 文档加载

  • 文本切分

  • Embedding

  • 向量数据库

  • Retriever

  • RAG

  • Agent

  • Tool Calling

  • Memory

  • Workflow

比如一个最常见的 RAG 应用,基本流程在两个框架里都差不多:

加载文档 -> 切分文本 -> 生成向量 -> 存入向量库 -> 检索相关内容 -> 交给 LLM 回答

相似的是"能力模块",不同的是"默认思路"。


三、核心区别:完整对比

维度LangChainLlamaIndex
核心定位LLM 应用编排框架数据增强型 LLM 应用框架
默认入口Prompt、模型、工具、Agent数据、文档、索引、检索
强项Agent、工具调用、流程编排、LangGraphRAG、文档索引、检索优化、数据连接
典型问题LLM 如何完成一个多步骤任务?LLM 如何使用我的私有数据?
代表抽象Chain、Agent、Tool、Runnable、GraphDocument、Node、Index、Retriever、QueryEngine
复杂工作流LangGraph 很强Workflows 也能做,但数据场景更自然
RAG 易用性灵活,但经常需要自己拼组件默认体验更顺

四、用 LangChain 的知识理解 LlamaIndex

如果你已经学过 LangChain,学习 LlamaIndex 时可以做如下映射:

LangChain 概念LlamaIndex 对应概念理解方式
DocumentDocument / NodeLlamaIndex 更强调 Node,Node 是索引和检索的基本单元
TextSplitterNodeParser都是把长文档切成更适合检索的小片段
EmbeddingsEmbeddings都是把文本转换成向量
VectorStoreVectorStore / VectorStoreIndexLlamaIndex 通常用 Index 做更上层的封装
RetrieverRetriever都负责根据 query 找相关内容
RetrievalQA ChainQueryEngineLlamaIndex 中常用 QueryEngine 做问答
ConversationalRetrievalChainChatEngineChatEngine 更适合多轮对话式检索
ToolTool / QueryEngineTool可以把查询引擎包装成 Agent 可调用工具
AgentAgent / AgentWorkflow二者都有 Agent,但 LangChain/LangGraph 更偏复杂编排

对 LangChain 使用者来说,LlamaIndex 最关键的几个概念是:DocumentNodeIndexRetrieverQueryEngineChatEngine。理解了这几个,就基本抓住了 LlamaIndex 的主线。


五、LlamaIndex 的数据处理主线

学习 LlamaIndex 时,不建议一开始就从 Agent 入手。更推荐先抓住它的数据处理主线:

Data Source → Document → Node → Index → Retriever → QueryEngine / ChatEngine → Response

1. Document

Document 是数据进入 LlamaIndex 后的基础表示,相当于"原始资料进入系统后的统一格式"。

常见数据源:PDF、Markdown、网页、Notion 页面、数据库记录、Slack 消息、本地文本文件等。

2. Node

Node 是经过切分后的文档片段。LangChain 里常说 chunk,LlamaIndex 里更常见的说法是 Node。

为什么需要 Node?因为 LLM 和向量检索通常不适合直接处理整篇长文档,需要先切成较小的片段,再做 embedding、索引和检索。

3. Index

Index 是 LlamaIndex 里的核心抽象,负责组织数据,让后续查询变得高效。

from llama_index.core import VectorStoreIndex, SimpleDirectoryReader ​ documents = SimpleDirectoryReader("data").load_data() index = VectorStoreIndex.from_documents(documents)

这几行代码背后通常包含:文档读取 → 文档解析 → 节点切分 → embedding → 向量存储 → 构建可查询结构。

对比 LangChain 的等价写法,会感受到 LlamaIndex 把 RAG 数据侧流程封装得更自然:

# LangChain 的等价写法(需要手动拼组件) from langchain.document_loaders import DirectoryLoader from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain.embeddings import OpenAIEmbeddings from langchain.vectorstores import Chroma ​ loader = DirectoryLoader("data") docs = loader.load() splitter = RecursiveCharacterTextSplitter() chunks = splitter.split_documents(docs) vectorstore = Chroma.from_documents(chunks, OpenAIEmbeddings())

同样的功能,LlamaIndex 是"声明式的",LangChain 是"拼装式的"。

4. Retriever

Retriever 负责根据用户问题,从索引中找出最相关的 nodes,然后把这些内容作为上下文提供给后续的 LLM。

5. QueryEngine

QueryEngine 不仅负责检索,还会把检索到的内容交给 LLM 合成最终答案。可以把它理解为:

Retriever + Prompt + LLM + Response Synthesis = QueryEngine
query_engine = index.as_query_engine() response = query_engine.query("LlamaIndex 和 LangChain 有什么区别?") print(response)

这也是 LlamaIndex 在 RAG 场景中用起来很顺的根本原因。


六、LangChain 的应用编排主线

LangChain 的主线更偏应用行为编排:

Model → Prompt → Tool → Agent → Graph / Workflow → Stateful Execution

如果你要做的是:

  • 让模型调用搜索工具

  • 让模型查询数据库

  • 让模型根据任务自动选择工具

  • 让流程中间有人类审批

  • 让长任务失败后可以恢复

  • 构建复杂 Agent 系统

那么 LangChain,尤其是 LangGraph,通常更自然。它更关注的是:

如何让 LLM 在多个工具、多个步骤和多个状态之间可靠地执行任务。


七、RAG 场景下怎么选?

假设要做一个"公司内部知识库问答系统"。

使用 LlamaIndex 的思路

公司文档 -> 加载 -> 解析 -> 切成 nodes -> 构建 index -> 用户 query -> 检索相关 nodes -> 合成答案

LlamaIndex 在这个场景里更顺,因为它天然围绕数据和索引展开,RAG 是它的本职工作。

使用 LangChain 的思路

公司文档 -> loader -> splitter -> vectorstore -> retriever -> prompt -> model -> chain / agent

LangChain 也完全能做,而且灵活度很高。但在很多情况下,你会更明显地感觉自己在"拼组件"。

结论:如果当前主要目标是做 RAG,尤其是文档问答、知识库检索、多数据源问答,优先考虑 LlamaIndex。


八、Agent 场景下怎么选?

再换一个场景:你要做一个 AI 助手,它需要查询公司知识库、查天气、查数据库、调用内部 API、生成报告,并在关键步骤等待人工确认。

这时候问题就不只是"如何检索文档"了,而是:

如何让 AI 在多个工具之间做决策,并可靠完成多步骤任务。

这类场景下,LangChain / LangGraph 通常更合适。


九、最佳实践:两者组合使用

实际项目中,两者并不是非此即彼,最常见的成熟方案是分工合作

LlamaIndex 负责知识库和 RAG LangChain / LangGraph 负责任务编排和工具调用

具体做法是把 LlamaIndex 的 QueryEngine 包装成一个 LangChain Tool,再交给 Agent 使用:

from llama_index.core import VectorStoreIndex, SimpleDirectoryReader from llama_index.core.tools import QueryEngineTool from langchain.agents import initialize_agent ​ # LlamaIndex 负责建索引 documents = SimpleDirectoryReader("data").load_data() index = VectorStoreIndex.from_documents(documents) query_engine = index.as_query_engine() ​ # 包装成 LangChain 可调用的工具 kb_tool = QueryEngineTool.from_defaults( query_engine=query_engine, name="knowledge_base", description="用于查询公司内部知识库" ) ​ # LangChain Agent 负责编排 agent = initialize_agent(tools=[kb_tool], ...) agent.run("根据知识库内容,帮我生成一份季度总结")

这样既能利用 LlamaIndex 的检索能力,又能利用 LangChain 的复杂流程编排能力。


十、实际项目中怎么选?

你的目标更推荐
快速做知识库问答LlamaIndex
深入优化 RAG 检索质量LlamaIndex
多数据源文档检索LlamaIndex
Agent 调多个工具完成任务LangChain / LangGraph
复杂状态流、人类审批、任务恢复LangGraph
企业知识库 + 业务工具调用LlamaIndex + LangChain 组合
学习如何让 LLM 用好私有数据LlamaIndex
学习 LLM 应用整体编排生态LangChain

十一、给 LangChain 学习者的 LlamaIndex 学习路线

如果你已经学过 LangChain,再学 LlamaIndex 时可以按下面的顺序:

  1. 先理解DocumentNodeIndexRetrieverQueryEngine这五个核心概念

  2. 用一个本地 Markdown 或 PDF 做最小 RAG 示例

  3. 调整 chunk size、top_k、metadata filter,观察检索结果变化

  4. 加入 reranker,观察回答质量变化

  5. 学习 QueryEngine 和 ChatEngine 的区别

  6. 学习 Agent,把 QueryEngine 包装成工具

  7. 最后再看 Workflows、多索引路由、高级检索等内容

不要一开始就陷入所有集成和高级 API。LlamaIndex 的核心价值在于数据管线和检索质量。


十二、总结

刚开始学 LlamaIndex 时觉得它和 LangChain 很像,是正常的。因为二者都服务于 LLM 应用开发,很多组件名称和使用流程确实有重叠。

但从设计重心上看:

LangChain 更关注:LLM 如何行动。 LlamaIndex 更关注:LLM 如何理解和使用数据。

在实际项目中,不必纠结二选一,更合理的思路是根据任务拆分职责:

用 LlamaIndex 管数据、建索引、做检索; 用 LangChain / LangGraph 管工具、流程、状态和 Agent。

理解了这一点,再看 LlamaIndex 就不会觉得它只是"另一个 LangChain",而是能清楚看到它在 RAG 和数据增强应用中的独特价值。


参考资料

  • LlamaIndex 官方文档:https://docs.llamaindex.ai/

  • LlamaIndex RAG 介绍:https://docs.llamaindex.ai/en/stable/understanding/rag/

  • LangChain 官方文档:https://docs.langchain.com/oss/python/langchain/overview

  • LangGraph 官方文档:https://docs.langchain.com/oss/python/langgraph/overview

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/7 22:59:28

基于MCP协议构建AI模型治理平台:架构设计与工程实践

1. 项目概述:AI模型治理的“交通指挥中心”最近在开源社区里,我注意到一个挺有意思的项目,叫apifyforge/ai-model-governance-mcp。光看这个名字,可能有点拗口,但拆解一下,核心其实就落在“AI模型治理”和“…

作者头像 李华
网站建设 2026/5/7 22:56:53

OpenClaw-Wechat插件:5分钟在企业微信部署AI助手,支持Agent与Bot双模式

1. 项目概述 OpenClaw-Wechat 是一个面向 OpenClaw 的企业微信渠道插件。简单来说,它就像一座桥,把企业微信这个国内最主流的办公通讯工具,和 OpenClaw 这个强大的 AI 对话引擎连接了起来。无论你是想在企业微信里部署一个智能客服助手&…

作者头像 李华
网站建设 2026/5/7 22:55:49

天龙八部GM工具完整指南:3分钟掌握游戏数据管理的终极技巧

天龙八部GM工具完整指南:3分钟掌握游戏数据管理的终极技巧 【免费下载链接】TlbbGmTool 某网络游戏的单机版本GM工具 项目地址: https://gitcode.com/gh_mirrors/tl/TlbbGmTool 还在为《天龙八部》单机版本的游戏数据管理而头疼吗?TlbbGmTool是一…

作者头像 李华
网站建设 2026/5/7 22:51:43

AI技能开发实战:从零构建Whobot智能助手的外部工具调用能力

1. 项目概述:一个为Whobot AI平台打造的“智能抓手”技能最近在折腾AI助手集成的时候,发现了一个挺有意思的项目,叫whobot-ai/openclaw-whobot-skill。光看名字,你可能会有点懵,这“OpenClaw”是个啥?是机器…

作者头像 李华