Habilidade de incorporações multimodal da Visão de IA do Azure

Importante

Essa habilidade está em visualização pública nos Termos de Uso Complementares. A API REST 2024-05-01-Preview dá suporte a esse recurso.

A habilidade de incorporações multimodal da Visão de IA do Azure usa a API de incorporações multimodais da Visão de IA do Azure para gerar incorporações (embeddings, em inglês) para entradas de imagem ou texto.

A habilidade só tem suporte em serviços de busca localizados em uma região que oferece suporte à API de incorporações multimodais da Visão de IA do Azure. Examine a disponibilidade da região para incorporações multimodais. Seus dados são processados na área geográfica em que o modelo é implantado.

Observação

Essa habilidade está associada aos serviços de IA do Azure e requer um recurso faturável para transações que excedem 20 documentos por indexador por dia. A execução de habilidades internas é cobrada pelo preço pago conforme o uso dos serviços de IA do Azure existentes.

Além disso, a extração de imagens é faturável pelo IA do Azure Search.

@odata.type

Microsoft.Skills.Vision.VectorizeSkill

Limites de dados

Os limites de entrada para a habilidade podem ser encontrados na documentação da Visão de IA do Azure para imagens e textos, respectivamente. Experimente usar a habilidade de Divisão de Texto se precisar usar a técnica de data chunking nas entradas de texto.

Parâmetros de habilidades

Os parâmetros diferenciam maiúsculas de minúsculas.

Entradas Descrição
modelVersion (Obrigatório) A versão do modelo a ser aprovada pela API de incorporações multimodal da Visão de IA do Azure para gerar incorporações. É importante que todas as inserções armazenadas em um determinado campo de índice sejam geradas usando o mesmo modelVersion. Para obter informações sobre o suporte de versão para esse modelo, consulte Incorporações multimodais.

Entradas de habilidades

Entrada Descrição
text O texto de entrada a ser vetorizado. Se estiver utilizando a técnica de data chunking, a fonte pode ser /document/pages/*.
image Tipo complexo. Atualmente só funciona com o campo "/document/normalized_images" produzido pelo indexador de blobs do Azure quando imageAction é definido como um valor diferente de none.
url A URL para baixar a imagem que será vetorizada.
queryString A cadeia de caracteres de consulta da URL para baixar a imagem que será vetorizada. É útil se você armazenar a URL e o token SAS em caminhos separados.

Apenas um dos text, image ou url/queryString pode ser configurado para uma única instância da habilidade. Se você quiser vetorizar imagens e textos no mesmo conjunto de habilidades, inclua duas instâncias dessa habilidade na definição do conjunto de habilidades, uma para cada tipo de entrada que deseja usar.

Saídas de habilidades

Saída Descrição
vector Matriz de saída de incorporações de floats para o texto ou imagem de entrada.

Definição de exemplo

Para entradas de texto, considere usar um registro que contenha os seguintes campos:

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

Assim, sua definição de habilidade pode ser:

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

Para entradas de imagem, a definição da sua habilidade pode ser assim:

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

Se você quiser vetorizar imagens diretamente da fonte de dados do armazenamento de blobs, a definição da sua habilidade pode ser assim:

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

Saída de exemplo

Para o texto de entrada especificado, uma saída de inserção vetorizada é produzida.

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

A saída reside na memória. Para enviar essa saída para um campo no índice de busca, você deve definir um outputFieldMapping que mapeie a saída da incorporação vetorizada (que é uma matriz) para um campo vetorial. Supondo que a saída da habilidade esteja no nó vetorial do documento, e content_vector seja o campo no índice de busca, o outputFieldMapping no indexador deve ser assim:

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

Para mapear incorporações de imagens ao índice, você precisará usar o recurso Projeções de índice. O conteúdo das indexProjections pode ser parecido com isso:

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

Confira também