LangChain 是一个基于语言模型开发应用程序的框架,本教程是JS版本的Langchain教程
语言模型以文本作为输入 - 这个文本通常称为提示。通常,这不仅仅是一个硬编码的字符串,而是模板、例子和用户输入的组合。LangChain提供了几个类和函数,使得构建和处理提示变得容易。
langchain Partial prompt templates是指Langchain框架中的部分提示模板。这些部分提示模板可以更加方便地为模型输入添加参数,提高模型的性能和效果。具体来说,部分提示模板可以“部分填充”模板,即只传入部分必需的参数,生成新的提示模板。与传统的提示模板相比,部分提示模板更加灵活,可以更好地适应不同场景的需求。
本文档介绍如何将多个提示组合在一起
如果你有大量的示例,你可能需要选择哪些示例包含在提示中。LangChain示例选择器负责执行此操作。
大型语言模型(LLMs)是LangChain的核心组件。LangChain不提供自己的LLMs,而是提供了一个标准接口,用于与许多不同的LLMs进行交互。
聊天模型是一种语言模型的变体。虽然在底层使用语言模型,但它们提供的接口略有不同。它们不是提供一个 "输入文本,输出文本" 的API,而是提供一个接口,其中 "聊天消息" 是输入和输出。
语言模型输出文本。但是很多时候,您可能希望获得比仅文本更结构化的信息。这就是输出解析器的作用。
许多LLM应用程序需要用户特定数据,这些数据不是模型的训练集的一部分。通过检索增强生成(RAG)是实现这一目标的主要方式。在该过程中,外部数据被*检索*,然后在进行*生成*步骤时传递给LLM。
LangChain设计了一个Document Loader组件用于加载各种类型的本地数据
因为模型有最大token限制,通常需要对文本进行分割处理,拆分成一个个小文本片段。LangChain具有许多内置的文档转换器,使拆分、合并、过滤和其他操作文档变得简单。
嵌入模型可以创建文本片段的向量表示,主要用于文本相似度搜索。
存储和搜索结构化数据最常见的方法之一是将文本进行向量化表示(文本嵌入),然后将向量数据存储到向量存储引擎,通过向量存储引擎进行文本相似度搜索。
Chroma是一个AI原生的开源向量数据库,专注于提高开发者的效率和开发体验。Chroma采用Apache 2.0许可证。
LangChain检索器是一个接口,根据一个非结构化查询返回文档。它比向量存储更通用。检索器不需要能够存储文档,只需要能够返回(或检索)文档。向量存储可以用作检索器的支撑,但也可以使用其他类型的检索器。
LangChain为这种“链接”应用程序提供了Chain接口。我们非常通用地定义了一个Chain,它是一个调用组件的序列,可以包含其他链。
基于本地信息搜索的问答任务
对话式检索问答链在检索问答链的基础上提供了一个聊天历史组件。
本示例演示了使用`SQLDatabaseChain`在SQL数据库上进行问题回答的用法。
APIChain使LLMs能够与API进行交互以检索相关信息。
本章介绍LangChain BufferMemory内存记忆组件
本教程演示如何使用针对对话优化的代理(agent)。其他代理通常针对使用工具来找到最佳应答进行优化,但在对话环境中,您可能希望代理能够与用户进行聊天。
在本指南中,我们将介绍一些常见的Langchain各个组件组合的应用模式。