使用 Azure AI Foundry 模型目录中的嵌入模型进行集成矢量化
重要
根据补充使用条款,此功能以公共预览版提供。 2024-05-01-Preview REST API 支持此功能。
本文介绍如何在 Azure AI 搜索中的索引编制期间和查询中访问 Azure AI Studio 模型目录中的嵌入模型以进行矢量转换。
工作流包括模型部署步骤。 该模型目录包括来自 Azure 和其他公司的嵌入模型。 部署模型按每个提供商的计费结构计费。
部署模型后,可以在索引期间将其用于集成矢量化,也可以与 AI Studio 矢量器配合使用来进行查询。
从 Azure AI Foundry 模型目录部署嵌入模型
打开 Azure AI Foundry 模型目录。 如果还没有项目,请创建一个。
应用筛选器,以便仅显示嵌入模型。 在“推理任务”下,选择“嵌入”:
选择一个受支持的模型,然后选择“部署”。
根据需要接受默认值或修改,然后选择“部署”。 部署详细信息因所选模型而异。
通过监视“预配状态”,等待模型完成部署。 该状态应从“正在预配”更改为“正在更新”,再更改为“成功”。 可能需要每隔几分钟选择“刷新”才能查看状态更新。
记下目标 URI、密钥和模型名称。 你需要将这些值用于搜索索引中的矢量器定义,以及用于在索引期间调用模型终结点的技能集。
(可选)可以更改终结点以使用令牌身份验证,而不是密钥身份验证。 如果启用令牌身份验证,则只需复制 URI 和模型名称,并记下部署模型的区域。
现在可以配置搜索索引和索引器来使用已部署的模型。
若要在编制索引期间使用模型,请参阅启用集成矢量化的步骤。 请务必使用 Azure 机器学习 (AML) 技能,而不是 AzureOpenAIEmbedding 技能。 下一部分介绍技能配置。
若要在查询时将模型用作矢量器,请参阅配置矢量器。 请务必对此步骤使用 Azure AI Foundry 模型目录矢量器。
示例 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