一、全书概览
这本书是清华大学出版社2025年推出的一本 LangChain 入门到实战的教材,面向有一定 Python 基础、想用大语言模型做实际应用的开发者。全书7章,结构清晰——前2章铺背景和环境,中间2章讲核心组件和 LCEL,最后3章直接上手做项目。
姜春茂是福建理工大学的老师,学术背景扎实,写法偏教材风格,理论铺垫充分。书的卖点在于"三个实战项目":智能问答系统、智能文档助手、知识图谱应用。每个项目都有完整的代码和解析,配套课件、大纲和答案可在清华出版社官网获取。
2025年的 LangChain 生态变化极快,框架从 v0.1 跳到 v0.3+,API 变动不小。这本书的代码如果直接用最新版跑,大概率会遇到废弃警告。建议读的时候对照 LangChain 官方文档,把 API 迁移的部分手动对齐。
整体评分:3.5/5。作为入门教材合格,但如果已经有 LangChain 使用经验,会觉得前半部分节奏偏慢,后半部分实战深度有限。适合大学课程或企业内训的教材场景,不太适合想直接拿来做生产级项目的老手。
二、逐章要点
第1章:LangChain 基础知识
LLM 让计算机能以接近人类的方式理解、分析和生成自然语言,但如何将其与数据源、知识库和外部工具结合,开发有价值、易部署的智能应用,仍然是个巨大的挑战。
这一章从人工智能发展史讲起,经过符号主义→连接主义→大模型三个阶段,再过渡到 LLM 的能力边界讨论。作者花了不少篇幅分析 LLM 的局限性:幻觉问题、知识过时、推理能力有限——这些问题正是 LangChain 要解决的。
| 小节 | 核心内容 | 实用程度 | |------|---------|---------| | 1.1 AI与LLM概述 | 发展历程、LLM兴起原因、能力与局限 | ★★★☆☆ 背景知识 | | 1.2 LLM应用及挑战 | 应用类型分类、构建LLM应用的技术难点 | ★★★★☆ 帮助理清问题域 | | 1.3 LangChain框架简介 | 设计理念、核心模块、与其他框架对比 | ★★★★★ 必读 | | 1.4 LangChain生态系统 | LangSmith、LangGraph、LangServe | ★★★★☆ 了解生态全貌 |
核心论点:LangChain 的设计哲学是"模块化+可组合"。不是一个大而全的框架,而是一套可以像乐高一样拼装的组件库。这个理念直接影响后面 LCEL 的设计。
- [x] 理解 LLM 的三大局限:幻觉、知识截止、推理深度不足
- [x] 明确 LangChain 在 LLM 应用开发中的定位:编排层,不是模型层
- [ ] 对比 LangChain 与 LlamaIndex、Semantic Kernel 的适用场景差异
第2章:开发环境搭建
从零开始,搭建 LangChain 开发环境,编写第一个 LangChain 程序。
纯实操章节。Python 环境配置、pip 安装 LangChain、API Key 获取(OpenAI / 智谱等)、第一个 Hello World 程序。对有经验的开发者来说这章可以跳过,但对初学者友好。
作者在环境搭建部分给了比较详细的步骤,包括虚拟环境管理、依赖冲突处理、Jupyter Notebook 配置等。第一个程序是一个简单的 LLM 调用,展示了 Model I/O 的基本流程:Prompt → Model → Output Parser。
| 步骤 | 关键操作 | 常见坑点 | |------|---------|---------| | Python环境 | 推荐3.10+、venv隔离 | Python 3.12+部分库不兼容 | | API Key配置 | 环境变量或 .env 文件 | Key 泄露到代码仓库 | | 安装LangChain | pip install langchain + 伙伴包 | 核心包和伙伴包分开装 | | 第一个程序 | 三步走:prompt→model→parse | 忘装 langchain-community |
实操价值:这章的代码仓库可以直接 clone 下来跑,对教学场景很方便。不过注意书中用的 API 可能是 OpenAI,国内读者需要替换为智谱 GLM 或通义千问等国产模型。
- [x] 完成开发环境搭建
- [x] 运行第一个 LangChain 程序
- [x] 理解 Model I/O 三步流程
- [ ] 尝试用国产大模型 API 替换 OpenAI
第3章:LangChain 基础组件
掌握构建大语言模型应用的关键技能。
这是全书最硬核的一章。LangChain 的基础组件包括:
- Model I/O:Prompt Template、Chat Model、Output Parser 三件套
- Retrieval:Document Loader、Text Splitter、Embedding、Vector Store、Retriever
- Chains:将多个组件串联成处理管道
- Memory:会话记忆管理(ConversationBufferMemory、SummaryMemory 等)
- Agents:让 LLM 自主选择和使用工具
- Callbacks:组件间的数据流和事件钩子
| 组件 | 功能 | 生产使用频率 | |------|------|------------| | Prompt Template | 动态生成提示词 | ★★★★★ 每次都用 | | Document Loader | 加载PDF/网页/数据库等 | ★★★★☆ RAG必备 | | Text Splitter | 文档分块策略 | ★★★★☆ 影响检索质量 | | Vector Store | 向量数据库接口 | ★★★★★ RAG核心 | | Memory | 多轮对话记忆 | ★★★☆☆ 看场景 | | Agent + Tools | 自主决策调用工具 | ★★★★★ 高级应用标配 |
值得注意的点:
- LangChain 的 Vector Store 抽象层支持十几种数据库(Chroma、FAISS、Pinecone、Milvus 等),切换成本很低,但每家的 API 差异还是需要单独处理。
- Agent 的 ReAct 模式(Reason + Act)是书中重点,LLM 先推理需要什么工具,再执行,再根据结果继续推理——这个循环是 Agent 智能行为的来源。
- Callbacks 机制比较底层,初学者可以先跳过,等需要做日志追踪或性能监控时再回来学。
将 LLM 与各种数据源相连接,实现知识增强;使用 Agents 技术编排 LLM 和外部工具的协同工作,执行复杂的认知任务;基于 Callbacks 机制实现应用程序各组件之间的交互与数据流动。
- [x] 掌握 Prompt Template 的变量替换和模板继承
- [x] 理解 RAG 的完整流程:Load→Split→Embed→Store→Retrieve
- [x] 能写出一个简单的 Agent + Tools 程序
- [ ] 对比不同 Text Splitter 策略对检索质量的影响
- [ ] 实现自定义 Tool 并注册到 Agent
第4章:LCEL(LangChain Expression Language)
LCEL 是 LangChain 的声明式编排语言,让你用管道操作符把组件像流水线一样串联起来。
LCEL 是 LangChain 在 v0.1 之后引入的重大改变,也是这本书的技术亮点之一。核心思想:用 | 操作符把 Runnable 组件串成链,用 .pipe() 或 | 表达数据流向。
# LCEL 基本语法
chain = prompt | model | output_parser
result = chain.invoke({"question": "什么是RAG?"})
LCEL 的几个关键特性:
| 特性 | 说明 | 代码示例 |
|------|------|---------|
| Runnable接口 | 所有组件统一接口 | .invoke(), .stream(), .batch() |
| 管道操作 | 用 | 串联组件 | prompt \| model \| parser |
| 并行执行 | RunnableParallel | RunnableParallel({"a": chain1, "b": chain2}) |
| 路由分支 | RunnableBranch | 条件判断走不同链 |
| 回退机制 | RunnableWithFallbacks | 主链失败自动切备用 |
| 重试配置 | with_retry() | 指定重试次数和异常类型 |
LCEL 的价值:以前写 Chain 需要大量样板代码,LCEL 把它简化成了声明式的管道操作。类似 React 中的 JSX——你声明"做什么",框架负责"怎么做"。这让代码更易读、更易调试。
现实问题:LCEL 的学习曲线不低,尤其是 RunnablePassthrough、RunnableLambda 这些包装器的用法需要反复练习。而且 LCEL 的错误信息有时不太直观,debug 体验有待改善。
- [x] 理解 LCEL 的设计动机和核心抽象
- [x] 用 LCEL 重写第3章的 Chain 代码
- [x] 掌握 stream、batch、ainvoke 等异步/批量调用
- [ ] 用 RunnableParallel 实现多路检索的 RAG
- [ ] 用 RunnableBranch 实现意图路由
第5章:智能问答系统实战
通过 RAG 技术构建一个能基于私有数据回答问题的智能问答系统。
第一个实战项目,用 RAG(Retrieval-Augmented Generation)构建问答系统。完整流程:加载文档 → 文本分块 → 向量化存储 → 用户提问时检索相关片段 → 送入 LLM 生成回答。
技术栈:LangChain + Chroma/FAISS(向量库)+ OpenAI/智谱(Embedding + LLM)
项目拆解:
- 文档处理层:PDF/Word/网页加载,递归字符分块
- 检索层:相似度检索(cosine similarity),Top-K 参数调优
- 生成层:检索到的上下文 + 用户问题 → LLM 生成答案
- 交互层:Streamlit 或 Gradio 做 Web UI
| 调优维度 | 影响 | 推荐做法 | |---------|------|---------| | 分块大小(chunk_size) | 太大→检索噪声多,太小→上下文碎片化 | 500-1000 tokens,根据文档类型调整 | | 重叠长度(overlap) | 保持跨块语义连续性 | chunk_size 的 10-20% | | Top-K | 检索返回的文档数量 | 3-5 篇,太多反而降低质量 | | 检索策略 | 纯向量 vs 混合检索 | 简单场景用向量,复杂场景加 BM25 混合 |
实际收获:这个项目的代码可以直接作为 RAG 项目的脚手架。但书中没有涉及更高级的 RAG 技巧(如 query rewriting、re-ranking、parent-child retrieval),生产环境还需要额外补充。
- [x] 完整跑通问答系统 Demo
- [x] 理解 RAG 各环节对最终效果的影响
- [ ] 尝试不同的分块策略并对比效果
- [ ] 加入 Reranker 提升检索精度
- [ ] 实现多文档源的混合检索
第6章:智能文档助手实战
构建一个能理解、分析和处理文档内容的智能助手,支持文档摘要、信息提取和问答。
第二个实战项目,在第5章 RAG 基础上扩展,加入了更复杂的文档处理能力:
- 文档摘要:长文档自动生成摘要(map-reduce 思想)
- 信息提取:从非结构化文本中提取结构化数据(用 Output Parser + Pydantic)
- 文档分类:自动判断文档类型和主题
- 多文档对比:跨文档信息比对和综合分析
技术亮点:
| 功能 | 技术方案 | 难度 | |------|---------|------| | 长文档摘要 | Map-Reduce Chain | ★★★☆☆ | | 结构化提取 | Pydantic OutputParser + Few-shot | ★★★★☆ | | 文档分类 | Prompt Engineering + LLM | ★★☆☆☆ | | 表格理解 | CSV/Excel Loader + Chain | ★★★☆☆ |
Map-Reduce 摘要方案值得单独说:先对每个文档块独立生成摘要(Map),再把所有摘要合并成最终摘要(Reduce)。这种分治策略可以处理超长文档,不受 LLM 上下文窗口限制。
不足之处:文档助手项目缺少 OCR 能力(处理扫描件 PDF)和多模态能力(处理图片/图表),这些是真实场景中很常见的需求。
- [x] 实现 Map-Reduce 文档摘要
- [x] 用 Pydantic 做结构化信息提取
- [ ] 加入 OCR 支持处理扫描件
- [ ] 实现文档版本对比功能
第7章:知识图谱应用实战
将 LLM 与知识图谱结合,构建具有推理能力的智能应用。
第三个实战项目,也是最有技术含量的一章。核心思路:用 LLM 从非结构化文本中自动抽取实体和关系,构建知识图谱,再基于图谱做问答和推理。
技术栈:LangChain + Neo4j(图数据库)+ NetworkX(图可视化)
项目流程:
- 实体识别与关系抽取:LLM + Prompt Engineering,从文本中提取 (实体, 关系, 实体) 三元组
- 知识图谱构建:将三元组存入 Neo4j,建立节点和边
- 图谱问答:将用户问题转换为 Cypher 查询语句(NL2Cypher),查询图谱获取答案
- 图谱推理:基于图谱的路径发现和关联分析
| 环节 | 技术难点 | 书中方案 | |------|---------|---------| | 实体抽取 | 实体边界模糊、同义词问题 | Few-shot Prompt + LLM | | 关系定义 | 关系类型预定义 vs 自动发现 | 预定义关系类型 + LLM分类 | | NL2Cypher | 自然语言转图查询的准确率 | Few-shot + Schema描述 | | 图谱可视化 | 大规模图谱的展示 | NetworkX + Matplotlib |
我的看法:NL2Cypher 是这个项目中最有价值的技术点。让 LLM 直接写 Cypher 查询语句,相当于给非技术用户一个自然语言的图数据库接口。但准确率严重依赖 Prompt 设计和图谱 Schema 的清晰度,生产环境需要加一层校验。
知识图谱方向在2025-2026年重新获得关注,Google 的 Knowledge Graph、微软的 GraphRAG 都在推这个方向。这章的内容虽然入门级别,但方向选得准。
- [x] 理解知识图谱的基本概念(实体、关系、属性)
- [x] 用 LLM 做简单的实体关系抽取
- [x] 将抽取结果存入 Neo4j
- [ ] 实现完整的 NL2Cypher 问答
- [ ] 对比 GraphRAG 和普通 RAG 的效果差异
三、关键概念速查
1. RAG(Retrieval-Augmented Generation,检索增强生成)
核心思想:先从外部知识库检索相关内容,再把检索结果作为上下文送给 LLM 生成回答。解决 LLM 知识过时和幻觉问题。典型流程:Query → Retrieve → Augment → Generate。
2. LCEL(LangChain Expression Language)
LangChain 的声明式编排语言,用 | 管道操作符把 Runnable 组件串成处理链。统一了 invoke/stream/batch/ainvoke 等调用方式,支持并行、路由、回退等高级模式。
3. Agent(智能体)
让 LLM 具备"自主决策"能力的技术。LLM 根据用户意图和可用工具,自主决定调用哪个工具、传什么参数、如何处理结果。ReAct 模式是最常用的 Agent 范式:Thought → Action → Observation → 循环。
4. Embedding(文本向量化)
将文本转换为高维数值向量的技术,语义相近的文本在向量空间中距离更近。LangChain 支持多种 Embedding 模型(OpenAI、智谱、BGE 等),向量维度通常在 768-3072 之间。
5. Vector Store(向量数据库)
存储和检索文本向量的数据库。支持相似度搜索(ANN),常用方案有 Chroma、FAISS、Milvus、Pinecone、Weaviate。LangChain 提供统一的接口层,切换底层数据库只需改几行代码。
6. Chain(链)
将多个 LangChain 组件按顺序串联的处理管道。早期 LangChain 的核心抽象,在 LCEL 引入后逐渐被声明式语法替代,但概念依然重要。
7. Callbacks(回调机制)
LangChain 的事件钩子系统,可以在组件执行的各个阶段插入自定义逻辑(日志记录、性能监控、安全审计等)。类似 Web 框架中的中间件(Middleware)。
四、核心框架/模型
LangChain 框架架构
┌─────────────────────────────────────────────┐
│ LangChain 应用层 │
├──────────┬──────────┬──────────┬────────────┤
│ Agents │ Chains │ RAG │ Memory │
├──────────┴──────────┴──────────┴────────────┤
│ LCEL 编排层 │
├──────────┬──────────┬──────────┬────────────┤
│ Model I/O│Retrieval │ Callbacks│ Tools │
├──────────┴──────────┴──────────┴────────────┤
│ LangChain Core │
├──────────┬──────────┬──────────┬────────────┤
│ ChatModel│Embeddings│VectorStore│DocumentLoader│
└──────────┴──────────┴──────────┴────────────┘
LangChain 生态全景
| 组件 | 功能 | 状态(2025-2026) | |------|------|------------------| | LangChain Core | 核心抽象和接口 | 稳定 | | LangChain Community | 第三方集成(模型、工具、向量库) | 活跃更新 | | LangChain OpenAI/Anthropic | 厂商特定包 | 稳定 | | LCEL | 声明式编排语言 | 主流写法 | | LangSmith | 追踪、评估、调试平台 | 商业产品,免费额度有限 | | LangGraph | 有状态多Agent编排 | 快速发展,Agent 应用新标准 | | LangServe | 部署 LangChain 为 REST API | 稳定 |
三个实战项目的技术栈对比
| 维度 | 智能问答系统 | 智能文档助手 | 知识图谱应用 | |------|------------|------------|------------| | 核心技术 | RAG | RAG + 文档处理 | LLM + 图数据库 | | 向量库 | Chroma/FAISS | Chroma/FAISS | Neo4j | | LLM用途 | 回答生成 | 摘要/提取/分类 | 实体抽取/NL2Cypher | | 复杂度 | ★★★☆☆ | ★★★★☆ | ★★★★★ | | 生产可用度 | 高 | 中 | 中低(需打磨) |
五、金句摘录
-
"如何利用 LLM 的能力,将其与各类数据源、知识库和外部工具相结合,开发真正有价值、易部署的智能应用,仍然是一个巨大的挑战。"
——点明了 LangChain 存在的根本原因。LLM 本身不是终点,把它和真实业务数据连接起来才是。
-
"LangChain 为 LLM 应用开发提供了一套灵活、模块化的工具集,使开发者能够快速构建和扩展基于 LLM 的应用程序。"
——模块化是 LangChain 的核心卖点,也是它区别于直接调 API 的价值所在。
-
"Agent 的 ReAct 模式:让 LLM 先推理需要什么工具,再执行,再根据结果继续推理。"
——这是 Agent 能"看起来有智能"的技术原理。不是预编程的 if-else,而是动态的推理-行动循环。
-
"LLM 的三大局限:幻觉(Hallucination)、知识截止(Knowledge Cutoff)、推理深度不足(Limited Reasoning)。"
——清醒地认识到 LLM 不是万能的。RAG 解决知识截止,Prompt Engineering 缓解幻觉,Agent/CoT 改善推理。
-
"通过 Callbacks 机制实现应用程序各组件之间的交互与数据流动,搭建端到端的智能应用系统。"
——Callbacks 是 LangChain 的"神经系统",让整个应用从单体变成可观测、可调试的系统。
-
"Map-Reduce 摘要:先对每个文档块独立生成摘要(Map),再把所有摘要合并成最终摘要(Reduce)。"
——经典的分治思想在大模型时代的应用。不受上下文窗口限制,可处理任意长度的文档。
六、行动清单
🔥 每天(日常练习)
- [ ] 用 LCEL 写至少一个 Chain,保持手感(10分钟)
- [ ] 浏览 LangChain GitHub 的最新更新,关注 API 变化
- [ ] 在实际项目中用一次 Prompt Template 的变量替换
📅 每周(深入学习)
- [ ] 读一篇 LangChain 官方博客或 Cookbook,动手复现
- [ ] 用 LangSmith 追踪一个 Chain 的执行过程,分析 Token 消耗和延迟
- [ ] 尝试一种新的 Vector Store 或 Embedding 模型,对比效果
- [ ] 研究一个真实世界的 RAG 产品架构(如 Perplexity、Kimi)
🗓️ 每月(项目实战)
- [ ] 基于书中的问答系统脚手架,为某个真实业务场景构建 RAG 应用
- [ ] 用 LangGraph 搭建一个多 Agent 协作系统(书中的 Agent 是单 Agent,LangGraph 支持多 Agent)
- [ ] 对比 LangChain 和直接用 API 调用的开发效率和维护成本
- [ ] 关注 GraphRAG 的最新进展,评估是否适合当前项目
七、一句话总结
一本合格的 LangChain 入门教材,适合从零上手,三个实战项目提供了从 RAG 到知识图谱的完整学习路径,但深度有限——读完能"会用",距离"用好"还需要在真实项目中反复摔打。
八、读者热议
1. 关于 LangChain 的"过度抽象"争议
不少开发者认为 LangChain 的抽象层太多,简单任务用 LangChain 反而比直接调 API 更复杂。这种批评有一定道理——LangChain 的学习成本不低,而且在框架版本快速迭代中,代码维护成本也不低。但也有反驳:当你需要做 RAG + Agent + 多数据源组合时,LangChain 的模块化优势就体现出来了。我的建议是:简单任务直接调 API,复杂组合场景再用 LangChain。
2. LangChain vs LangGraph 的路线之争
2025年 LangGraph 的崛起让很多人困惑:到底该学 LangChain 还是 LangGraph?实际上两者不是替代关系。LangChain 提供基础组件和 LCEL 编排,LangGraph 在此基础上提供有状态的图编排能力(多 Agent、循环、条件分支)。书中只涉及了 LangChain,没有讲 LangGraph,算是2025年出版教材的一个小遗憾。建议读者在学完本书后,花一周时间了解 LangGraph。
3. 国产大模型适配问题
书中主要使用 OpenAI API 做示例,但国内开发者更多使用智谱 GLM、通义千问、百川等国产模型。LangChain 的 partner 包(langchain-openai、langchain-community 等)确实支持这些模型,但配置方式和参数细节有差异。读者需要自己摸索适配,这也是实际开发中必然要面对的问题。
4. 教材风格 vs 实战需求的落差
有读者反馈这本书"偏教材",理论部分偏多,实战项目的业务场景比较通用(没有特定行业的深度)。这种评价是公平的——作为大学教材,通用性是必要的。但如果你已经有基础,想直接做某个垂直领域(法律、医疗、金融)的 LLM 应用,这本书的实战项目可能不够用,需要结合行业知识自己扩展。
附录:延伸阅读推荐
| 书名/资源 | 方向 | 推荐理由 | |----------|------|---------| | 《大模型实战:从零实现RAG与Agent系统》 | RAG+Agent | 比本书实战更深入 | | 《大模型项目实战:Agent开发与应用》 | Agent | 专注 Agent 方向 | | LangChain 官方文档 | 框架参考 | 最权威的 API 文档 | | LangSmith Cookbook | 调试优化 | 生产环境必备的追踪能力 | | LangGraph 官方教程 | 多Agent | 本书未覆盖的进阶方向 |
笔记生成:2026-04-28 by 喵喵 🐈
相关笔记
同作者仅有此篇 同主题: