9 - LangChain 概述与架构


本章课程目标:

  • 建立对 LangChain 的整体认识,知道它是什么、解决什么问题、在 AI 应用开发里处于什么位置。
  • 理解 LangChain 在 1.x 时代的产品边界、包结构、版本演进,以及它与 LangGraph、LangSmith、Deep Agents 的关系。
  • 建立对 Model I/O、Chains、Memory、Retrieval、Tools/Agents、Callbacks 这六类教学视角的整体认知。

学习建议: 这一章先当成 LangChain 的地图,不急着记 API。读完最好能说清三件事:LangChain 帮你组织哪些能力、它不负责哪些底层能力、1.x 写法和旧资料里的 0.x 写法为什么会不一样。看完后直接进入 第 10 章 跑一次最小调用,抽象概念会落得更稳。

官方文档与资源:详见 工具导航与参考资料索引 - LangChain


1、LangChain 简介

1.1 定义

LangChain 是一个面向 LLM 应用开发的开源框架。它本身不是大模型,也不是数据库,更不是知识库平台;它更像一层“应用编排层”,负责把模型、提示词、外部知识、工具、记忆、输出解析、调试追踪等能力组织成一个完整、可维护、可扩展的 AI 应用。

举个例子,在一个“企业知识库问答助手”里,用户提问后,系统需要先去向量库检索相关资料,再把检索结果和问题一起组装成 Prompt,随后调用大模型生成答案,最后把结果整理后返回前端。这里真正扮演“连接者”和“组织者”角色的,就是 LangChain。

一句话来说,LangChain = 用代码把大模型和外部世界连接起来的应用开发框架。

其中,Lang 指 Language Model,Chain 指把多个环节串起来形成流程。最早的 LangChain 确实以“链式调用”闻名,但发展到今天,它已经不只是“链”,而是围绕 Agent、RAG、工具调用、状态管理、可观测性 形成了一整套生态。官方在发展历程中提到,LangChain 作为 Python 包公开发布于 2022 年,比 ChatGPT 正式发布还早约一个月,因此它几乎伴随了生成式 AI 应用开发的整个爆发期。

LangChain 在 GitHub 上的热度变化如下图所示:

LangChain 主仓库(langchain-ai/langchain)GitHub Star 历史增长曲线,2023 初至 2025 初由近零增长至约 10 万+(star-history.com 风格图)

从工程视角看,LangChain 的价值不在于“替你发一次请求”,而在于帮你把下面这些原本零散的东西组织起来:

  • 不同厂商的大模型调用方式
  • Prompt 与多角色消息
  • 结构化输出与解析
  • 检索增强生成(RAG)
  • 工具调用、Agent、多步任务
  • 记忆、会话状态、持久化
  • 日志、追踪、调试、评估

这也是为什么它会被很多人看作 AI 应用开发里的“基础框架”。

1.2 为什么需要 LangChain

如果你只是偶尔调一下模型 API,直接用 OpenAI、阿里百炼、DeepSeek、智谱等厂商 SDK 完全没问题;但一旦进入真实项目,单纯“把一个字符串发给模型,再拿回一段文本”的开发方式很快就会暴露出一批工程问题。

大语言模型单独使用时的典型局限:知识截止、无实时联网、难接私有数据与数据库、输出稳定性与工具调用等(示意图)

常见问题包括:

  • 模型接口不统一:不同厂商 SDK、参数命名、返回结构各不相同,切换模型成本高。
  • 输入输出不稳定:今天让它输出 JSON 成功,明天稍微换个问题就可能跑偏。
  • 很难连接外部知识:企业文档、数据库、向量库、内部 API 都需要手动接。
  • 多步任务难维护:例如“先检索,再总结,再调用工具,再组织回复”,靠手写流程容易乱。
  • 多轮对话难管理:你需要决定哪些历史消息保留、何时裁剪、何时持久化。
  • 线上排查困难:模型为什么答错、工具为什么没调、哪一步慢、哪里丢上下文,光看日志很难定位。

LangChain 并不会神奇地消灭这些复杂度,但它给你提供了一套统一抽象,让你能用更规范的方式去解决它们。

1.3 已经能直接调模型了,为什么还要学 LangChain

答案很简单:直接调 API 可以,做简单任务时甚至更直接;但只要你开始做“应用”,框架就会越来越有价值。

最典型的类比,就是 Java 里的 JDBCSpring。你的业务代码不想被某一个数据库或某一个中间件写死,于是你希望中间有一层统一接口来隔离差异。在大模型应用里,这一层统一抽象、统一编排、统一接入的角色,LangChain 很大程度上就在承担。

JDBC 与 LangChain 的类比:左侧为 Java 经 JDBC 对接多种数据库;右侧为 AI 应用经 LangChain 对接多种模型 API(直连单一 API「可行但不建议」的示意)

