Azure OpenAI 是一项云服务,可帮助您利用来自 OpenAI、Meta 等的多样化预制和精选模型快速开发生成式 AI 体验。 LangChain.js 支持通过 OpenAI SDK 中的全新 Azure 集成与 Azure OpenAI 进行集成。 您可以在此页面了解更多关于 Azure OpenAI 及其与 OpenAI API 的区别。如果您没有 Azure 账户,可以创建一个免费账户开始使用。 这将帮助您开始使用 LangChain 的 AzureOpenAIEmbeddings 嵌入模型。有关 AzureOpenAIEmbeddings 功能和配置选项的详细文档,请参阅 API 参考。
此前,LangChain.js 使用专用的 Azure OpenAI SDK 支持与 Azure OpenAI 的集成。该 SDK 现已弃用,转而支持 OpenAI SDK 中的新 Azure 集成,该集成允许在发布当天访问最新的 OpenAI 模型和功能,并支持在 OpenAI API 和 Azure OpenAI 之间无缝切换。如果您使用已弃用的 SDK 连接 Azure OpenAI,请参阅迁移指南以更新到新 API。

概述

集成详情

设置

要访问 Azure OpenAI 嵌入模型,您需要创建一个 Azure 账户、获取 API 密钥,并安装 @langchain/openai 集成包。

凭据

您需要部署一个 Azure OpenAI 实例。您可以按照本指南在 Azure 门户上部署一个版本。 实例运行后,请确保您拥有实例名称和密钥。您可以在 Azure 门户中,实例的“密钥和终结点”部分下找到密钥。 如果您使用 Node.js,可以定义以下环境变量来使用该服务:
如果您希望获得模型调用的自动追踪,还可以通过取消注释以下内容来设置您的 LangSmith API 密钥:

安装

LangChain 的 AzureOpenAIEmbeddings 集成位于 @langchain/openai 包中:
您可以在 Azure OpenAI 文档中找到支持的 API 版本列表。
如果未定义 AZURE_OPENAI_API_EMBEDDINGS_DEPLOYMENT_NAME,它将回退到 AZURE_OPENAI_API_DEPLOYMENT_NAME 的值作为部署名称。同样,AzureOpenAIEmbeddings 构造函数中的 azureOpenAIApiEmbeddingsDeploymentName 参数如果未定义,将回退到 azureOpenAIApiDeploymentName 的值。

实例化

现在我们可以实例化模型对象并嵌入文本:

索引与检索

嵌入模型通常用于检索增强生成 (RAG) 流程中,既用于索引数据,也用于后续检索数据。更详细的说明,请参阅 学习选项卡下的 RAG 教程。 下面,看看如何使用我们上面初始化的 embeddings 对象来索引和检索数据。在此示例中,我们将使用演示 MemoryVectorStore 索引和检索一个示例文档。

直接使用

在底层,向量存储和检索器实现会分别调用 embeddings.embedDocument(...) 和 embeddings.embedQuery(...) 来为 fromDocuments 中使用的文本以及检索器的 invoke 操作创建嵌入。 您可以直接调用这些方法来为自己的用例获取嵌入。

嵌入单个文本

您可以使用 embedQuery 嵌入查询用于搜索。这会生成一个特定于查询的向量表示:

嵌入多个文本

您可以使用 embedDocuments 嵌入多个文本用于索引。此方法内部使用的嵌入机制可能(但不一定)与嵌入查询不同:

使用 Azure 托管标识

如果您使用的是 Azure 托管标识,可以这样配置凭据:

使用不同的域名

如果您的实例托管在默认 openai.azure.com 以外的域名下,您需要使用备用的 AZURE_OPENAI_BASE_PATH 环境变量。 例如,以下是连接到域名 https://westeurope.api.microsoft.com/openai/deployments/{DEPLOYMENT_NAME} 的方法:

自定义头信息

您可以通过传入 configuration 字段来指定自定义头信息:
configuration 字段也接受官方 SDK 接受的其他 ClientOptions 参数。 注意: 特定头信息 api-key 目前无法以这种方式覆盖,它将传递来自 azureOpenAIApiKey 的值。

从 Azure OpenAI SDK 迁移

如果您使用已弃用的 Azure OpenAI SDK 和 @langchain/azure-openai 包,可以按照以下步骤更新代码以使用新的 Azure 集成:
  1. 安装新的 @langchain/openai 包并移除之前的 @langchain/azure-openai 包:
npm
  1. 更新您的导入,使用来自 @langchain/openai 包的新 AzureOpenAIEmbeddings 类:
  2. 更新您的代码,使用新的 AzureOpenAIEmbeddings 类并传递所需参数:
    请注意,构造函数现在需要 azureOpenAIApiInstanceName 参数,而不是 azureOpenAIEndpoint 参数,并添加了 azureOpenAIApiVersion 参数来指定 API 版本。
    • 如果您之前使用的是 Azure 托管标识,现在需要使用构造函数的 azureADTokenProvider 参数,而不是 credentials。更多详情请参阅 Azure 托管标识部分。
    • 如果您之前使用的是环境变量,现在需要设置 AZURE_OPENAI_API_INSTANCE_NAME 环境变量,而不是 AZURE_OPENAI_API_ENDPOINT,并添加 AZURE_OPENAI_API_VERSION 环境变量来指定 API 版本。

API 参考

有关所有 AzureOpenAIEmbeddings 功能和配置的详细文档,请前往 API 参考。