Azure Vision multimodal embeddings skill (preview)

Note

O Pesquisa de IA do Azure está disponível através do portal Azure, APIs REST e SDKs do Azure. Também sustenta o Foundry IQ, a camada de conhecimento gerida que transforma conteúdos empresariais em bases de conhecimento reutilizáveis e conscientes de permissões para agentes no portal Microsoft Foundry.

Important

Funcionalidades, capacidades ou propriedades assinaladas (pré-visualização) não são abrangidas por um acordo de nível de serviço, não são recomendadas para cargas de trabalho em produção e podem mudar ou ser limitadas antes de se tornarem geralmente disponíveis. Os termos de pré-visualização do Pesquisa de IA do Azure aplicam-se a todas as funcionalidades de pré-visualização, sejam independentes ou parte de uma funcionalidade geralmente disponível.

A skill de embeddings multimodais do Azure Vision (pré-visualização) utiliza a API multimodal de embeddings do Azure Vision no Foundry Tools para gerar embeddings para entrada de texto ou imagem.

Para transações que ultrapassem 20 documentos por indexador por dia, esta competência exige que anexe um recurso faturável Microsoft Foundry ao seu conjunto de competências. A execução das competências integradas é cobrada ao preço padrão existente da Foundry Tools. A extração de imagem também é faturável por Pesquisa de IA do Azure.

O recurso Microsoft Foundry é usado apenas para fins de faturação. O processamento de conteúdos ocorre em recursos separados geridos e mantidos pelo Pesquisa de IA do Azure. Os seus dados são processados na Geo onde o seu recurso é implementado.

Regiões suportadas

As regiões suportadas variam consoante a modalidade e a forma como a competência se liga à API de embeddings multimodais do Azure Vision.

Approach Requisito
Assistente de importação de dados
  1. Encontre uma região que suporte embeddings multimodais no Azure Vision.
  2. Verifica se a região suporta enriquecimento por IA em Pesquisa de IA do Azure.
  3. Crie um serviço Pesquisa de IA do Azure e Azure conta multi-serviço de IA na mesma região.
Programático, usando uma ligação baseada em chaves para faturação
  1. Encontre uma região que suporte embeddings multimodais no Azure Vision.
  2. Verifica se a região suporta enriquecimento por IA em Pesquisa de IA do Azure.
  3. Crie um serviço Pesquisa de IA do Azure e um recurso Microsoft Foundry na mesma região.
Programático, usando uma ligação sem chave para faturação Não há necessidade de ter a mesma região. Crie um serviço Pesquisa de IA do Azure e Microsoft recurso Foundry em qualquer região onde cada serviço esteja disponível.

@odata.type

Microsoft.Skills.Vision.VectorizeSkill

Limites de dados

Os limites de entrada para a competência podem ser encontrados na documentação Azure Vision para imagens e texto. Considera usar a habilidade Text Split se precisares de fragmentação de dados para entradas de texto.

As entradas aplicáveis incluem:

  • O tamanho do ficheiro de entrada de imagem deve ser inferior a 20 megabytes (MB). O tamanho da imagem deve ser superior a 10 x 10 píxeis e inferior a 16.000 x 16.000 píxeis.
  • A cadeia de entrada de texto deve ser entre (inclusiva) uma palavra e 70 palavras.

Parâmetros de habilidade

Os parâmetros são distinguíveis de maiúsculas minúsculas.

Entradas Description
modelVersion (Obrigatório) A versão do modelo (2023-04-15) deve ser passada para a API de embeddings multimodais do Azure Vision para gerar embeddings. Os embeddings vetoriais só podem ser comparados e comparados se forem do mesmo tipo de modelo. Imagens vetorizadas por um modelo não serão pesquisáveis através de outro modelo. A mais recente API de Análise de Imagens oferece dois modelos:
  • A 2023-04-15 versão, que suporta pesquisa de texto em várias línguas. O Pesquisa de IA do Azure utiliza esta versão.
  • O modelo legado 2022-04-11 , que suporta apenas inglês.

Entradas de habilidades

As entradas de definição de competências incluem nome, fonte e entradas. A tabela seguinte fornece valores válidos para o nome da entrada. Também podes especificar entradas recursivas. Para mais informações, consulte a referência da API REST e Criar um conjunto de competências.

Entrada Description
text O texto de entrada a ser vetorizado. Se estiveres a usar fragmentação de dados, a fonte pode ser /document/pages/*.
image Tipo complexo. Atualmente só funciona com o campo "/document/normalized_images", produzido pelo indexador de blob Azure quando imageAction está definido para um valor diferente de none.
url O URL para descarregar a imagem a ser vetorizado.
queryString A cadeia de consulta da URL para descarregar a imagem a ser vetorizada. É útil se guardares o 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 quiser vetorizar tanto imagens como texto dentro do mesmo conjunto de competências, inclua duas instâncias desta competência na definição do conjunto de competências, uma para cada tipo de entrada que gostaria de usar.

Resultados em termos de competências

Output Description
vector Array de embedding de saída de floats para o texto de entrada ou imagem.

Definição da amostra

Para introdução de texto, considere uma mancha que tem o seguinte conteúdo:

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

Para entradas de texto, a tua definição de competência pode ser a seguinte:

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

Para a entrada de imagens, uma segunda definição de competência no mesmo conjunto de competências 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",
            "targetName": "image_vector"
        }
    ]
}

Se quiseres vetorizar imagens diretamente da tua fonte de dados de armazenamento de blob em vez de extrair imagens durante a indexação, a definição da tua competência deve especificar uma URL e, talvez, um token SAS dependendo da segurança do armazenamento. Neste cenário, a sua definição de competência pode ser a seguinte:

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

Saída da amostra

Para a entrada dada, é produzida uma saída de embedding vetorizada. A saída é de 1.024 dimensões, que é o número de dimensões suportadas pela API multimodal do Azure Vision.

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

A saída reside na memória. Para enviar esta saída para um campo no índice de pesquisa, deve definir um outputFieldMapping que mapeia a saída vetorizada de embedding (que é um array) para um campo vetorial. Assumindo que a saída da habilidade reside no nó vetorial do documento, e content_vector é o campo no índice de pesquisa, o outputFieldMapping no indexador deverá ser assim:

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

Para mapear embeddings de imagem para o índice, usas projeções de índice. A carga útil para indexProjections pode parecer-se com o seguinte exemplo. image_content_vector é um campo no índice, e está preenchido com o conteúdo encontrado no vetor do normalized_images array.

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

Ver também