放到项目开发里,两种路线的边界大致是:

  • 只调 API:适合单次文本生成、简单脚本、快速验证。
  • 用 LangChain:适合做成真实应用,例如客服助手、知识库问答、数据分析助手、工具调用 Agent、多轮对话系统。

所以,LangChain 不是“必须学”,但如果你的目标是做 RAG、Agent、企业级 AI 应用、AI 服务接入现有业务系统,它会显著降低你后续的组织成本。

1.4 LangChain 与 Coze / Dify 的区别

很多人第一次接触 LangChain 时,都会问一句:“我不是已经会用 Coze 或 Dify 了吗,为什么还要学这个?”

本质上,它们不是同一类东西:

维度 Coze / Dify 等平台 LangChain
是什么 产品 / 平台:通过网页可视化界面、工作流节点、知识库管理等方式搭建 AI 应用 代码框架 / 库:在 Python 或 JS 中以代码方式编排模型、工具、RAG、Agent
使用方式 打开浏览器,拖拽节点、配置模型、填写提示词、连接知识库,最后发布应用或 API 在本地或服务器写代码,安装依赖,调用 LangChain API 构建自己的 AI 应用
适合谁 产品、运营、低代码开发者,或希望快速验证业务想法的人 开发者、后端、算法工程师,需要把 AI 能力深度接入已有系统的人
灵活性 受限于平台已有节点、插件、部署方式和权限设计 由代码完全控制,可接内部 API、自建数据库、私有模型、定制工具链
典型场景 快速做一个客服机器人、知识库问答、流程自动化 Demo 做企业内部 AI 中台、复杂 RAG 服务、可定制 Agent、与业务系统深度耦合的服务

实际项目里,这两类工具经常不是“二选一”,而是先平台、后框架;先低代码验证,再代码化落地

  • 在业务探索阶段,用 Coze / Dify 快速验证需求。
  • 在需要深度定制、接公司内部系统、做复杂编排时,用 LangChain / LangGraph 重构为代码服务。

这个思路,和你在本套教程里前半部分先学 Coze / Dify,后半部分再进入 LangChain / LangGraph,正好是一致的。

1.5 为什么现在更适合学

现在学习 LangChain,时机其实比前两年更合适。原因不是“它更简单了”,而是它的边界变清晰了

  • 官方主线已经进入 1.x 时代:相比早期 0.x 快速迭代、命名变动频繁的阶段,1.x 的学习入口更清晰,重点放在 create_agent、统一模型初始化、消息、工具、记忆、检索和可观测性上。
  • LangChain、LangGraph、LangSmith 的分工更明确:你更容易理解“什么时候用高层框架,什么时候用底层图编排,什么时候做调试与评估”。
  • 生态成熟:官方文档、Reference、Learn 教程、Academy 课程已经形成闭环,不再只是零散博客和社区笔记。
  • 应用场景更真实:过去很多教程停留在 Demo 级别;现在官方内容和社区实践都更强调生产可用性,例如人审、持久化、Tracing、评估、部署等。

简单说,现在学 LangChain,不再只是学一个“会不会调模型”的库,而是在学一套 AI 应用工程化方法。

1.6 优势、边界与不足

LangChain 的优势很明显,但它也不是银弹。学习时要同时看到它的“能做什么”和“不能替你做什么”。

优势:

  • 统一模型接口,降低模型切换和多模型共存成本。
  • 提供 Prompt、Message、Parser、Retriever、Tool、Agent 等常用抽象。
  • 能把“单次调用”提升为“可维护流程”。
  • 与 LangGraph、LangSmith、MCP 等生态衔接紧密,利于走向复杂应用。
  • 资料多、案例多、社区活跃,适合建立体系化认知。

边界:

  • 不会替你设计业务逻辑,只是帮你更好地实现。
  • 不会替你训练模型,模型能力强弱仍取决于底层模型。
  • 不会替你存业务数据,向量库、数据库、对象存储仍要你自己选型。
  • 不会天然让效果变好,Prompt、知识质量、工具设计、评估流程依然是关键。

不足与槽点:

  1. 版本变化快:老教程里的类名、导入路径、写法,很可能在新版本里已经迁移。
  2. 抽象多,学习成本不低:初学时容易觉得“明明只是调个模型,为什么多了这么多概念”。
  3. 历史包袱真实存在:很多文章还在讲 LLMChainConversationChain、旧版 AgentExecutor,但新项目未必应照搬。
  4. 文档存在新旧并存现象:官方文档已经比早期稳定很多,但生态广,仍会碰到版本语境不一致的问题。

所以结论很明确:LangChain 适合做 AI 应用,但要用“工程框架”的心态去学,不要把它当成一个简单工具函数库。

1.7 扩展:LangChain4J 简介

