Compartir a través de

Azure AI 视觉多模态嵌入技能

重要

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

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

只有位于支持 Azure AI 视觉多模态嵌入 API 的区域的搜索服务才支持该技能。 目前是中国东部、法国中部、韩国中部、中国北部、中国东部、中国北部和中国北部。

注意

此技能绑定到 Azure AI 服务,并且对于每天每个索引器超过 20 个文档的事务,需要使用可计费资源。 执行内置技能将按现有的 Azure AI 服务标准预付费套餐价格收费。

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

@odata.type

Microsoft.Skills.Vision.VectorizeSkill

数据限制

如果需要对文本输入进行数据分块,请考虑使用文本拆分技能

技能参数

参数区分大小写。

输入 说明
modelVersion (必需)要传递给 Azure AI 视觉多模态嵌入 API 以生成嵌入的模型版本。 请务必使用相同的 modelVersion 生成存储在给定索引字段中的所有嵌入内容。

技能输入

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

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

技能输出

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

示例定义

对于文本输入,考虑具有以下字段的记录:

{
    "content": "Microsoft released Windows 10."
}

然后,技能定义可能会如下所示:

{ 
    "@odata.type": "#Microsoft.Skills.Vision.VectorizeSkill", 
    "context": "/document", 
    "modelVersion": "2023-04-15", 
    "inputs": [ 
        { 
            "name": "text", 
            "source": "/document/content" 
        } 
    ], 
    "outputs": [ 
        { 
            "name": "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"
        }
    ]
}

如果要直接从 blob 存储数据源矢量化图像,技能定义可能如下所示:

{
    "@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"
        }
    ]
}

示例输出

对于给定的输入文本,将生成矢量化嵌入输出。

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

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

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

若要将图像嵌入映射到索引,需要使用索引投影功能。 indexProjections 的有效负载可能如下所示:

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

另请参阅