LangChain/LlamaIndex 应用框架
LangChain 和 LlamaIndex 是构建 LLM 应用的两大主流开源框架——前者以通用编排与 Agent(智能体)见长,后者以 RAG(Retrieval-Augmented Generation,检索增强生成:先从外部知识库检索相关资料,再让模型基于资料作答,从而降低幻觉、让数据可随时更新)为核心。本页对比两者的架构设计,拆解 RAG pipeline 的完整构建流程与生产部署最佳实践,并覆盖 2025-2026 年框架向 Agent 化、Deep Agents(深度智能体)演进的新趋势。前置阅读:RAG 检索增强生成。
这个产品是什么
Section titled “这个产品是什么”当你要把 LLM 做成真实产品(不只是调 API 聊天),会面对一堆工程问题:怎么接数据源、怎么做记忆、怎么调工具、怎么编排多步推理、怎么做可观测。LangChain 和 LlamaIndex 就是帮你解决这些”胶水”问题的应用框架。
- LangChain:通用 LLM 应用框架,核心抽象是 Chain(链式调用)、Agent(智能体)、Memory(记忆)、Tools(工具)。定位”LLM 应用的瑞士军刀”——什么都能做,灵活但偏复杂。配套生态包括 LangGraph(把 Agent 工作流建模为状态图,截至 2026 年月下载量超过 6500 万)、LangSmith(追踪、评估与运维平台)、以及 2025-2026 年主推的 Deep Agents(一种精简的 Agent 运行壳/harness,专注于上下文工程)。公司 LangChain Inc. 已累计融资超 6000 万美元,商业模式从纯开源转向”开源框架 + LangSmith SaaS 订阅”双轮驱动。
- LlamaIndex:数据框架,核心是 RAG 优先——把”让 LLM 接入你的私有数据”做到极致。提供丰富的数据连接器、索引结构、检索策略,以及商业产品 LlamaParse(高精度文档解析,尤其擅长 PDF 表格/版式还原)与 LlamaExtract(结构化抽取)。公司 LlamaIndex Inc.(原名 GPT Index)已获知名 VC 领投的 A 轮融资,定位”企业数据→AI 的中间层”。
一句话区分:要做复杂 Agent 编排选 LangChain,要做高质量 RAG 选 LlamaIndex。实际项目中两者常互补使用——用 LlamaIndex 做数据接入与高质量检索,用 LangGraph 做 Agent 流程编排。
为什么需要框架? 直接调 OpenAI/Anthropic API 也能聊天,但真实产品要处理文档加载、分块、向量检索、多轮记忆、工具调用、流式返回、错误重试、成本追踪等几十个环节。框架把这些环节抽象成可复用、可组合的组件,让你站在巨人肩膀上。代价是要学习框架自己的抽象与概念——这是初学者常觉得”框架很重”的根源。
技术架构拆解
Section titled “技术架构拆解”LangChain 的核心抽象
Section titled “LangChain 的核心抽象”LangChain 用”可组合的链”来编排 LLM 应用:
核心组件:
- Chain(链):把 Prompt + LLM + 解析器串联成一个可复用单元,如早期的
LLMChain。新一代用 LCEL(LangChain Expression Language) 用管道符|组合,声明式、支持流式与异步。 - LangGraph(状态图):把 Agent 工作流建模为”节点 + 边”的有向图,节点可以是确定性代码、单次 LLM 调用、工具调用,甚至一整个子 Agent;边可以是确定性的,也可以是条件分支。这是 LangChain 目前主推的 Agent 编排方式,详见下文与 Agent 模式。
- Deep Agents(深度智能体):2025 年推出的轻量 Agent 运行壳(harness),核心思想是”上下文工程”(context engineering)——模型能力再强,效果取决于你塞进 Prompt 的上下文质量。Deep Agents 把文件系统、待办清单、上下文摘要等做成内置中间件,让模型自主管理长程任务的上下文。2026 年 7 月发布的 v0.7 把基础 Prompt 砍掉了 65%(约 6k → 2k token),性能不降、成本更低。
- Memory(记忆):管理多轮对话上下文(缓冲、摘要、向量检索)。详见下文与 记忆系统。
- Agent(智能体):让 LLM 自主决定调用哪些工具、何时调用。详见 AI Agent。
- Tools(工具):封装搜索、数据库查询、API 调用等外部能力,供 Agent 调用,详见 MCP 与工具调用。
术语:harness(运行壳)。指包裹在模型外面的那层代码——负责组装系统提示词、管理工具、维护上下文窗口、执行循环。同样的模型,换个 harness 可能效果天差地别。Deep Agents、Claude Code、Cursor 的 Agent 都是不同 harness。
LlamaIndex 的 RAG 优先架构
Section titled “LlamaIndex 的 RAG 优先架构”LlamaIndex 围绕”数据→索引→查询”设计:
LlamaIndex 的强项是索引结构丰富(向量索引、树索引、关键词索引、知识图谱索引)和检索策略多样,适合对检索质量要求高的场景。2025 年起,LlamaIndex 也全面拥抱 Agentic RAG(智能体化 RAG)——不再是”检索一次就生成”,而是让 Agent 自主决定要不要检索、检索几次、要不要换查询词、要不要跨多个数据源,把 RAG 变成 Agent 工作流的一环。
术语:Agentic RAG(智能体化检索增强生成)。传统 RAG 是固定的”查询→检索→生成”流水线;Agentic RAG 让 LLM 像人类查资料一样:先判断需不需要查、查哪个库、查到的够不够、要不要换个关键词再查、要不要对照多个来源交叉验证。它用更高的灵活性和 token 消耗,换来更复杂问题的正确率。
关键技术点详解
Section titled “关键技术点详解”RAG Pipeline 完整流程
Section titled “RAG Pipeline 完整流程”无论用哪个框架,高质量 RAG 都遵循同一条 pipeline,每一步都决定最终效果:
- 文档加载:用 Loader 读取 PDF、Word、网页、数据库、Notion 等数据源。LlamaIndex 的 LlamaHub 内置 100+ 数据连接器;商业版 LlamaParse 对复杂 PDF(表格、多栏、公式)的解析质量显著高于开源方案。
- 分块(Chunking):把长文档切成适合嵌入的小块。策略很关键——按固定字数切会割裂语义,推荐按句子/段落切,或用语义分块(semantic chunking,按语义边界切分)。块大小通常 256-512 token(token 是模型处理文本的最小单位,约等于一个词或几个汉字)。
- 嵌入(Embedding):用嵌入模型把文本块编码成高维向量(例如 1024 维的浮点数数组),使语义相近的文本在向量空间里距离也近。中文推荐 BGE 系列、英文推荐 OpenAI 的 text-embedding-3。原理见嵌入模型。
- 向量存储:存入向量数据库(Chroma、FAISS、Milvus、Pinecone、Qdrant)。详见向量数据库。
- 检索:用户提问编码成向量,从向量库找最相关的 top-k 文档块。
- 重排(Reranking):用交叉编码器(cross-encoder,一种把”查询+文档”一起送进模型打分的模型,比向量余弦相似度更准但更慢)对检索结果重新打分排序,大幅提升相关性。详见重排模型。
- 生成:把检索到的文档块拼进 Prompt,让 LLM 基于文档回答。
每一步的深入原理见 RAG 检索增强生成与检索方法。RAG 是当前 LLM 落地最成熟的模式——因为它让模型”查资料再回答”,幻觉(hallucination,指模型一本正经地编造不存在的事实)大幅降低,且数据可随时更新无需重训模型。
进阶:GraphRAG 与混合检索。 当知识之间存在复杂关系(人物-事件-组织),纯向量检索不够,可以用 GraphRAG 把知识组织成图再检索(见 GraphRAG)。生产系统常把向量检索与 BM25 关键词检索做混合检索(hybrid search),兼顾语义匹配和精确匹配,详见 AI 搜索。
多轮对话需要记忆管理。LangChain/LlamaIndex 提供多种策略,详见 记忆系统:
- ConversationBufferMemory:原封不动存全部历史(简单但爆窗口,即超过模型最大上下文长度)。
- ConversationSummaryMemory:用 LLM 把历史压缩成摘要(省 token 但有信息损失)。
- VectorStoreRetrieverMemory:把历史存向量库,按相关性检索(长期记忆,见 PI Agent 的同款技术)。
- 滑动窗口 / Token 缓冲:只保留最近 N 轮或最近 N 个 token,平衡成本与上下文。
- Deep Agents 的 SummarizationMiddleware:当对话占用超过上下文窗口的 85%(可配置)时自动触发 LLM 摘要,v0.7 起可自定义摘要提示词和触发阈值,避免”上下文腐烂”(context rot,塞太多无关内容反而让模型表现下降)。
上下文工程:2025-2026 的新范式
Section titled “上下文工程:2025-2026 的新范式”随着模型上下文窗口从早期的 4K token 扩展到百万级(Gemini、Claude),业界焦点从”prompt engineering(提示词工程)“转向 context engineering(上下文工程)——问题不再是”怎么写一句好提示词”,而是”在有限的上下文窗口里,该放什么、不该放什么、什么时候该总结、什么时候该清理”。这正是 LangChain Deep Agents 的设计哲学,详见 上下文工程。
核心实践包括:
- 该放什么:当前任务必需的指令、相关文档、工具定义、必要的对话历史。无关内容会挤占窗口、稀释信号。
- 工具描述要精炼:Deep Agents v0.7 把内置工具描述精简了 43%,发现”好的工具接口定义(schema)比 few-shot 示例更有效”——模型看接口签名就能学会怎么用。
- 别重复:在系统提示词和工具描述里重复同一条指令并不增强效果,反而浪费 token。
- 该清理什么:用摘要中间件把久远的历史压扁,用文件系统把中间产物落盘而不是一直塞在上下文里。
何时选 LangChain vs LlamaIndex
Section titled “何时选 LangChain vs LlamaIndex”| 场景 | 推荐 | 原因 |
|---|---|---|
| 复杂 Agent(多工具、多步推理、需人审) | LangChain + LangGraph | 状态图编排、条件分支、人机协作(human-in-the-loop)支持成熟 |
| 高质量文档问答(RAG) | LlamaIndex | 索引结构丰富、检索策略精细、LlamaParse 解析强 |
| 深度研究 / 长程自主任务 | LangChain Deep Agents | 内置文件系统、摘要、待办,专为长程任务设计 |
| 简单 RAG 原型 | 均可 | 都能快速搞定 |
| 多模态数据(图+文+表格) | LlamaIndex | 多模态索引、Agentic Document Workflows 支持更好 |
| 结构化数据抽取(PDF→JSON) | LlamaIndex | LlamaExtract 专为结构化抽取设计 |
| 生产级可观测 | LangChain | LangSmith 追踪、评估、LLM Gateway 生态最成熟 |
实际上两者底层都调用 HuggingFace/模型 API,且都在互相借鉴——LangChain 加了 RAG 能力,LlamaIndex 加了 Agent 与 Workflow 能力(llama-deploy、Workflows)。
选型务实建议:如果你是第一次做 LLM 应用,先用 LlamaIndex 的 30 行代码跑通一个 RAG demo,理解 pipeline;等你遇到”需要多步推理、需要让模型自己决定调哪个工具”的复杂场景,再引入 LangGraph。不要一上来就上全家桶——框架的抽象债(abstraction debt)是真实存在的。
用 LlamaIndex 构建一个最小 RAG 系统——加载文档、建索引、提问,十几行代码跑通完整 pipeline:
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
# 1. 加载文档(把 .txt/.pdf 放进 ./data 目录)docs = SimpleDirectoryReader("./data").load_data()
# 2. 自动完成:分块 → 嵌入 → 建向量索引index = VectorStoreIndex.from_documents(docs)
# 3. 创建查询引擎(默认带检索 + 生成)query_engine = index.as_query_engine(similarity_top_k=3)
# 4. 提问——会检索相关文档再用 LLM 回答answer = query_engine.query("这份文档的核心观点是什么?")print(answer.response)这段代码自动完成了分块、嵌入、建索引、检索、生成全流程。生产环境还要加重排(reranker)、自定义嵌入模型、更换向量库、调分块策略。检索与重排原理见 RAG与重排。
对应的 LangChain 写法也类似——DocumentLoader → TextSplitter → Embeddings → VectorStore → RetrievalQA,体现的是同样的 pipeline。而如果用 LangGraph + Deep Agents 搭一个能自主检索的 Agent,代码结构会是:定义工具(其中包含一个检索工具)→ 用 create_deep_agent 创建 Agent → Agent 在推理循环中自己决定何时检索:
from deepagents import create_deep_agentfrom langchain.tools import tool
@tooldef search_knowledge_base(query: str) -> str: """在公司知识库中检索相关信息并返回。""" # 这里接入你的向量检索逻辑 return retriever.invoke(query)
agent = create_deep_agent( model="anthropic:claude-sonnet-5", tools=[search_knowledge_base],)result = agent.invoke({"messages": [{"role": "user", "content": "我们公司的报销流程是什么?"}]})生产部署最佳实践
Section titled “生产部署最佳实践”从原型到生产,RAG/Agent 应用要做这些升级:
- 检索质量优化:加重排模型(cross-encoder)、混合检索(向量 + 关键词 BM25)、查询改写(让 LLM 把口语问题改成检索友好的关键词,或用 HyDE 技术让模型先”假想”一个答案再去检索)。详见重排模型与检索方法。
- 分块策略调优:别用固定字数切,用语义分块或父子块(parent-child chunk)策略,兼顾检索粒度和上下文完整性。
- 流式输出:LLM 回答要流式返回(逐字/逐词吐出,而非等整段生成完才返回),大幅改善用户感知延迟。详见流式输出。
- 结构化输出:需要从回答中提取字段时,用 function calling / JSON mode 强制结构化。详见结构化输出与受限解码。
- 护栏与引用溯源:限制 LLM 只基于检索到的文档回答(防幻觉),并标注引用来源。详见安全护栏与安全对齐。
- 可观测性:用 LangSmith / Langfuse 追踪每次检索和生成,定位”为什么答错了”。2026 年 LangSmith 还推出了 LLM Gateway(模型网关),统一管理多模型路由、成本控制、缓存、限流,把可观测升级为”运行时控制”。
- 缓存:对相同/相似问题缓存回答(语义缓存),降低成本和延迟。
- 评估闭环:搭一套自动化评估(用 LLM 当裁判打分、用标注好的测试集回归),每次改动都跑 eval,避免”改好一个 case、弄坏一堆”。详见 LLM 评估。
成本与性能权衡
Section titled “成本与性能权衡”生产 RAG/Agent 的成本主要由三部分构成,需要分别优化:
| 成本来源 | 典型占比 | 优化手段 |
|---|---|---|
| 检索(嵌入 + 向量查询) | 10-20% | 批量嵌入、本地嵌入模型(如 BGE)、缓存查询向量 |
| 生成(LLM 调用) | 60-80% | 用更小/更便宜的模型做简单步骤、prompt 精简、prompt caching、语义缓存 |
| 重排 + 查询改写 | 5-15% | 对 top-k 做有上限的重排、缓存查询改写结果 |
Prompt Caching(提示词缓存):Anthropic、OpenAI 等厂商支持把重复出现的 Prompt 前缀缓存起来,后续命中缓存的部分按极低费率计费。RAG 场景里系统提示词和长文档前缀高度重复,开启后可省 50%+ 的输入 token 成本。Deep Agents v0.7 也内置了 prompt caching TTL 配置。
典型应用场景
Section titled “典型应用场景”- 企业知识库问答:把公司文档、Wiki、手册做成 RAG,员工自然语言查询。最经典的 LLM 落地场景。LangChain 自己的案例库中,Apollo(销售科技)、Similarweb(市场研究)都用 Deep Agents + LangSmith 重建了内部知识助手。
- 智能客服:基于产品文档 + 历史工单的问答机器人,替代传统规则客服。
- 法律/医疗文献助手:检索海量专业文献辅助决策,必须配合高准确率检索 + 引用溯源。
- Agent 工作流:用 LangGraph 编排”搜索→分析→决策→执行”的多步 Agent,如自动化数据分析助手、文档自动化(Slack 需求 → 直接产出待审核 PR)。
- 个人知识管理:把笔记、收藏做成可对话的”第二大脑”(如 Obsidian + AI 插件)。
- 深度研究助手:Deep Agents 的典型场景——自主规划、多轮搜索、交叉验证、生成长篇报告(类似 OpenAI Deep Research / GPT Researcher)。
2025-2026 最新进展
Section titled “2025-2026 最新进展”LLM 应用框架领域在 2025-2026 经历了一次范式迁移:从”RAG 流水线”走向”Agent 编排”,从”提示词工程”走向”上下文工程”。
LangChain 方面:
- LangGraph 成为主推:月下载量超 6500 万,成为构建可靠 Agent 的事实标准。其核心洞见是”Agent 图通常不是 DAG”(有向无环图)——真实 Agent 需要循环、重试、人机交互,因此 LangGraph 原生支持循环、条件边、动态路由(
Send机制实现 map-reduce)。 - Deep Agents 发布并快速迭代:2025 年推出的轻量 Agent 运行壳,把文件系统、待办清单、上下文摘要做成可插拔中间件。2026 年 7 月的 v0.7 通过精简基础提示词(-65%)和工具描述(-43%),在不降性能的前提下大幅降本;支持自定义中间件、覆盖内置默认行为。
- LangSmith 升级为 Agent 工程平台:从单纯的追踪工具扩展为”可观测 + 评估 + LLM Gateway(模型路由/成本/限流)+ 一键部署”的完整平台。LangChain 与 NVIDIA 合作推出 NemoClaw Deep Agents Blueprint,进军企业级部署。
- 模型支持跟进:
langchain-anthropic已支持 Claude Opus 5;langchain-openai支持 GPT-5 系列及 LangSmith Gateway 环境变量路由。
LlamaIndex 方面:
- Agentic Document Workflows:把文档处理从”一次性解析”升级为”Agent 驱动”——Agent 可以反复阅读、跳转、交叉引用复杂文档,适合财报、合同、技术手册等。
- LlamaParse / LlamaExtract 成熟:LlamaParse 成为复杂 PDF 解析的标杆产品;LlamaExtract 面向结构化数据抽取(PDF → JSON),支持定义 schema 自动抽取。
- 拥抱 MCP:支持 Model Context Protocol(Anthropic 主推的模型-工具标准协议,见 MCP 与工具调用),让 LlamaIndex Agent 能接入更广泛的工具生态。
- Workflows + llama-deploy:提供比纯 RAG 更灵活的事件驱动工作流引擎,并支持分布式部署。
竞争格局: 除 LangChain/LlamaIndex 外,Haystack(deepset 出品,企业级、搜索导向,已获 Siemens、BMW 等大客户)仍是欧洲市场的重要玩家;CrewAI / AutoGen / OpenAI Agents SDK 等多 Agent 框架在 Agent 编排赛道分流;Dify / Flowise / n8n 等低代码/无代码平台降低了非开发者的上手门槛。趋势是:框架层在收敛和标准化(MCP、统一的 Agent 接口),而差异化竞争上移到评估、运维、行业方案。
典型类库与工具
Section titled “典型类库与工具”| 框架 / 工具 | 类型 | 说明 |
|---|---|---|
| LangChain | 应用框架 | 通用 LLM 框架,Chain/Agent/Memory/Tools |
| LangGraph | 编排框架 | 状态图编排,支持循环/条件/动态路由,复杂 Agent 工作流首选 |
| Deep Agents | Agent 运行壳 | LangChain 出品的轻量 harness,专注上下文工程与长程任务 |
| LangSmith | 可观测 + 平台 | 追踪、评估、LLM Gateway、一键部署 |
| LlamaIndex | 数据框架 | RAG 优先,索引结构丰富、检索精细 |
| LlamaParse | 文档解析 | 高精度 PDF/表格解析(商业产品) |
| LlamaExtract | 结构化抽取 | PDF/文档 → 结构化 JSON |
| Haystack | 应用框架 | deepset 出品,RAG 与搜索导向,企业级 |
| CrewAI / AutoGen | 多 Agent 框架 | 多 Agent 协作编排 |
| Dify / Flowise | 低代码 | 可视化拖拽搭建 LLM 应用 |
| 术语 | 英文 | 解释 |
|---|---|---|
| 链 | Chain | LangChain 中串联 Prompt + LLM + 解析器的可复用单元 |
| 智能体 | Agent | 能自主选择和调用工具的 LLM 运行模式 |
| 深度智能体 | Deep Agents | 轻量 Agent 运行壳,内置文件系统/摘要/待办等上下文管理中间件 |
| 运行壳 | Harness | 包裹模型、负责组装提示词与管理上下文的那层代码 |
| 记忆 | Memory | 管理多轮对话上下文的模块 |
| 上下文工程 | Context Engineering | 在有限上下文窗口内优化”放什么、不放什么”的工程方法 |
| 索引 | Index | LlamaIndex 中组织数据供检索的结构 |
| 分块 | Chunking | 把长文档切成适合嵌入的小段 |
| 嵌入 | Embedding | 把文本编码成高维向量,使语义相近的文本向量距离近 |
| 重排 | Reranking | 用 cross-encoder 对检索结果重新打分排序 |
| 幻觉 | Hallucination | 模型编造不存在事实的现象 |
| 响应合成 | Response Synthesis | LlamaIndex 中用 LLM 基于检索结果生成回答的模块 |
| 提示词缓存 | Prompt Caching | 缓存重复的 Prompt 前缀,降低输入 token 成本 |
- 核心技术依赖:RAG 完整原理见 RAG 检索增强生成,嵌入见嵌入模型,向量库见向量数据库,重排见重排模型,检索方法见检索方法,GraphRAG 见 GraphRAG,Agent 见 AI Agent与Agent 模式,记忆见记忆系统,上下文工程见上下文工程,工具与 MCP 见 MCP 与工具调用,推理见 LLM 推理优化,护栏见安全护栏,流式见流式输出,结构化输出见结构化输出,评估见 LLM 评估。
- 框架演进:LangChain 从早期繁重的
LLMChain演进到 LCEL(声明式组合)、LangGraph(状态图编排),再到 Deep Agents(上下文工程 harness),在持续简化复杂度。LlamaIndex 从纯 RAG 扩展到 Agentic Document Workflows、Agent 与多模态。两者都在向”更易用、更生产化、更 Agent 化”发展。 - 生态基础:两大框架底层都依赖 HuggingFace 生态(模型加载、嵌入)和各类模型 API;同类应用产品分析见本目录其他页面,如 ChatGPT/Claude、Perplexity 搜索、Cursor/Copilot。本站 RAG 技术全链路见 RAG。