如果你的技术栈主要是 Java,可以了解 LangChain4J。它本质是“Java 生态里的 LangChain 风格框架”,常与 Spring Boot、Spring AI、企业中台场景搭配使用,适合 Java 团队把 LLM、RAG、Tools、Agent 等能力整合进现有系统。


2、LangChain 定位

2.1 大模型开发体系分类

如果把大模型相关工作从底到顶做一个粗略分层,大致可以分为三类:

  • 基础模型层:预训练、对齐、推理优化、模型架构设计,例如 GPT、Qwen、DeepSeek、GLM 等背后的模型研发。门槛高、投入大,通常要求较强的数学、深度学习和大规模工程背景。
  • 模型定制层:在「基础模型层」的基础上做领域微调或专用优化(金融、医疗、法律等),偏模型训练/微调与行业落地。
  • 应用开发层:把模型接入业务流程,做成聊天助手、知识库问答、Agent、工作流系统、数据助手等应用。

LangChain 主要服务的,就是第三层:应用开发层。

它不负责训练模型,也不直接替代推理服务平台;它负责的是:**如何把模型能力变成一个能工作的应用系统。**这里要先分清边界:LangChain 更接近 AI 应用开发框架,不是模型研究工具。

2.2 应用技术架构

下面这张图可以帮助你理解 LangChain 在系统架构中的位置:

LLM 应用四层架构:UI 交互层、服务/链层、模型层、存储层及数据流方向;LangChain 主要处于服务/链层

层级 这层负责什么 常见对象 / 产品 LangChain 在哪里
UI 交互层 用户交互入口,例如网页、App、管理后台、聊天界面、表单页面、可视化工作流界面 Web 前端、管理后台、Langflow、聊天窗口 不在这一层
服务 / 编排层 负责把模型、Prompt、检索、工具、记忆、输出解析、状态流转等能力组织成业务流程 LangChain、LangGraph、自研 AI 服务层 LangChain 主要就在这一层
模型层 提供 LLM、Embedding、Rerank、多模态模型等基础能力 OpenAI、阿里百炼、DeepSeek、Ollama、Hugging Face 等 LangChain 通过统一接口调用这一层
存储层 存储原始文档、向量、会话、用户状态、业务数据 MySQL、Redis、Pinecone、Chroma、Milvus、对象存储等 LangChain 会访问这一层,但不替代这一层

数据流:请求 自上而下(用户 → 服务/链 → 模型 → 存储),结果 自下而上返回用户;LangChain 处在 服务/编排层,串联 UI、模型与存储,而不是替代其中任一层。

为什么说 LangChain 相当于 Java 里的 Spring Boot?
因为干的事很像:都是「把多种异构组件整合到一个应用里,用统一抽象让你写业务逻辑,框架管连接和编排」。

  • Spring Boot:在 Java 里整合数据库(MySQL)、缓存(Redis)、消息队列(Kafka)、HTTP 接口等——你写业务代码,Spring 管配置、依赖注入、生命周期;换数据源或加中间件时改配置即可,不必手写一堆连接代码。
  • LangChain:在大模型应用里整合各种模型(GPT、通义)、向量库(Pinecone)、工具、记忆等——你写「链怎么串、Agent 用什么工具」,LangChain 管何时调模型、何时查库、怎么拼 prompt;换模型或加 RAG 时改配置与链即可,不必手写每次请求和拼装。
    所以常说:LangChain 是 AI 应用开发里的「Spring」——站在「服务/链层」,把下层模型和存储、上层交互串起来,你专注业务编排,框架负责对接各组件。

2.3 使用场景

理解“位置”之后,再看“职责”就会清晰很多。真实项目里,LangChain 往往承担下面几件事:

  1. 统一接模型:同一个项目同时接入通义、DeepSeek、OpenAI、Ollama,本质上是在做多模型编排。
  2. 统一处理输入输出:用 PromptTemplate、消息对象、输出解析器来规范请求与结果。
  3. 组织固定流程:把“提问 → 检索 → 生成 → 解析”做成稳定链路。
  4. 接入工具与外部系统:比如天气查询、数据库查询、内部 API、工单系统、邮件系统。
  5. 管理状态与记忆:多轮聊天、会话上下文、用户偏好、长期记忆。
  6. 做调试和评估:把调用过程 trace 出来,定位哪一步出了问题。

如果结合你这套教程的项目场景来看,就非常好理解了:

  • Coze / Dify 阶段,我们做了商品评论分析、客户投诉分类、客服对话记录分析等平台化应用。
  • 进入 LangChain 阶段后,我们开始把这些“AI 能力”落到代码服务里,例如多模型接入、输出解析、记忆管理、Tools、RAG、MCP、Agent。
  • 再往后到 LangGraph 阶段,本质上是在进一步解决“流程更复杂、状态更多、控制更细”的问题。

