LangChain 综合指南
在这篇文章中,我们将介绍 LangChain 的基础知识并指导您了解其核心组件。
这篇文章基于 Greg Kamradt 的LangChain Cookbook。这是视频:
LangChain是什么?
LangChain 是一个框架,用于开发由语言模型驱动的应用程序,使它们更容易集成到应用程序中。
图式
LangChain 的第一个主要组件是Schemas。
文本
文本模式表示您提供给语言模型的自然语言输入。
聊天消息
聊天消息允许 AI 根据提供的上下文生成响应。
文件
文档表示文本片段以及关联的元数据。
楷模
LangChain 的下一个主要组件是模型。我们将研究三种类型的模型:语言模型、聊天模型和文本嵌入模型。
语言模型
语言模型将文本作为输入并生成文本作为输出。
该模型将生成输出“星期六”。
聊天模型
聊天模型与聊天消息交互,并且可以根据其配置更具创造性和动态性。
在此示例中,模型按照系统消息的指示,以幽默且无益的方式响应用户关于去纽约旅行的查询。
文本嵌入
文本嵌入将文本转换为称为嵌入的数字表示。这些嵌入可用于更有效地比较和分析文本。
生成的嵌入是一维数字数组(或列表),在语义上表示文本的含义。
提示
LangChain 的下一个主要组件是Prompts。提示是您发送到语言模型的文本。
基本提示
以下是基本提示的示例:
在这个例子中,人工智能会回应:“这个说法不正确。明天是星期二,不是星期三。”
提示模板
当您需要根据不同的输入动态生成提示时,提示模板很有用。
在此示例中,通过将占位符替换为“罗马”来生成最终提示{location}
。AI 然后用一个简短的句子回应,例如:“在罗马时,不要错过参观标志性的斗兽场。”
示例选择器
示例选择器允许您根据用户输入定制 AI 的响应。
例如,给定名词“学生”,示例选择器可能会发现“司机”和“飞行员”是最相似的示例。
输出解析器
输出解析器使您能够从语言模型的响应中获取结构化输出,例如 JSON 对象。
定义响应架构后,创建一个输出解析器来读取架构并对其进行解析。get_format_instructions()
接下来,使用来自输出解析器的方法创建格式化指令。
现在,为格式说明和用户输入创建一个带有占位符变量的提示模板。此模板还将包含一个用于 AI 生成的响应的部分。
准备好提示模板后,将其发送到语言模型并获得响应。然后,您可以使用输出解析器解析响应以获取结构化 JSON 对象(或 Python 中的字典)。
索引
LangChain 的下一个主要组件是索引。语言模型的索引结构文档。
文档加载器
文档加载器使您能够以结构化格式从各种来源加载数据。
通过使用文档加载器,您可以快速轻松地从各种来源加载数据,并使其可用于您的语言模型。
文本拆分器
文本拆分器允许您将文档拆分为更小的块,使模型能够更有效地处理内容。
Retrievers
检索器将您的文档与语言模型结合起来。
通过使用文档存储初始化检索器,您可以根据查询轻松找到相关文档。在下面的示例中,我们搜索与构建事物相关的文档。
检索器会将查询转换为向量并将其与文档存储中的向量进行比较。然后它将返回最相似的文档。
矢量商店
VectorStores 通过嵌入来存储和搜索,嵌入是文档语义的数字表示。矢量存储空间的两个主要参与者是 Pinecone 和 Weaviate。您还可以浏览 OpenAI 的检索器文档以了解其他选项。
VectorStore 将存储这些嵌入并使它们易于搜索。它充当存储文档语义的数据库,允许基于语义相似性进行快速有效的搜索。
记忆
LangChain 的下一个主要组件是Memory。记忆帮助语言模型记住之前的交互并提供更多的上下文感知响应。
聊天消息历史
将消息添加到历史记录后,您可以将此历史记录传递给语言模型以生成上下文感知响应:
链条
LangChain 的下一个主要组件是Chains。链允许您自动组合不同的语言模型 (LLM) 调用和操作。
简单的顺序链
简单的顺序链有助于分解任务,以避免语言模型在被要求连续执行太多任务时分心、困惑或产生幻觉。
在这个例子中,链条首先接收到用户位置(罗马),并输出一道来自罗马的经典菜肴。然后,它提供了该经典菜肴的简单食谱。该verbose=True
参数确保链在执行期间打印语句,从而更容易调试和了解链的进度。
汇总链
摘要链将文本分成更小的块并总结每个块,根据各个摘要创建最终摘要。
在此示例中,链首先将文章拆分为 700 个字符的块。然后它为每个块生成摘要,并根据这些单独的摘要创建最终的简明摘要。
代理商
LangChain 的最后一个主要组件是Agents。代理使语言模型能够动态决定使用哪些工具来最好地响应给定的查询。
最终响应为查询提供了清晰准确的答案。
很棒的例子
自我修复存储库
概括
现在您了解了 LangChain 的核心组件。LangChain 简化了将 AI 模型集成到应用程序中的过程,使开发人员可以更轻松地使用 ChatGPT 等语言模型构建功能强大的应用程序。