Partilhar via


Habilidade de incorporações multimodais do Azure AI Vision

Importante

Esta habilidade está em pré-visualização pública em Termos de Uso Suplementares. A API REST 2024-05-01-Preview e as APIs de visualização mais recentes suportam esse recurso.

A habilidade de incorporações multimodais do Azure AI Vision usa a API de incorporações multimodais do Azure AI Vision para gerar incorporações para entrada de imagem ou texto.

Essa habilidade deve ser anexada a um recurso multisserviço faturável do Azure AI para transações que excedam 20 documentos por indexador por dia. A execução de habilidades internas é cobrada pelo preço padrão dos serviços de IA do Azure existentes.

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

A localização dos recursos é uma consideração importante. Como você está usando uma versão da API de visualização para criar um conjunto de habilidades que contém habilidades de visualização, você tem a opção de uma conexão sem chave, que relaxa o requisito de região. No entanto, se você estiver se conectando com uma chave de API, o Azure AI Search e o Azure AI multi-service deverão estar na mesma região.

O recurso multisserviço da IA do Azure é usado apenas para fins de cobrança. O processamento de conteúdo ocorre em recursos separados gerenciados e mantidos pelo Azure AI Search dentro da mesma área geográfica. Seus dados são processados na área geográfica onde seu recurso é implantado.

@odata.type

Microsoft.Skills.Vision.VectorizeSkill

Limites de dados

Os limites de entrada para a habilidade podem ser encontrados na documentação do Azure AI Vision para imagens e texto, respectivamente. Considere usar a habilidade Divisão de texto se precisar de fragmentação de dados para entradas de texto.

Os inputs aplicáveis incluem:

  • O tamanho do arquivo de entrada de imagem deve ser inferior a 20 megabytes (MB). O tamanho da imagem deve ser maior que 10 x 10 pixels e menor que 16.000 x 16.000 pixels.
  • A cadeia de caracteres de entrada de texto deve estar entre (inclusive) uma palavra e 70 palavras.

Parâmetros de habilidade

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

Entradas Descrição
modelVersion (Obrigatório) A versão do modelo (2023-04-15) a ser passada para a API de incorporações multimodais do Azure AI Vision para gerar incorporações. As incorporações vetoriais só podem ser comparadas e combinadas se forem do mesmo tipo de modelo. As imagens vetorizadas por um modelo não serão pesquisáveis através de um modelo diferente. A mais recente API de Análise de Imagem oferece dois modelos, a versão 2023-04-15 que suporta pesquisa de texto em muitos idiomas e o modelo legado 2022-04-11 que suporta apenas o inglês. O Azure AI Search usa a versão mais recente.

Contributos para as competências

As entradas de definição de habilidade incluem nome, fonte e entradas. A tabela a seguir fornece valores válidos para o nome da entrada. Você também pode especificar entradas recursivas. Para obter mais informações, consulte a referência da API REST e Criar um conjunto de habilidades.

Entrada Descrição
text O texto de entrada a ser vetorizado. Se você estiver usando o agrupamento 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 do Azure quando imageAction definido como um valor diferente de none.
url O URL para baixar a imagem a ser vetorizada.
queryString A seqüência de caracteres de consulta da URL para baixar a imagem a ser vetorizada. Útil se você armazenar a URL e o token SAS em caminhos separados.

Apenas um dos textou imageurl/queryString pode ser configurado para uma única instância da habilidade. Se você quiser vetorizar imagens e texto dentro do mesmo conjunto de habilidades, inclua duas instâncias dessa habilidade na definição do conjunto de habilidades, uma para cada tipo de entrada que você gostaria de usar.

Resultados em termos de competências

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

Definição da amostra

Para entrada de texto, considere um blob que tenha 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, sua definição de habilidade pode ter esta aparência:

{ 
    "@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 entrada de imagem, uma segunda definição de habilidade no mesmo conjunto de habilidades pode ter esta aparência:

{
    "@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 você quiser vetorizar imagens diretamente de sua fonte de dados de armazenamento de blob em vez de extrair imagens durante a indexação, sua definição de habilidade deve especificar uma URL e talvez um token SAS, dependendo da segurança do armazenamento. Para esse cenário, sua definição de habilidade pode ter esta aparência:

{
    "@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 de exemplo

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

{
  "text_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 pesquisa, você deve definir um outputFieldMapping que mapeie a saída de incorporação vetorizada (que é uma matriz) para um campo vetorial. Supondo que a saída de habilidade resida no nó vetorial do documento e content_vetor seja o campo no índice de pesquisa, o outputFieldMapping no indexador deve ter a seguinte aparência:

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

Para mapear incorporações de imagem ao índice, use projeções de índice. A carga útil para indexProjections pode ser semelhante ao exemplo a seguir. image_content_vetor é um campo no índice e é preenchido com o conteúdo encontrado no vetor da matriz normalized_images .

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

Consulte também