这条路线,本质是从“会用 AI 平台”走向“会做 AI 系统”。

2.4 岗位与招聘对标

目前在招聘平台上,越来越多岗位会明确写出:

  • 熟悉 LangChain / LangGraph / RAG / Agent
  • 有大模型应用开发经验
  • 能接入向量库、知识库、工具调用
  • 熟悉 Prompt、模型调用、可观测性、评估

换句话说,LangChain 已经不是“可选了解项”,而是很多 AI 应用工程岗位的高频关键词。当然,不同公司未必只用 LangChain,但你一旦掌握这套思维,再迁移到其他框架会快很多。

附:从事「基础通用大模型」开发者简历(示意)

招聘场景中简历片段示意


3、LangChain 包与版本对比

3.1 版本演进:从“链”到“Agent + 图 + 生态”

LangChain 的演进大致可以分成三个阶段来理解:

第一阶段:0.0.x / 0.1 早期阶段,特点是“链优先”。
这一时期大家更多把 LangChain 理解成“Prompt + LLM + Chain”的组合工具,很多经典写法例如 LLMChainConversationChain、各种旧版 AgentExecutor 都是从这里来的。

LangChain V0.1 时期架构示意:以链(Chain)与组件组合为主线的经典教学图

第二阶段:0.2 / 0.3 阶段,开始重视生态拆分和工程边界。
这一时期官方逐渐把 LangChain、集成包、部署与调试能力拆开,形成更清晰的产品层次。你也会在很多 2024 年左右的教程里看到这套结构图。

LangChain V0.2/V0.3 生态:架构、组件、部署三层示意

说明:上图将 LangChain 生态分为三层——架构(Architecture)组件(Components)部署(Deployment)

  • 最底层(架构):LangChain + LangGraph,均开源。LangChain 负责链式编排与基础抽象,LangGraph 提供图结构、循环与多步推理。
  • 中间层(组件):Integrations 等与外部 API、数据库、第三方模型的集成。
  • 最顶层(部署):LangGraph Cloud(云部署)、LangSmith(调试、测试、监控、提示管理等商业化能力)。

第三阶段:1.x 阶段,重点变成“精简主包、强化 Agent、与 LangGraph 深度融合”。
官方文档在 1.x 里强调:langchain 主包只保留核心高层能力,集成拆到独立 provider 包,旧能力迁到 langchain-classic,Agent 则建立在 LangGraph runtime 之上。

LangChain 1.x 轻核心示意:langchain-core 为底座,主包精简、集成拆至各 provider 包并与 LangGraph 等协作

如果记一个时间点即可:

  • 2024 年 2 月:LangGraph 开源发布
  • 2025 年 10 月 20 日:LangChain 官方发布 v1.0.0
  • 现在:学习 LangChain 应以 1.x 文档语境为主

3.2 当前官方产品线理解

现在官方已经不只是在讲一个 langchain 包,而是在讲一整套产品线。在入门阶段来说,最重要的是把这几个名字区分开:

名称 角色定位 你可以怎么理解
LangChain 高层应用框架 快速构建 Agent 和 AI 应用的主入口,屏蔽大量底层细节
LangGraph 低层图编排与运行时 当你的流程更复杂、需要强状态控制、循环、持久化、人审时使用
LangSmith 可观测性、评估、调试、部署平台 用来追踪、调试、评估和上线应用
Deep Agents “开箱即用”的复杂 Agent 方案 官方当前推荐的复杂 Agent 起步方案,建立在 LangChain / LangGraph 之上

这和早期“LangChain = 一切”的印象已经不一样了。现在可以这样区分:

  • 想快速做 Agent:可以从 LangChain 入手
  • 想做更复杂、更可控的 Agentic Workflow:用 LangGraph
  • 想做追踪、评估、部署:用 LangSmith
  • 想快速做更“重型”的复杂 Agent:可以关注 Deep Agents

**本套教程的主线仍然是:LangChain → LangGraph → MCP / 多智能体。**这条路线对入门更友好,因为你先掌握基础抽象,再进入图编排,知识是连贯的。

3.3 0.x 与 1.x 的核心差异

下面这张图对应的是大家最容易感受到的变化:写法变了,重点也变了。

LangChain 0.x 与 1.x 核心差异:旧写法多步组装,新主线强调统一入口、create_agent 与 LangGraph Runtime

先用一句话总结:

0.x 更像“很多高层类 + 组合式积木”,1.x 更像“精简主包 + 统一入口 + Agent 建立在 LangGraph 之上”。

以 Agent 为例,变化尤其明显:

1
2
3
4
5
# 约 0.x:常见需要分多步组装
[Model] → [Tools] → [Prompt] → [Agent] → [Executor]

