Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

LangChain 架构浅析:从零构建 AI 智能应用的底层逻辑

一、什么是 LangChain?

LangChain 是一个开源的大语言模型(LLM)应用开发框架。

如果把大语言模型比作一个极其聪明、但被锁在“小黑屋“里的“大脑“;那么 LangChain 就是为这个大脑插上的**“外接存储”、“网线”以及能干活的“四肢”**。它将开发者在构建 AI 应用时最常遇到的一系列复杂调用流程,标准化成了一个个可灵活拼接的“积木“。


二、LangChain 的核心组件工作流

应用中的各个组件像流水线一样协同工作,每一层都在前一层的基础上进行处理:

阶段说明
输入处理 (Input Processing)将原始数据(PDF、网页等)转换为结构化文档
嵌入与存储 (Embedding & Storage)将文本转换为计算机可理解的向量,并存入数据库
检索 (Retrieval)根据用户查询,快速召回最高关联的信息
生成 (Generation)结合检索结果与提示词,调用模型生成最终回答

三、核心组件详解

1. 模型 I/O(Model I/O)

负责与大语言模型交互的标准化接口层,包含三个子模块:

  • 提示词模板(Prompt Templates):将用户输入动态填充到预设的提示词结构中
  • 语言模型(LLMs / Chat Models):统一封装 OpenAI、Anthropic 等各家模型的调用接口
  • 输出解析器(Output Parsers):将模型返回的非结构化文本解析为结构化数据(如 JSON)

2. 数据检索(Retrieval)

专为 RAG(检索增强生成)场景设计的完整数据管道:

  • 文档加载器(Document Loaders):从 PDF、网页、数据库等各类数据源加载原始内容
  • 文本分割器(Text Splitters):将长文档切分为模型可处理的小块(Chunks)
  • 向量存储(Vector Stores):将切分好的文本转化为向量,持久化存入专属数据库(如 Chroma、Pinecone)
  • 检索器(Retrievers):当用户提问时,将问题同样向量化,去数据库中匹配最相似的段落,作为模型的参考资料

3. 链(Chains)

负责将各类独立操作“串联“成工作流:

  • LLMChain:最基础的链,将【提示词模板】与【大模型】绑定执行

  • 顺序链(Sequential Chain):类似工厂流水线,上一步的输出直接作为下一步的输入

    示例:提取文章摘要 → 根据摘要生成营销文案 → 将文案翻译为英文

4. 记忆(Memory)

大模型本身是无状态的(“鱼的记忆”),说完下句忘上句。Memory 组件专门解决多轮对话的历史衔接问题:

  • 缓冲记忆(Buffer Memory):将之前的对话历史原封不动地塞进当次提示词中
  • 摘要记忆(Summary Memory):当对话过长时,自动触发大模型对前文进行压缩总结,节省 Token 消耗

5. 智能体(Agents)

Agent 是 LangChain 中最强大的组件,赋予大模型自主规划和调用外部工具的能力。

常见 Agent 类型

Agent 类型适用场景
Conversational ReAct Agent在 ReAct 逻辑上加入 Memory,适合多轮对话中的复杂任务处理
Structured Tool Chat Agent支持生成 JSON 结构化参数,适用于需要传递多个复杂参数的 API 调用
Self-Ask With Search专注事实核查,自动将复杂问题拆解为子问题,通过搜索引擎逐一查证后汇总答案

四、常见问题解答(FAQ)

Q1:Agent 是如何决定使用哪个工具的?

Agent 的核心是大模型的“阅读理解“能力。它分析用户提问,并阅读开发者提供的“工具说明书(描述)“,通过以下内部推理循环自动匹配工具:

思考(Thought)→ 行动(Action / 选择工具)→ 观察(Observation / 工具返回结果)→ 循环

Q2:什么是 LangChain 中的 Callbacks?

Callbacks 是 LangChain 的事件钩子系统,允许开发者在链或 Agent 的各个执行节点(如开始、结束、出错)注入自定义逻辑,常用于日志记录、性能监控和链路追踪。

Q3:如何选择 Memory 类型?

Memory 类型特点适用场景
ConversationBufferMemory全量存储对话历史对话轮次少、Token 充足
ConversationSummaryMemory自动总结压缩历史长对话、需控制成本

选择的核心依据是 Context Window 的限制成本考量

Q4:如何评价 LLM 应用的性能?

  • RAGAS:专为 RAG 场景设计的评估框架,衡量检索准确率和生成质量
  • LangSmith:官方追踪工具,可可视化完整调用链路
  • 自定义评估数据集:针对业务场景构建测试集进行基准测试

Q5:LangChain 有什么缺点?

LangChain 封装层级较深,有时会导致调试困难,且版本迭代极快。

应对策略:

  • 配合 LangSmith 进行全链路追踪
  • 复杂逻辑处改用 LangGraph,提高代码可控性和可读性