你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

教程:在 Azure AI 搜索中选择经典 RAG 的嵌入和聊天模型

基于 Azure AI 搜索构建的 RAG 解决方案依赖于嵌入模型进行向量化,并依赖于对话完成模型对数据进行会话搜索。

注意

现在建议对 RAG 工作流进行 代理检索 ,但经典 RAG 更简单。 如果它满足应用程序要求,它仍然是一个不错的选择。

本教程介绍以下操作:

  • 了解内置向量化支持的 Azure 模型
  • 了解 Azure 支持的聊天完成模型
  • 部署模型并收集代码的模型信息
  • 配置对 Azure 模型的搜索引擎访问权限
  • 了解用于附加非 Azure 模型的自定义技能和向量器

如果没有 Azure 订阅,请在开始之前创建一个免费帐户

Prerequisites

  • Azure 门户用于在 Azure 云中部署模型和配置角色分配。

  • 创建角色分配所需的 Azure 订阅上的“所有者”或“用户访问管理员”角色。 本教程至少使用三个 Azure 资源。 使用 Microsoft Entra ID 对连接进行身份验证,这需要能够创建角色。 本文介绍了用于连接到模型的角色分配。 如果无法创建角色,则可以改用 API 密钥

  • 模型提供程序,例如 Azure OpenAI、通过 Azure AI 服务多服务资源的 Azure AI 视觉,或 Azure AI Foundry。 对于 Azure AI 视觉,请确保多服务资源与 Azure AI 搜索Azure AI 视觉多模式 API 位于同一区域。

    本教程使用 Azure OpenAI。 列出了其他提供程序,以便了解集成向量化的选项。

  • Azure AI 搜索(基础层级或更高)提供了托管标识,用于角色分配。

查看支持内置矢量化的模型

矢量化内容改进了 RAG 解决方案中的查询结果。 Azure AI 搜索支持索引管道中的内置矢量化操作。 它还支持在查询时矢量化,将文本或图像输入转换为嵌入内容进行矢量搜索。 在此步骤中,标识适用于内容和查询的嵌入模型。 如果要提供原始矢量数据和原始矢量查询,或者 RAG 解决方案不包含矢量数据,请跳过此步骤。

包含文本到向量转换步骤的向量查询必须使用索引期间使用的相同嵌入模型。 如果使用不同的模型,搜索引擎不会引发错误,但结果不佳。

为满足同模型要求,请选择能够在索引期间通过技能引用,并在查询执行期间通过向量化器引用的嵌入模型。 下表列出了技能和向量化器对。 查看如何使用嵌入模型,跳到为调用嵌入技能和匹配矢量器的代码“创建索引管道”。

Azure AI 搜索为 Azure 云中的以下嵌入模型提供技能和矢量化支持。

Client 嵌入模型 技能 矢量化器
Azure OpenAI text-embedding-ada-002
text-embedding-3-large
text-embedding-3-small
AzureOpenAIEmbedding AzureOpenAIEmbedding
Azure AI 视觉 多模态 4.0 1 AzureAIVision AzureAIVision
Azure AI Foundry 模型目录 Facebook-DinoV2-Image-Embeddings-ViT-Base
Facebook-DinoV2-Image-Embeddings-ViT-Giant
Cohere-embed-v3-english
Cohere-embed-v3-multilingual
Cohere-embed-v4 1, 2
AML3 Azure AI Foundry 模型目录

1 支持文本和图像矢量化。

2 目前,只能通过 embed-v-4-0Azure AI Foundry 模型目录向量程序(而不是通过 Azure 门户)以编程方式指定。 但是,以后可以使用门户网站管理技能集或向量化器。

3 模型目录中的已部署模型通过 AML 终结点进行访问。 我们将现有 AML 技能用于此连接。

除了此处列出的模型之外,还可以使用其他模型。 有关详细信息,请参阅本文中的使用非 Azure 模型嵌入

注意

嵌入模型的输入通常是分块数据。 在 Azure AI 搜索 RAG 模式中,分块在索引器管道中处理,本系列中另一个教程涵盖此内容。

在查询时查看用于生成 AI 的模型

Azure AI 搜索没有聊天模型的集成代码,因此应选择熟悉且满足要求的 LLM。 可以修改查询代码以尝试不同的模型,而无需重新生成索引或重新运行索引管道的任何部分。 查看搜索并为调用聊天模型的代码生成答案

以下模型通常用于聊天搜索体验:

Client 聊天模型
Azure OpenAI
GPT-4,
GPT-4o,
GPT-4.1。
GPT-5

GPT-4 和 GPT-5 模型经过专门优化,以便处理对话格式的输入。

在本教程中,我们使用 GPT-4o。

部署模型并收集信息

必须通过终结点部署和访问模型。 嵌入相关的技能和向量器都需要维度数和模型名称。

本教程系列使用以下模型和模型提供程序:

  • 用于嵌入的 Azure OpenAI 上的 Text-embedding-3-large
  • 用于聊天补全的 Azure OpenAI 上的 GPT-4o

必须具有认知服务 OpenAI 参与者或更高版本才能在 Azure OpenAI 中部署模型。

  1. 登录 Azure AI Foundry 门户

  2. 在左窗格中,选择 “模型”目录

  3. 选择“text-embedding-3-large”,然后选择“使用此模型”

  4. 指定部署名称。 我们推荐 text-embedding-3-large

  5. 接受默认值。

  6. 选择“部署”。

  7. 对 gpt-4o 重复前面的步骤

  8. 记下模型名称和终结点。 嵌入技能和矢量化器在内部组装完整的终结点,因此只需要资源 URI。 例如,给定 https://MY-FAKE-ACCOUNT.openai.azure.com/openai/deployments/text-embedding-3-large/embeddings?api-version=2024-06-01,应在技能和向量器定义中提供的终结点为 https://MY-FAKE-ACCOUNT.openai.azure.com

配置对 Azure 模型的搜索引擎访问权限

对于管道和查询执行,本教程使用 Microsoft Entra ID 进行身份验证和角色进行授权。

在 Azure OpenAI 上,为自己分配搜索服务标识权限。 本教程的代码在本地运行。 对 Azure OpenAI 的请求源自你的系统。 此外,搜索引擎的搜索结果将传递到 Azure OpenAI。 由于这些原因,你和搜索服务都需要拥有 Azure OpenAI 的权限。

  1. 登录到 Azure 门户查找你的搜索服务

  2. 将 Azure AI 搜索配置为使用系统托管标识

  3. 查找 Azure OpenAI 资源。

  4. 在左侧菜单,选择“访问控制 (IAM)”

  5. 选择“添加角色分配”

  6. 选择认知服务 OpenAI 用户

  7. 选择“托管标识”,然后选择“成员”。 在下拉列表中找到搜索服务的系统托管标识。

  8. 接下来,选择“用户、组或服务主体”,然后选择“成员”。 搜索用户帐户并从下拉列表中选择。

  9. 请确保为该角色分配了两个安全主体。

  10. 选择“查看和分配”,创建角色分配。

若要访问 Azure AI 视觉上的模型,请分配认知服务 OpenAI 用户。 对于 Azure AI Foundry,请分配 Azure AI 开发人员

使用非 Azure 模型进行嵌入

集成任何嵌入模型的模式是将其包装在自定义技能和自定义矢量化器中。 本部分提供参考文章链接。 有关调用非 Azure 模型的代码示例,请参阅自定义嵌入演示

Client 嵌入模型 技能 矢量化器
Any Any 自定义技能 自定义矢量器

后续步骤