使用大语言模型构建应用程序与传统软件开发有着根本的不同。LLM 是非确定性的、昂贵的、受限于上下文窗口,并且无法自行访问外部数据或执行计算。LangChain 提供了使 LLM 应用程序开发变得实用、可扩展和生产就绪的架构模式和构建块。
LangChain 已成为最广泛采用的 LLM 应用程序开发框架,拥有数十万开发者和丰富的集成生态系统。它在碎片化的 LLM 领域上提供了统一的抽象层,使开发者能够构建可以切换模型、向量存储和工具的应用程序,而无需重写核心逻辑。
该框架围绕几个核心抽象构建——模型、提示、链、智能体、检索器和内存——这些抽象可以组合成越来越复杂的应用程序。无论是构建简单的问答机器人、多智能体研究系统,还是自主编码助手,LangChain 都提供了组装解决方案的原语和模式。
LangChain 的架构是如何工作的?
LangChain 围绕可组合的抽象构建,这些抽象可以以越来越复杂的方式组合。
graph LR
A[LLM 模型\nOpenAI, Claude, Llama 等] --> B[提示模板\n动态 + 少样本]
B --> C[链\n可组合管道]
D[检索器\n向量数据库、网页搜索] --> E[RAG 链\n文档 + LLM]
F[工具\nAPI、计算器、代码] --> G[智能体\nReAct、OpenAI 函数]
G --> H[操作执行\n工具调用 + 观察]
H --> G
C --> I[输出解析器\n结构化数据提取]
E --> I
LCEL(LangChain 表达式语言)提供了一种声明式的、基于管道的语法,用于将这些组件组合成执行图。
LangChain 中的关键抽象是什么?
LangChain 的强大之处在于其精心设计的一组核心抽象。
| 抽象 | 目的 | 示例 |
|---|---|---|
| ChatModel | 模型调用 | ChatOpenAI、ChatAnthropic、ChatOllama |
| PromptTemplate | 动态提示构建 | ChatPromptTemplate、FewShotPromptTemplate |
| Chain | 可组合执行 | LLMChain、ConversationChain、自定义 LCEL 链 |
| Retriever | 文档检索 | VectorStoreRetriever、EnsembleRetriever、WebSearchRetriever |
| Tool | 外部能力 | TavilySearch、Calculator、PythonREPL、自定义工具 |
| Agent | 自主推理 | ReActAgent、OpenAIFunctionsAgent、自定义智能体 |
| Memory | 对话状态 | ConversationBufferMemory、ConversationSummaryMemory |
| OutputParser | 结构化输出 | PydanticOutputParser、StructuredOutputParser |
每个抽象都独立有用,但设计上能自然地与其他抽象组合。
LangChain 如何支持 RAG 实现?
LangChain 的 RAG 支持覆盖从文档加载到生成答案的完整管道。
| RAG 阶段 | LangChain 组件 | 选项 |
|---|---|---|
| 加载 | 文档加载器 | PDF、网页、S3、数据库、YouTube、Notion、Slack |
| 分割 | 文本分割器 | RecursiveCharacter、Semantic、Token、HTML |
| 嵌入 | 嵌入模型 | OpenAI、HuggingFace、Ollama、Cohere、Voyage |
| 存储 | 向量存储 | FAISS、Pinecone、Chroma、Weaviate、Qdrant、Milvus |
| 检索 | 检索器 | 相似度、MMR、自查询、集成、上下文 |
| 生成 | 文档链 | Stuff、Map-Reduce、Refine、Map-Rerank |
模块化设计允许团队在不更改管道其余部分的情况下交换组件(例如,从 Pinecone 切换到 FAISS)。
LangChain 如何处理模型抽象?
LangChain 为数十个 LLM 提供商和模型类型提供了一致的接口。
| 提供商 | LangChain 集成 | 关键模型 |
|---|---|---|
| OpenAI | ChatOpenAI | GPT-4、GPT-4o、o1、o3 |
| Anthropic | ChatAnthropic | Claude 3.5 Sonnet、Claude 3 Opus |
ChatGoogleGenerativeAI | Gemini 1.5 Pro、Gemini 2.0 | |
| Meta | ChatOllama | Llama 3、CodeLlama |
| Mistral | ChatMistralAI | Mistral Large、Mixtral |
| 本地 | ChatOllama、LlamaCpp | 任意 GGUF 模型 |
在提供商之间切换通常只需要更改一行导入和初始化代码。
常见问题
什么是 LangChain? LangChain 是领先的开源框架,用于构建由大语言模型驱动的应用程序。它提供模块化、可组合的架构,包含 LLM 调用(模型无关)、提示管理、链组合、RAG 管道、智能体系统、工具集成和内存管理等抽象。它支持 Python、JavaScript/TypeScript,并与数百个 LLM 提供商、向量存储和外部工具集成。
什么是 LangChain 链? LangChain 中的链是将 LLM 调用或其他操作组合成单个管道的序列。简单链可能涉及提示 LLM 并解析输出。复杂链可以包含多个 LLM 调用、数据转换步骤、条件分支以及外部 API 集成。LCEL(LangChain 表达式语言)提供了一种声明式的方式来组合链。
LangChain 如何实现 RAG? LangChain 提供完整的 RAG(检索增强生成)框架,包括文档加载器(PDF、网页、数据库)、文本分割器(递归、语义、令牌感知)、嵌入模型(OpenAI、Hugging Face、本地)、向量存储(FAISS、Pinecone、Chroma、Weaviate)、检索器(相似度、MMR、集成)以及用于将检索与 LLM 生成集成的文档链组合器。
什么是 LangChain 智能体? LangChain 中的智能体是使用 LLM 作为推理引擎来决定采取何种操作的自主系统。它们可以访问工具(搜索、计算器、API、数据库),并能将复杂问题分解为多步骤计划。LangChain 支持多种智能体类型,包括 ReAct、OpenAI 函数、结构化聊天、XML 和自定义智能体架构。
LangChain 是否支持监控和可观测性? 是的,LangChain 与 LangSmith 集成,后者是专为 LLM 应用程序设计的可观测性平台。LangSmith 提供追踪、评估、测试和监控功能。它跟踪链执行的每一步,测量延迟和令牌使用量,支持提示和模型的 A/B 测试,并能调试复杂的智能体交互。
延伸阅读
- LangChain GitHub 仓库 – 源代码、文档和示例
- LangChain 文档 – 官方入门指南和 API 参考
- LangChain 表达式语言指南 – 用于组合链的 LCEL 文档
- LangSmith – LangChain 的可观测性和评估平台
無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分!