LangChain:LLM 大语言模型编程框架
概述
基本介绍
LangChain 是一个基于语言模型(LLM)开发应用程序的框架。它旨在简化 LLM 应用程序的生命周期,提供组件化、模块化的解决方案。
- 数据感知:将语言模型连接到其他数据源。
- 自主性:允许语言模型与其环境进行交互。
- 生命周期管理:
- 开发:使用开源组件和第三方集成构建应用程序。
- 产品化:使用 LangSmith 检查、监控和评估应用程序。
- 部署:使用 LangGraph 平台将应用转变为生产就绪的 API 和助手。
LangChain 的主要价值在于组件化和现成的链(Chains)。它为使用语言模型提供了抽象层,使得开发人员无需从零开始构建基础功能,从而减少工作量。需要注意的是,LangChain 本身并不是 LLM,需要配合具体的 LLM 模型或在线 API 使用。
核心组成模块
LangChain 包含丰富的模块,涵盖了从输入处理到输出解析的全流程:
- 提示模板 (Prompts)
- 示例选择器 (Example Selectors)
- 聊天模型 (Chat Models)
- LLMs
- 输出解析器 (Output Parsers)
- 文档加载器 (Document Loaders)
- 文本拆分器 (Text Splitters)
- 嵌入模型 (Embeddings)
- 向量存储 (Vector Stores)
- 检索器 (Retrievers)
- 索引 (Indexes)
- 工具 (Tools)
- 代理 (Agents)
- 多模态 (Multimodal)
- 回调 (Callbacks)
这些模块整合了以往分散的工具,显著节省了开发时间。
生态架构
LangChain 框架由多个开源库组成:
- langchain-core:聊天模型和其他组件的基本抽象。
- 集成包:如
langchain-openai, langchain-anthropic 等,重要的集成已被拆分为轻量级包。
- langchain:构成应用程序认知架构的链、代理和检索策略。
- langchain-community:由社区维护的第三方集成。
- langgraph:编排框架,用于组合 LangChain 组件以构建具有持久化、流式处理功能的生产就绪型应用程序。
新兴 LLM 技术栈
大语言模型技术栈主要由四个部分组成:
- 数据预处理流程:包括与数据源的连接(如 S3、CRM)、数据转换层及下游连接器。由于涉及的数据源繁杂(PDF、PPTX、HTML 等),此步骤通常涉及大量的清洗工作,需使用 OCR、脚本等方式提取关键信息并转换为 JSON 格式供后续处理。
- 嵌入端点和向量存储:利用嵌入端点生成向量,并通过向量数据库存储和检索。这种方法支持高效的数据检索和处理大型数据集。
- LLM 终端:接收输入数据并生成输出的接口,负责资源管理和可扩展性。
- LLM 编程框架:协调各种组件(LLM 提供商、嵌入模型、向量存储等)的工具集。
关键组件解释
Prompts/提示词
Prompts 是管理 LLM 输入的工具。在获得所需输出前,通常需要对提示进行大量调整。最终的 Prompt 可以是单句或多句组合,包含变量和条件语句。
- 固定模板:不需要参数。
- 单参数模板:可替换单个词。
- 双参数模板:可替换两个词。
通过设置不同模板和参数,系统可以自动生成各种问题,实现智能对话。
Chains/语言链
Chains 是一种将 LLM 和其他多个组件连接在一起的工具,以实现复杂的任务。它是 LangChain 的核心概念之一,使得入门变得容易,同时也支持更复杂应用的定制。
Agents/代理器
Agents 是使用 LLM 做出决策的工具,能够执行特定任务并生成文本输出。通常由三部分组成:
- Action:代理执行的操作。
- Observation:代理接收到的信息。
- Decision:基于 Action 和 Observation 做出的决策。
Memory/记忆
Memory 用于存储数据。由于 LLM 本身没有长期记忆,Memory 组件有助于在多次调用之间保持状态,这对于多轮对话至关重要。
典型应用场景
- 特定文档问答:从数据库(如 Notion)提取信息并回答用户问题。
- 聊天机器人:创建与用户交流的交互式机器人。
- 智能代理:结合 GPT 和外部工具(如 WolframAlpha)执行计算任务。
- 文本摘要:利用外部数据源生成特定文档的摘要。
Ollama 与 LangChain 的关系
Ollama 与 LangChain 是相互集成和协同工作的关系。
- Ollama:LLM 私有化部署工具,允许用户在本地快速运行开源大模型(如 Llama 2)。
- LangChain:LLM 编程框架,简化构建高级语言模型应用程序的过程。
具体而言,LangChain 通过 langchain-ollama 包提供了与 Ollama 模型的集成,开发者可以在 Python 环境中方便地使用 Ollama 模型。LangChain 还支持流式响应和使用提示模板等复杂操作。两者结合为用户提供了强大的本地部署和使用大模型的解决方案。
LangChain 同类竞品
在商业化上,基于大模型的业务分为基础设施层、垂直领域层和应用层。类似 LangChain 的工具框架具备加速应用开发和落地验证的优势,因此出现了许多竞争者:
| 名称 | 语言 | 特点 |
|---|
| LangChain | Python/JS | 提供标准内存接口,支持自定义大模型封装;缺点是评估生成模型性能较难。 |
| Dust.tt | Rust/TS | API 简单易用,快速构建 LLM 应用;缺点是文档不够完善。 |
| Semantic Kernel | TypeScript | 轻量级 SDK,可将 AI 大模型与传统编程语言集成;缺点是文档不够完善。 |
| Fixie.ai | Python | 开放、免费、简单,支持多模态;缺点是 PaaS 平台,需在平台部署。 |
| Brancher AI | Python/JS | 链接所有大模型,无代码快速生成应用。 |
安装指南
主要包安装
pip install langchain
conda install langchain -c conda-forge
注意:默认安装并不包括所有集成所需的依赖,需根据具体需求单独安装某些集成的依赖。
核心与社区包
- LangChain 核心包 (
langchain-core):包含基础抽象类和 LangChain 表达语言。
pip install langchain-core
- LangChain 社区包 (
langchain-community):包含第三方集成。
pip install langchain-community
- LangChain 实验包 (
langchain-experimental):用于研究和实验用途。
pip install langchain-experimental
相关工具包
常见问题 (FAQ)
总结
LangChain 通过提供标准化的组件和抽象层,极大地降低了开发 LLM 应用的门槛。无论是简单的问答系统还是复杂的代理应用,LangChain 都能提供相应的支持。随着生态的不断完善,它已成为 LLM 应用开发的重要基础设施之一。