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

Azure AI 视觉多模态嵌入技能

重要

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

Azure AI 视觉多模态嵌入技能使用 Azure AI 视觉的多模态嵌入 API 为图像或文本输入生成嵌入。

对于每天超过 20 个文档的事务,此技能必须 附加到计费的 Azure AI 多服务资源 。 执行内置技能按现有的 Azure AI 服务标准价格收费。

此外,图像提取可由 Azure AI 搜索进行计费

资源的位置是一个重要考虑因素。 由于使用预览 API 版本创建包含预览技能的技能集,因此可以选择 无键连接,从而放宽区域要求。 但是,如果要使用 API 密钥进行连接,则 Azure AI 搜索和 Azure AI 多服务必须位于同一区域。

Azure AI 多服务资源仅用于计费目的。 内容处理发生在同一地理位置的 Azure AI 搜索管理和维护的单独资源上。 数据在部署资源的 地理位置 中进行处理。

@odata.type

Microsoft.Skills.Vision.VectorizeSkill

数据限制

可以在 Azure AI 视觉文档中 分别找到图像和文本的技能输入限制。 如果需要对文本输入进行数据分块,请考虑使用文本拆分技能

适用的输入包括:

  • 图像输入文件大小必须小于 20 兆字节(MB)。 图像大小必须大于 10 x 10 像素,并且小于 16,000 x 16,000 像素。
  • 文本输入字符串必须介于一个单词和 70 个单词之间。

技能参数

参数区分大小写。

输入 说明
modelVersion (必需)要传递给 Azure AI 视觉多模式嵌入 API 的模型版本(2023-04-15),用于生成嵌入。 仅当矢量嵌入来自同一模型类型时,才能进行比较和匹配。 由一个模型矢量化的图像无法通过不同的模型进行搜索。 最新的图像分析 API 提供两个模型, 2023-04-15 版本支持多种语言的文本搜索,以及仅支持英语的旧 2022-04-11 模型。 Azure AI 搜索使用较新版本。

技能输入

技能定义输入包括名称、源和输入。 下表提供输入名称的有效值。 还可以指定递归输入。 有关详细信息,请参阅 REST API 参考创建技能集

输入 说明
text 要矢量化的输入文本。 如果使用数据分块,则源可能是 /document/pages/*
image 复杂类型。 当前仅适用于“/document/normalized_images”字段,当 imageAction 设置为非 none 值时由 Azure Blob 索引器生成。
url 下载要矢量化的图像的 URL。
queryString 下载要矢量化的图像的 URL 的查询字符串。 如果将 URL 和 SAS 令牌存储在不同的路径中,则很有用。

只能为技能的单个实例配置 textimageurl/queryString 之一。 如果想在同一个技能组中同时矢量化图像和文本,请在技能组定义中包含该技能的两个实例,每个实例对应你想要使用的一种输入类型。

技能输出

输出 说明
vector 输出输入文本或图像的浮点嵌入数组。

示例定义

对于文本输入,请考虑具有以下内容的 Blob:

{
    "content": "Forests, grasslands, deserts, and mountains are all part of the Patagonian landscape that spans more than a million square  kilometers of South America."
}

对于文本输入,技能定义可能如下所示:

{ 
    "@odata.type": "#Microsoft.Skills.Vision.VectorizeSkill", 
    "context": "/document", 
    "modelVersion": "2023-04-15", 
    "inputs": [ 
        { 
            "name": "text", 
            "source": "/document/content" 
        } 
    ], 
    "outputs": [ 
        { 
            "name": "vector",
            "targetName": "text_vector"
        } 
    ] 
} 

对于图像输入,同一技能集中的第二个技能定义可能如下所示:

{
    "@odata.type": "#Microsoft.Skills.Vision.VectorizeSkill",
    "context": "/document/normalized_images/*",
    "modelVersion": "2023-04-15", 
    "inputs": [
        {
            "name": "image",
            "source": "/document/normalized_images/*"
        }
    ],
    "outputs": [
        {
            "name": "vector",
            "targetName": "image_vector"
        }
    ]
}

如果想要直接从 Blob 存储数据源向量图像,而不是在编制索引期间提取图像,技能定义应指定 URL,并且可能需要根据存储安全性指定 SAS 令牌。 对于此方案,技能定义可能如下所示:

{
    "@odata.type": "#Microsoft.Skills.Vision.VectorizeSkill",
    "context": "/document",
    "modelVersion": "2023-04-15", 
    "inputs": [
        {
            "name": "url",
            "source": "/document/metadata_storage_path"
        },
        {
            "name": "queryString",
            "source": "/document/metadata_storage_sas_token"
        }
    ],
    "outputs": [
        {
            "name": "vector",
            "targetName": "image_vector"
        }
    ]
}

示例输出

对于给定的输入,将生成矢量化嵌入输出。 输出为 1,024 个维度,这是 Azure AI 视觉多模式 API 支持的维度数。

{
  "text_vector": [
        0.018990106880664825,
        -0.0073809814639389515,
        .... 
        0.021276434883475304,
      ]
}

输出驻留在内存中。 若要将此输出发送到搜索索引中的字段,必须定义一个 outputFieldMapping,用于将矢量化的嵌入输出(即数组)映射到一个矢量字段。 假设技能输出驻留在文档的 矢量 节点中, 并且content_vector 是搜索索引中的字段,则索引器中的 outputFieldMapping 应如下所示:

  "outputFieldMappings": [
    {
      "sourceFieldName": "/document/vector/*",
      "targetFieldName": "content_vector"
    }
  ]

若要将图像嵌入映射到索引,请使用 索引投影。 其有效负载 indexProjections 可能类似于以下示例。 image_content_vector是索引中的字段,它填充了normalized_images数组向量中找到的内容。

"indexProjections": {
    "selectors": [
        {
            "targetIndexName": "myTargetIndex",
            "parentKeyFieldName": "ParentKey",
            "sourceContext": "/document/normalized_images/*",
            "mappings": [
                {
                    "name": "image_content_vector",
                    "source": "/document/normalized_images/*/vector"
                }
            ]
        }
    ]
}

另请参阅