# 约 1.x:常见收敛为高层入口
create_agent(模型、工具、提示等) → [Agent]

核心变化可以概括为:

对比项 0.x / 旧写法 1.x / 新写法
Agent 创建 常见要手动组装 Agent + Executor create_agent 为主入口
模型初始化 常见直接记忆具体类或旧导入路径 更强调统一入口,如 init_chat_model
主包内容 langchain 中内容很多,历史包袱重 langchain 主包被精简,只聚焦核心能力
旧能力去向 LLMChain、老 Retriever 等混在主包里 迁到 langchain-classic
底层运行时 以前很多人只感受到“链” 现在 Agent 明确建立在 LangGraph 之上
Python 版本 老资料中常见 3.8 / 3.9 官方 1.x 要求 Python 3.10+

这里有一个容易混淆的点:
**并不是说 1.x 以后“链”就没用了,而是说很多旧式高层 Chain 类不再是官方推荐主线。**课程后面的 第 15 章 LCEL 与链式调用 仍然是主线内容,因为“把多个步骤组合起来”的思想从来没有过时,只是实现方式从“某个现成 Chain 类”逐渐转向 Runnable / LCEL / Graph

3.4 LangChain 常见包分类

这一部分是原来最容易写乱的地方,因为 1.x 的包划分和早期已经不一样了。下面按当前官方主线重新梳理一遍。

包 / 模块 作用 说明
langchain-core 核心抽象层 包含消息、Runnable、工具基础、Prompt 基础、模型接口等,是整个生态的底座
langchain 高层应用框架主包 1.x 中聚焦核心高层能力,如 Agent、统一模型初始化、消息与工具等
langchain-openai / langchain-anthropic / langchain-ollama 厂商 / provider 集成包 每个模型厂商或平台通常有自己的独立集成包,便于独立版本管理
langchain-community 社区集成包 放置大量社区维护的集成,例如某些工具、loader、向量库、第三方连接器等
langchain-classic 旧版 / 兼容包 承载许多从主包迁出的经典能力,如旧 Chains、旧 Retrievers、旧 Indexing 等
langgraph 图编排与运行时 用于构建更复杂、可控、可持久化的 Agentic Workflow
langsmith 调试、评估、Tracing SDK 对接 LangSmith 平台,常用于可观测性与实验评估
langchain-text-splitters 文本切分组件 RAG 常用,负责把长文本拆分成合适片段
langchain-mcp-adapters MCP 适配包 用于在 LangChain / LangGraph 应用中接入 MCP 工具

这里特别纠正一个常见误区:

langchain-openailangchain-anthropic 这类包不是 langchain-community 里的别名,它们现在是独立 provider 包。

这也是官方当前强调“独立集成包”的原因:模型厂商变化太快,拆开后更利于单独维护。

3.5 学习时如何面对版本差异

因为互联网上大量资料还停留在 0.x 语境,所以你学习时几乎一定会碰到“视频里这样写,为什么我这里不一样”的情况。建议按下面的原则处理:

  1. 新项目、新代码,优先学习 1.x。
  2. 看到 LLMChainConversationChain、旧 AgentExecutor,先把它们理解为历史写法。
  3. 看到旧教程时,重点学“思路”,不要死记“类名”。
  4. 以官方文档的当前导入路径和当前 API 为准。
  5. 如果课程示例兼容旧写法,目的是帮助你读懂旧生态,不代表新项目都要这么写。

4、LangChain 核心模块

4.1 先建立一张“全景图”

学习 LangChain 时,最容易乱的地方在于:一会儿看到 Model I/O,一会儿看到 Chains,一会儿又看到 Messages、Tools、Memory、Retrieval、Callbacks,感觉像一堆名词堆在一起。其实它们可以放回同一条主线里理解。

先用下面这张图把知识块铺开。它不要求你现在全部掌握,只需要看懂后面章节会沿着哪条路线展开:

LangChain 完整知识体系:从模型接入、Prompt、Parser、LCEL 到 Retrieval、Tools、MCP、Agent 的学习路线

你可以先把一个典型 AI 应用想成这样一条链路:

  1. 用户发来问题
  2. 系统决定要不要带上提示词、历史记录、外部知识
  3. 如果需要,先检索文档或调用工具
  4. 把整理后的上下文交给模型
  5. 得到输出后做解析、格式化或后处理
  6. 整个过程中记录日志、追踪执行链路

从这个视角看,LangChain 的核心模块其实是在回答六个问题:

  • 怎么接模型:Model / Model I/O
  • 怎么组织固定流程:Chains / LCEL
  • 怎么记住上下文:Memory
  • 怎么接外部知识:Retrieval / RAG
  • 怎么让模型会做事:Tools / Agents
  • 怎么观测与调试:Callbacks / LangSmith

