LangChain 是一个用于语言模型和应用程序开发的框架,它提供了一系列工具和组件, 帮助开发者更轻松地构建基于大型语言模型(LLMs,如 OpenAI 的 GPT 系列)的应用程序。 LangChain 的目标是降低构建复杂语言应用程序的难度,通过提供一个模块化的框架,使得开发者能够快速集成和定制语言模型。
LangChain 可以很方便地连接大语言模型和各种应用。
主要特性
以下是 LangChain 的主要特性:
- 模块化设计:LangChain 提供了一系列模块,包括模型、消息、角色、API 等,开发者可以根据自己的需求选择合适的模块进行组合。
- 多种语言模型支持:LangChain 支持多种语言模型,包括 OpenAI 的 GPT 系列、清言的 GLM 系列等。
- 链式调用:开发者可以创建
“链”(
chains
),这些链是一系列可以顺序执行的语言模型调用和其他操作,用于构建复杂的交互式应用程序。 - 数据集成:LangChain 提供了与多种数据源集成的能力,如文件、数据库、搜索引擎等,使得语言模型能够访问和利用这些数据。
- 可定制性:开发者可以根据特定任务对语言模型的行为进行微调,包括设置提示(
prompts
)、添加额外的上下文信息等。
为什么需要 LangChain?
大模型的智能效果令人振奋,可是当开发人员试图将大模型这颗“聪明脑”放入应用程序时,却发现了前所未有的挑战。
prompt
的结构如何标准化?(PromptTemplate
)- 如果我想中途随时切换大模型,怎样简单方便地操作?
- LLM 的输出是非结构化的,它如何与结构化的程序接口相互交互?
- 预训练模型的知识落后,如何让它知道最新的信息?
- 如何让这颗大脑拥有记忆?(
Memory
) - 如何给这颗 “聪明脑” 装上 “五官”,让它能够感知环境输入?
- 怎样给这颗 “聪明脑” 装上 “手” 和
“脚”,让它帮我执行具体的任务?(
Agent
)
LangChain 尝试解决的,就是这些问题。 LangChain 框架背后的核心思想是将自然语言处理序列分解为各个部分,允许开发人员根据自己的需要高效地定制工作流程。
LangChain 的核心模块
Langchain 有6大核心模块:
Models
:模型,是各种类型的模型和模型集成。Prompts
:提示,包括提示管理、提示优化和提示序列化。Memory
:记忆,用来保存和模型交互时的上下文状态。Indexes
:索引,用来结构化文档,以便和模型交互。包括文档加载程序、向量存储器、文本分割器和检索器等。Agents
:代理,决定模型采取哪些行动,执行并且观察流程,直到完成为止。Chains
:链,一系列对各种组件的调用。
LangChain 通常被用作「粘合剂」,将构建 LLM 应用所需的各个模块连接在一起。 使用 Langchain 中不同组件的特性和能力,可以构建不同场景下的应用,如聊天机器人、基于文档的问答、知识管理、个人助理、Agent 智能体等等。
如果需在本地或离线环境下使用大模型,需要首先将所需的模型下载至本地,通常开源 LLM 与 Embedding 模型可以从 HuggingFace 下载。
再比如,使用 Index 部分涉及的 RAG 技术,可以将特定领域的资料存在向量数据库里,在调用大模型时找出相关的部分作为“参考资料”传给大模型,以得到更为符合业务要求的回答。