📚 LangChain 的核心概念
LangChain 是一个用于构建基于大型语言模型(LLMs)应用的框架,其核心价值在于将 LLM 与外部资源(如数据、工具)连接,并通过结构化流程实现复杂任务。理解其核心概念是掌握 LangChain 的关键,以下是主要核心概念:
1. 模型(Models)
指与 LangChain 集成的各类语言模型,是整个框架的“大脑”。
- 类型:
- LLMs:生成文本的大型语言模型(如 GPT-3.5/4、Llama 系列),输入文本,输出文本。
- 聊天模型(Chat Models):以“对话消息”为输入输出的模型(如 ChatGPT),输入是
HumanMessageAIMessage等消息列表,输出是AIMessage。 - 文本嵌入模型(Embedding Models):将文本转换为向量(嵌入)的模型(如 OpenAI Embeddings、Sentence-BERT),用于文本相似度计算、检索等。
- 作用:负责核心的文本生成、理解或向量转换,是应用的基础能力来源。
2. 提示词模板(Prompt Templates)
定义输入到模型的文本格式,用于规范化提示词,避免重复编写相似内容。
- 核心功能:
- 将动态变量(如用户输入、上下文数据)插入固定文本模板中,生成最终提示词。
- 支持条件逻辑、格式化(如列表、表格)等,让提示词更结构化。
- 示例:
模板:“请总结以下内容:{text}”,其中{text}为变量,传入具体文本后生成完整提示。
3. 链(Chains)
将多个组件(如模型、提示词模板、工具)按逻辑串联起来,实现复杂任务的流水线式执行。
- 类型:
- LLMChain:最基础的链,由“提示词模板 + LLM/聊天模型”组成,完成单步文本生成。
- SequentialChain:按顺序执行多个链,前一个链的输出作为后一个链的输入(如“提取关键词 → 生成摘要 → 翻译摘要”)。
- RouterChain:根据输入内容动态选择不同的链执行(如根据问题类型选择“问答链”或“翻译链”)。
- 作用:突破 LLM 单步调用的局限,实现多步骤任务拆解与协作。
4. 代理(Agents)
让 LLM 拥有“决策能力”,能根据任务需求自主选择工具或步骤,而非按固定流程执行。
- 核心逻辑:
- 接收用户问题,分析需要做什么(如“需要查天气”“需要计算”)。
- 选择合适的工具(如搜索引擎、计算器)并调用。
- 根据工具返回结果,判断是否需要进一步操作(如补充搜索、直接回答)。
- 关键组件:
- 代理类型:如
ZeroShotAgent(基于单轮提示做决策)、ReActAgent(模仿人类“思考-行动”模式)。 - 工具集(Tools):代理可调用的外部能力,如
SerpAPI(搜索)、PythonREPL(执行代码)、SQLDatabaseToolkit(操作数据库)等。
- 代理类型:如
- 应用场景:复杂推理任务(如规划旅行、数据分析、代码调试)。
5. 记忆(Memory)
让 LLM 能够“记住”对话历史或上下文信息,支持多轮交互。
- 类型:
- 短期记忆:如
ConversationBufferMemory(存储完整对话历史)、ConversationSummaryMemory(存储对话摘要,节省 Token)。 - 长期记忆:结合外部存储(如数据库、向量库),持久化保存对话或知识,供后续调用。
- 短期记忆:如
- 作用:解决 LLM 单次调用“无状态”的问题,让对话更连贯,支持依赖历史信息的任务(如客服对话、多步骤规划)。
6. 索引(Indexes)与检索(Retrieval)
用于将外部数据(如文档、数据库)结构化,以便 LLM 高效检索和使用,核心是“检索增强生成(RAG)”。
- 核心流程:
- 加载数据:通过
DocumentLoader读取文件(PDF、TXT)、数据库等外部数据。 - 分割文本:用
TextSplitter将长文本拆分为短片段(如按字数、语义),便于嵌入和检索。 - 创建向量存储:将文本片段通过嵌入模型转换为向量,存储到
VectorStore(如 Chroma、Pinecone)。 - 检索:根据用户问题生成向量,在向量库中匹配最相关的文本片段,作为上下文输入 LLM 生成回答。
- 加载数据:通过
- 作用:让 LLM 能够结合最新/私有数据回答问题,弥补其知识截止日期和训练数据局限。
7. 工具(Tools)
指 LLM 可以调用的外部能力或服务,扩展其功能边界。
- 常见工具类型:
- 搜索引擎(如 Google Search)
- 数据库操作(SQL、NoSQL)
- 代码执行(Python、JavaScript)
- 文件操作(读取/写入本地文件)
- API 调用(如天气 API、支付 API)
- 作用:让 LLM 从“纯文本生成”升级为“能与现实世界交互”,完成需要实时数据、计算或外部系统支持的任务。
总结
LangChain 的核心概念围绕“连接”与“扩展”展开:通过 模型 提供基础能力,用 提示词模板 规范输入,以 链 和 代理 实现流程控制与决策,借助 记忆 支持多轮交互,通过 索引与检索 关联外部数据,最终通过 工具 连接现实世界。这些概念相互配合,让开发者能快速构建复杂、实用的 LLM 应用。