下面按这个顺序来理解。

4.2 Model I/O(模型输入输出)

Model I/O 说的就是“围绕模型调用本身的一圈能力”。它解决的是:输入怎么组织、模型怎么调、输出怎么拿得稳。

LangChain Model I/O:Format(输入格式化)→ Predict(调用模型)→ Parse(解析输出)三阶段关系示意

从学习路径上看,它主要包含三件事:

  • Format(输入格式化):把原始输入组织成 Prompt 或多角色消息
  • Predict(模型调用):用统一接口调用不同厂商模型
  • Parse(输出解析):把自然语言输出转成更稳定的结构化结果

对应章节:

从真实开发角度看,Model I/O 是所有 LangChain 学习的基础层。后面学的链、记忆、RAG、Agent,本质上都还是围绕“如何更好地调用模型”展开。

4.3 Chains(链):固定流程编排

Chain 的核心思想很简单:把多个步骤按固定顺序串起来。例如“用户问题 → Prompt 模板 → 模型调用 → 输出解析”就是一个最基础的链;“先检索,再生成”也是链;“先分类,再走不同分支”依然是链。

早期 LangChain 之所以叫 LangChain,就是因为它最著名的能力就是“把这些步骤串起来”。到了今天,虽然很多旧式高层 Chain 类已经不是主角,但链式思维仍然是 LangChain 的基础能力

你需要重点区分两个概念:

  • 固定流程:更适合用 Chain / LCEL
  • 动态决策流程:更适合用 Agent / Graph

也就是说,如果你的业务过程是确定的,例如:

  • 先提炼关键词,再查库,再总结
  • 先清洗输入,再分类,再结构化输出
  • 先识别意图,再调用特定处理链

这类流程通常优先考虑 Chain / LCEL,因为它更稳定、可控、好调试。

对应章节:

4.4 Memory(记忆):记忆与上下文状态

Memory 指的是应用如何“记住”过去发生过什么。注意,这里的“记忆”不是让模型变得更聪明,而是让系统在多轮交互中保留必要上下文,例如历史对话、用户偏好、会话状态、阶段性结果等。

初学者常见误区是把 MemoryRAG 混在一起,实际上它们关注点不同:

  • Memory:更偏“这次会话里发生过什么、这个用户之前说过什么”
  • RAG:更偏“系统到外部知识库里查到了什么”

举个真实项目里的例子:

  • 用户前一轮说“我开的是淘宝店”
  • 当前轮又问“那我这个退款率高吗”

如果系统没有记忆,就不知道“这个”指的是哪个店铺、哪个上下文。
这时需要 Memory 来保存对话历史或用户状态,而不是去知识库里做文档检索。

在官方当前语境里,记忆通常会区分为 Short-term MemoryLong-term Memory。在本教程里,你会先学最常见的会话历史管理,再接触 Redis 持久化等更贴近项目实战的做法。

对应章节:

4.5 Retrieval(检索):检索与 RAG

Retrieval 模块解决的是“模型不知道的知识从哪里来”的问题。它是 RAG 的核心组成部分,负责从外部知识源中检索和当前问题相关的信息,再把检索结果交给模型辅助生成答案。
LangChain Retrieval:外部知识接入与检索增强生成(RAG)在应用中的位置示意

这一块你可以先把它拆成两段理解:

  1. 索引阶段:把文档加载进来,切分、向量化、存入向量库
  2. 查询阶段:用户提问时,先检索相关片段,再交给模型生成答案

这也是为什么 RAG 学习通常不会只讲一个 Retriever,而是会串起整条流程:

  • Document Loaders
  • Text Splitters
  • Embeddings
  • Vector Stores
  • Retrievers
  • 最终生成

对应章节:

并且你已经能在源码目录里看到很多具体案例,例如:

  • TXT / Markdown / JSON / CSV / PDF / Word 文档加载
  • 文本切分
  • Redis 向量存储
  • RAG 问答链路

这也说明一件事:RAG 不是一个单点 API,而是一条完整工程链路。

4.6 Tools/Agents(工具/智能体):让模型不只是“会说”,还“会做”

如果说 RAG 让模型“会查”,那么 Tools 与 Agents 则让模型进一步“会做事”。

4.6.1 Tool 是什么

Tool 本质上是一个可以被模型调用的外部能力。它可以是:查询天气,调数据库,调公司内部 API,发邮件,查订单,做数值计算,调搜索引擎。也就是说,Tool 负责把“语言世界”连接到“行动世界”。

4.6.2 Agent 是什么

Agent 则是在 Tool 之上再多一层:它不是简单执行固定步骤,而是让模型根据当前任务自主决定“下一步该做什么”。例如:先判断是否需要查天气;如果需要,就调用天气工具;看到结果后,再决定是否需要继续问用户;最后组织最终回复。

