使用 Azure AI Foundry 模型目录中的嵌入模型进行集成矢量化

重要

根据补充使用条款,此功能以公共预览版提供。 2024-05-01-Preview REST API 支持此功能。

本文介绍如何在 Azure AI 搜索中的索引编制期间和查询中访问 Azure AI Studio 模型目录中的嵌入模型以进行矢量转换。

工作流包括模型部署步骤。 该模型目录包括来自 Azure 和其他公司的嵌入模型。 部署模型按每个提供商的计费结构计费。

部署模型后,可以在索引期间将其用于集成矢量化,也可以与 AI Studio 矢量器配合使用来进行查询。

从 Azure AI Foundry 模型目录部署嵌入模型

  1. 打开 Azure AI Foundry 模型目录。 如果还没有项目,请创建一个。

  2. 应用筛选器,以便仅显示嵌入模型。 在“推理任务”下,选择“嵌入”

    Azure AI Foundry 模型目录页的屏幕截图,其中突出显示了如何按嵌入模型进行筛选。

  3. 选择一个受支持的模型,然后选择“部署”。

    通过 Azure AI Foundry 模型目录部署终结点的屏幕截图。

  4. 根据需要接受默认值或修改,然后选择“部署”。 部署详细信息因所选模型而异。

  5. 通过监视“预配状态”,等待模型完成部署。 该状态应从“正在预配”更改为“正在更新”,再更改为“成功”。 可能需要每隔几分钟选择“刷新”才能查看状态更新

  6. 记下目标 URI、密钥和模型名称。 你需要将这些值用于搜索索引中的矢量器定义,以及用于在索引期间调用模型终结点的技能集。

    (可选)可以更改终结点以使用令牌身份验证,而不是密钥身份验证。 如果启用令牌身份验证,则只需复制 URI 和模型名称,并记下部署模型的区域。

    AI Foundry 门户中已部署终结点的屏幕截图,其中突出显示了要复制和保存以供后续使用的字段。

  7. 现在可以配置搜索索引和索引器来使用已部署的模型。

示例 AML 技能有效负载

Azure AI Foundry 模型目录部署嵌入模型时,会使用 Azure AI 搜索中的 AML 技能连接到它们,以对工作负载编制索引。

本部分介绍 AML 技能定义和索引映射。 其中包括已配置为使用其相应部署终结点的示例有效负载。 有关这些有效负载工作原理的更多技术详细信息,请阅读技能上下文和输入注释语言

此 AML 技能有效负载适用于 AI Foundry 中的以下模型:

  • OpenAI-CLIP-Image-Text-Embeddings-vit-base-patch32
  • OpenAI-CLIP-Image-Text-Embeddings-ViT-Large-Patch14-336

它假定你的图像来自通过启用内置图像提取创建的 /document/normalized_images/* 路径。 如果图像来自其他路径或存储为 URL,请相应地更新对 /document/normalized_images/* 路径的所有引用。

从目录部署模型时,便会生成 URI 和密钥。 有关这些值的详细信息,请参阅如何使用 Azure AI Foundry 部署大型语言模型

{
  "@odata.type": "#Microsoft.Skills.Custom.AmlSkill",
  "context": "/document/normalized_images/*",
  "uri": "<YOUR_MODEL_URL_HERE>",
  "key": "<YOUR_MODEL_HERE>",
  "inputs": [
    {
      "name": "input_data",
      "sourceContext": "/document/normalized_images/*",
      "inputs": [
        {
          "name": "columns",
          "source": "=['image', 'text']"
        },
        {
          "name": "index",
          "source": "=[0]"
        },
        {
          "name": "data",
          "source": "=[[$(/document/normalized_images/*/data), '']]"
        }
      ]
    }
  ],
  "outputs": [
    {
      "name": "image_features"
    }
  ]
}

示例 AI Foundry 矢量器有效负载

与 AML 技能不同,AI Foundry 矢量器经过专门定制,仅适用于可通过 AI Foundry 模型目录部署的嵌入模型。 主要区别在于,你不必担心请求和响应有效负载,但必须提供 modelName,这对应于在 AI Foundry 中部署模型后复制的“模型 ID”。

以下是一个示例有效负载,演示如何在给定从 AI Foundry 复制的属性的情况下在索引定义上配置矢量器。

对于 Cohere 模型,不应像使用技能那样将 /v1/embed 路径添加到 URL 末尾。

"vectorizers": [
    {
        "name": "<YOUR_VECTORIZER_NAME_HERE>",
        "kind": "aml",
        "amlParameters": {
            "uri": "<YOUR_URL_HERE>",
            "key": "<YOUR_PRIMARY_KEY_HERE>",
            "modelName": "<YOUR_MODEL_ID_HERE>"
        },
    }
]

使用令牌身份验证进行连接

如果无法使用基于密钥的身份验证,可改为通过 Azure 上的基于角色的访问控制来配置 AML 技能和 AI Foundry 矢量器连接,以进行令牌身份验证。 搜索服务必须具有系统或用户分配的托管标识,并且该标识必须具有 AML 项目工作区的所有者或参与者权限。 然后,可以从技能定义和矢量器定义中删除键字段,并将其替换为 resourceId 字段。 如果 AML 项目和搜索服务位于不同区域,则还要提供区域字段。

"uri": "<YOUR_URL_HERE>",
"resourceId": "subscriptions/<YOUR_SUBSCRIPTION_ID_HERE>/resourceGroups/<YOUR_RESOURCE_GROUP_NAME_HERE>/providers/Microsoft.MachineLearningServices/workspaces/<YOUR_AML_WORKSPACE_NAME_HERE>/onlineendpoints/<YOUR_AML_ENDPOINT_NAME_HERE>",
"region": "chinanorth", // Only need if AML project lives in different region from search service

后续步骤