你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
注意
Azure AI 搜索可通过Azure门户、REST API 和Azure SDK获取。 它也是 Foundry IQ 的基础;Foundry IQ 是一个托管式知识层,可将企业内容转化为供 Microsoft Foundry 门户中的智能体使用的、可复用且具备权限感知能力的知识库。
重要
标记为“预览”的特性、功能或属性不受服务级别协议 (SLA) 保障,不建议用于生产工作负载,并且在正式发布之前可能会更改或受到限制。 Azure AI 搜索预览条款适用于所有预览功能,无论是独立功能还是正式版功能的一部分。
本文介绍如何在索引编制和Azure AI 搜索查询执行期间使用 Microsoft Foundry 模型目录模型进行集成向量化(预览)。
该工作流要求你从目录中部署模型,其中包括来自 Microsoft 和其他公司的嵌入模型。 根据每个提供商的计费结构,部署模型是可计费的。
部署模型后,可以将它与 AML 技能一起使用,以便在索引编制期间集成向量化,也可以与 Microsoft Foundry 模型目录向量器配合使用进行查询。
提示
使用 导入数据 向导 生成技能集,其中包含用于在 Foundry 上部署嵌入模型的 AML 技能。 向导会生成用于输入、输出和映射的 AML 技能定义,这样就可以在编写任何代码之前轻松测试模型。
先决条件
位于任何区域且采用任何定价层的 Azure AI 搜索服务。
支持的嵌入模型
模型目录中支持的嵌入模型因使用方法而异:
有关以编程方式支持的最新模型列表,请参阅 AML 技能和 Microsoft Foundry 模型目录矢量化工具参考。
有关Azure门户中支持的最新模型列表,请参阅 Quickstart:Azure 门户中的矢量搜索和 Quickstart:Azure 门户中的多模式搜索。
从模型目录部署嵌入模型
按照 这些门户说明 将受支持的模型部署到项目。
记下目标 URI、密钥和模型名称。 对于搜索索引中的矢量化器定义,以及在索引过程中调用模型终结点的技能集,需要这些值。
如果首选 令牌身份验证 而不是基于密钥的身份验证,则只需复制模型名称。 但是,请记下模型部署到的区域。
配置搜索索引和索引器以使用已部署的模型。
若要在编制索引期间使用模型,请参阅 如何使用集成向量化。 请确保使用 AML 技能,而不是 Azure OpenAI 嵌入技能。 下一部分介绍技能配置。
若要在查询时将模型用作向量器,请参阅 “配置向量器”。 请务必对此步骤使用 Microsoft Foundry 模型目录向量器。
将嵌入模型部署为无服务器部署
AML 技能和 Microsoft Foundry 模型目录矢量化工具仅接受 Cohere 嵌入模型的无服务器部署。 这些模型不支持通过 Microsoft Foundry 门户进行无服务器部署,因此请使用Azure CLI来创建部署。 有关详细信息,请参阅 无服务器 API 部署中的模型部署。
若要创建 Cohere 无服务器部署,请执行以下操作:
使用
ml扩展安装Azure CLI。az extension add -n ml登录到Azure并设置默认值。
az login az account set --subscription <subscription-id> az configure --defaults workspace=<project-name> group=<resource-group>创建一个
subscribe.yaml文件以订阅模型的市场服务。name: cohere-embed-v3-english-subscription model_id: azureml://registries/azureml-cohere/models/Cohere-embed-v3-english对于其他受支持的模型,请将模型 ID 替换为以下值之一。
模型 模型 ID Cohere-embed-v3-english azureml://registries/azureml-cohere/models/Cohere-embed-v3-englishCohere-embed-v3-多语言 azureml://registries/azureml-cohere/models/Cohere-embed-v3-multilingualCohere-embed-v4 azureml://registries/azureml-cohere/models/Cohere-embed-v4运行以下命令以创建订阅。
az ml marketplace-subscription create --file subscribe.yaml创建文件
endpoint.yaml以创建无服务器终结点。name: cohere-embed-v3-english-endpoint model_id: azureml://registries/azureml-cohere/models/Cohere-embed-v3-english运行以下命令以创建终结点。
az ml serverless-endpoint create --file endpoint.yaml对于基于密钥的身份验证,获取终结点 URI 和密钥,用于技能或矢量转换器。
az ml serverless-endpoint show --name cohere-embed-v3-english-endpoint --query "scoring_uri" az ml serverless-endpoint get-credentials --name cohere-embed-v3-english-endpoint
示例 AML 技能有效负载
从模型目录部署嵌入模型时,可在 Azure AI 搜索中使用 AML 技能连接这些模型,以执行索引工作负荷。
本部分介绍 AML 技能定义和索引映射。 它包含一个已经配置好的示例负载,可以与其相应的已部署端点一起使用。 有关详细信息,请参阅 技能上下文和输入注释语言。
Cohere 嵌入模型
此 AML 技能有效负载适用于以下嵌入模型:
- Cohere-embed-v3-english
- Cohere-embed-v3-多语言
- Cohere-embed-v4
它假定你正在使用文本拆分技能对内容进行分块,因此要矢量化的文本位于路径中 /document/pages/* 。 如果文本来自其他路径,请相应地更新对 /document/pages/* 路径的所有引用。
您必须将 /v1/embed 路径添加到从 Foundry 部署中复制的 URL 的末尾。 还可以更改input_type、truncate的值和embedding_types的输入,以更好地适应用例。 有关可用选项的详细信息,请查看 Cohere 嵌入 API 参考。
从目录部署模型时,会生成 URI 和密钥。 有关这些值的详细信息,请参阅 如何使用 Foundry 部署 Cohere Embed 模型。
{
"@odata.type": "#Microsoft.Skills.Custom.AmlSkill",
"context": "/document/pages/*",
"uri": "https://cohere-embed-v3-multilingual-hin.eastus.models.ai.azure.com/v1/embed",
"key": "aaaaaaaa-0b0b-1c1c-2d2d-333333333333",
"inputs": [
{
"name": "texts",
"source": "=[$(/document/pages/*)]"
},
{
"name": "input_type",
"source": "='search_document'"
},
{
"name": "truncate",
"source": "='NONE'"
},
{
"name": "embedding_types",
"source": "=['float']"
}
],
"outputs": [
{
"name": "embeddings",
"targetName": "aml_vector_data"
}
]
}
此外,Cohere 模型的输出不是直接嵌入数组,而是包含它的 JSON 对象。 在通过 indexProjections 或 outputFieldMappings 将其映射到索引定义时,需要相应选择它。 下面是一个 indexProjections 有效负载示例,可用于实现此映射。
在技能定义中,如果选择了其他embedding_types,请将float路径中的source更改为您选择的类型。
"indexProjections": {
"selectors": [
{
"targetIndexName": "<YOUR_TARGET_INDEX_NAME_HERE>",
"parentKeyFieldName": "ParentKey", // Change this to the name of the field in your index definition where the parent key will be stored
"sourceContext": "/document/pages/*",
"mappings": [
{
"name": "aml_vector", // Change this to the name of the field in your index definition where the Cohere embedding will be stored
"source": "/document/pages/*/aml_vector_data/float/0"
}
]
}
],
"parameters": {}
}
示例向量化器有效负载
Microsoft Foundry 模型目录向量器与 AML 技能不同,专为仅处理可通过模型目录部署的嵌入模型而定制。 主要区别在于,不用担心请求和响应的数据负载。 但是,必须提供 modelName,它对应于你在部署模型后复制的“模型 ID”。
以下是一个示例有效负载,演示如何在给定从 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 技能和 Microsoft Foundry 模型目录矢量化工具连接配置为令牌身份验证。
搜索服务必须具有 系统或用户分配的托管标识,并且该标识必须具有项目的 所有者 或 参与者 权限。 然后,可以从技能定义和向量器定义中删除 key 字段,并将其替换为 resourceId。 如果项目和搜索服务位于不同的区域,则还提供字段 region 。
"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": "westus", // Only needed if project is in different region from search service
注意
此集成目前不支持 Cohere 模型的令牌身份验证。 必须使用基于密钥的身份验证。