LangChain Agents:在工具(Tools)之上由模型进行规划、选工具与多步执行的典型关系示意

在 1.x 官方语境下,LangChain 的 Agent 已经明确建立在 LangGraph 运行时之上。这意味着你即使只是调用 create_agent,底层也不再只是一个松散的“工具循环”,而是带有状态、节点、流转、持久化能力的图式运行逻辑。

所以,可以这样区分:

场景 更适合什么
步骤固定、顺序明确 Chain / LCEL
需要模型动态决策 Agent
需要更强状态控制、循环、分支、人审 LangGraph

对应章节与案例:

4.7 Callbacks(回调):日志、调试与可观测性

在很多老资料里,你会看到 Callback 被列为 LangChain 的六大模块之一。这个说法在教学上仍然有价值,因为它提醒你:一个可用的 AI 应用,不只是“能跑”,还要“能看见它怎么跑”。

旧语境下,Callback 更像“运行时钩子”:

  • 记录模型输入输出
  • 统计耗时与 Token
  • 打印中间步骤
  • 追踪工具调用
  • 上报日志与监控

到了现在,官方更强调的是 LangSmith + Tracing + Evaluation 这一整套可观测性能力。也就是说,Callback 的思想还在,但它在工程实践中往往已经进一步体现在:Tracing;Runtime events;Middleware hooks;LangSmith 可视化调试。

这一块在真实项目里很关键。AI 应用最难排查的问题,通常不是“程序报错”,而是:为什么这次没检索到?为什么调了错误工具?为什么模型理解偏了?为什么这轮成本突然变高?为什么线上效果和本地不一致?

如果没有可观测性,很多问题只能靠猜。所以,对企业项目来说,Callbacks / Tracing / LangSmith 不是可有可无的附属能力,而是系统可维护性的关键。

4.8 六大模块总览

虽然官方当前文档导航不再严格使用老版本那种“六大模块总图”来组织内容,但在入门阶段,这套图依然有助于建立整体认知,因此本教程继续保留这套视图。

四大块侧重“模型 I/O → 链 → 检索 → 智能体”这条主线;六大模块则补上 MemoryCallbacks,让你的系统视角更完整。

LangChain 六大核心模块关系总览:Models、Memory、Retrieval、Chains、Agents、Callbacks(教学向总图,与官方 1.x 文档栏目划分是粗粒度对应关系)

说明:这张图属于“教学视图”,适合入门时建立全局感。到了官方 1.x 文档中,你会看到这些能力被拆到 Agents、Models、Messages、Tools、Memory、Retrieval、Streaming、Structured Output、Middleware、Runtime、LangSmith 等更细的栏目里。两者不是冲突关系,而是“粗粒度总图”和“细粒度产品化视图”的区别。

这六块可以重新对应为:

  • Models:模型与模型调用,对应本教程的 Model I/O、模型接入
  • Memory:对话历史、会话状态、长期记忆
  • Retrieval:文档加载、切分、向量化、检索、RAG
  • Chains:固定流程组合、LCEL、Runnable
  • Agents:工具调用、自主决策、多步任务
  • Callbacks:日志、Tracing、调试、监控、评估

下面这张图把这些模块进一步展开了:

LangChain 六大模块展开小结:Agent、Chain、Memory、Data Connection、Model I/O、Callbacks 及其子组件在一页上的关系

虚线表示什么:图中虚线表示数据流或依赖关系——例如链会用到 Memory 和 Data Connection,会通过 Model I/O 调模型;Document Loaders 产出给 Transformers/Splitters,再进 Vector Stores;Document Retrievers 从 Vector Stores 里查。看虚线就能看出「谁用谁、数据怎么流」。

图中区域 对应能力 应该怎么理解 图中在说什么
最上方(紫色) Agents 智能体 负责决策、规划、选择工具,是最「像智能体」的部分 最上层是「做决策、选动作」的智能体。下面挂了两类东西:Executors(执行器/链)——如 ReAct(先推理再行动)、Plan-Execute(先规划再执行)、OpenAI 等;Tools(工具)——Standalone 单工具、Collection 工具集。箭头 in/out 表示工具可以接收输入、返回输出。
中间偏上(粉色) Chains 链 负责把固定步骤串起来,是稳定流程编排层 链是把「调模型、查文档、多步流程」串起来的编排。图中包括:Foundational LLM(直接调基座模型)、Conversational QA(带对话记忆的问答)、Retrieval QA(先检索再回答,即 RAG)、Document(文档处理)、Sequential(按顺序执行的多步链)。虚线连到右侧 LangSmith,表示链的执行可被监控、追踪。
左侧(绿色) Memory 记忆 负责保存对话历史、用户状态、阶段性上下文 存「对话历史、会话状态」等。图中列了:Buffer(简单缓冲)、Vector DB(用向量存对话/上下文,可语义检索)、KV DB、SQL DB。链和智能体在需要时会从这些记忆里读、写。
中间(橙色) Data Connection 数据连接 负责文档加载、切分、向量化、检索,是 RAG 的底盘 负责「数据从哪来、怎么加工、存到哪」。包含:Vector Stores(Embedding 把文本变向量 → 存进 Vector DB / Memory / Self-Hosted / BaaS);Document Retrievers(用 Vector DB、Web API、BaaS 按查询取文档);Document Loaders(从 Folder、File、Web 加载原始数据);Document Transformers/Splitters(对文档做切分、转换,如按 Text/Code/Token 切块)。RAG 的「建库、检索」都在这块。
右侧偏下(蓝色) Model I/O 模型输入输出 负责 Prompt、模型调用、输出解析 和「怎么调大模型」有关:Prompts(Template 模板、Selector 动态选提示);Language Models(Chat 对话模型、LLM 通用模型);Output Parsers(把模型输出变成结构化,如 Structured、JSON)。链和智能体通过这里把「提示 → 模型 → 解析结果」串起来。
最右侧(灰色) Callbacks 回调 负责日志、追踪、调试、监控 在链/智能体执行过程中「插一脚」做日志、监控、调试。图中:LangSmith(官方调试与监控平台)、Console(控制台输出)、Custom(自定义回调)。虚线表示这些回调可以挂到链、模型等环节。

这页图的作用,不是让你死记每个框,而是帮你建立一个直觉:

LangChain 做的不是某一件事,而是把“模型调用、知识接入、流程编排、状态管理、工具执行、调试追踪”这些原本分散的环节串成一个工程系统。

4.9 怎么记这套框架

如果你现在看完还是觉得概念多,可以只记住这套口诀:

  • 想把模型调起来:先学 Model I/O
  • 想把固定步骤串起来:学 Chain / LCEL
  • 想让系统记住上下文:学 Memory
  • 想让模型接外部知识:学 Retrieval / RAG
  • 想让模型调用工具、做多步任务:学 Tools / Agents
  • 想知道系统为什么答成这样:学 Callbacks / Tracing / LangSmith

章节思考题:

  1. 如果不用“框架”这个词,你会怎样向新人解释 LangChain 在应用里做什么?

    参考思路: 可以说它是一层把模型、提示词、输出解析、知识检索、工具、记忆和追踪组织起来的代码工具箱。它不提供模型参数,而是帮你把模型接进业务流程。

  2. 为什么学习 LangChain 时要同时知道 1.x、provider 包和 LangGraph?

    参考思路: 1.x 是当前主线,provider 包负责具体模型接入,LangGraph 承担复杂流程和 Agent 的底层编排。只看旧版链式 API,会读不懂现在的项目结构和官方推荐路径。

  3. 六大模块里,你会先从哪条最小闭环开始?为什么?

    参考思路: 通常先从 Model I/O、Prompt、Parser 开始,形成 prompt | model | parser 的最小闭环。能稳定输入、调用和解析后,再扩展到 RAG、Tools、Memory、Agent 和可观测性。

  4. 什么时候不需要引入 LangChain,直接用模型 SDK 反而更合适?

    参考思路: 如果只是一次简单模型调用、没有复杂编排、没有多模型切换、没有检索和工具链路,原生 SDK 可能更轻。框架的价值在复杂度上来以后才明显。

本章小结:

  • LangChain 不是大模型本身,而是位于 AI 应用架构中“服务 / 编排层”的开源框架,核心作用是把模型、Prompt、知识、工具、记忆、输出解析和调试能力组织成一个可维护的应用系统。它与 Coze / Dify 的关系不是替代,而是分工不同:前者偏代码框架,后者偏低代码平台;真实项目里常常先用平台验证,再用框架落地。
  • 现阶段学习 LangChain,应以 1.x 官方文档为主线。要重点理解:langchain 主包已精简,很多旧能力迁移到了 langchain-classic;Agent 以 create_agent 为高层入口,底层建立在 LangGraph 之上;集成能力则通过 langchain-openailangchain-ollama 等独立 provider 包扩展。
  • 在入门阶段,最重要的不是一开始记住所有 API,而是先建立 六块认知地图Model I/O、Chains、Memory、Retrieval、Tools / Agents、Callbacks。后续章节会按这张地图一块一块展开,并且已经在项目目录中配好了对应案例源码。

建议下一步: 直接进入 第 10 章 LangChain 快速上手与 HelloWorld,先把 API Key、模型名、Base URL、HelloWorld 调用、多模型共存、企业级封装与流式输出 跑通。等你真正把第一个 LangChain 调用写出来,再回头看这一章的“定位、架构、模块”,理解会明显更扎实。