habilidade de inserções multimodal da visão Azure

Note

Pesquisa de IA do Azure  está disponível por meio do portal Azure, APIs REST e SDKs do Azure. Ele também sustenta o IQ do Foundry, a camada de conhecimento gerenciado que transforma o conteúdo da empresa em bases de conhecimento reutilizáveis e com reconhecimento de permissão para agentes no portal do Microsoft Foundry.

Importante

Esta habilidade está em prévia nos Termos Suplementares de Uso. A versão prévia mais recente do Skillsets – Criar ou Atualizar (API REST) dá suporte a esse recurso.

A habilidade Azure Vision multimodais embeddings utiliza a API multimodal embeddings do Azure Vision no Foundry Tools para gerar embeddings para entrada de texto ou imagem.

Para transações que ultrapassam 20 documentos por indexador por dia, essa habilidade exige que você anexe um recurso faturável Microsoft Foundry ao seu conjunto de habilidades. A execução das habilidades integradas é cobrada pelo 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 faturamento. O processamento de conteúdo ocorre em recursos separados gerenciados e mantidos pelo Pesquisa de IA do Azure . Seus dados são processados na Geo onde seu recurso é implantado.

Regiões com suporte

As regiões suportadas variam conforme a modalidade e como a habilidade se conecta à API de embeddings multimodais do Azure Vision.

Abordagem Requisito
Assistente de importação de dados
  1. Encontre uma região que suporte embeddings multimodais no Azure Vision.
  2. Verifique se a região suporta enriquecimento de 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 conexão baseada em chaves para faturamento
  1. Encontre uma região que suporte embeddings multimodais no Azure Vision.
  2. Verifique se a região suporta enriquecimento de 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 conexão sem chave para faturamento 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 habilidade podem ser encontrados na documentação Azure Vision para imagens e texto. Considere usar a habilidade Text Split se precisar de fragmentação de dados para entradas de texto.

Entradas aplicáveis incluem:

  • O tamanho do arquivo de entrada de imagem deve ser menor que 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 string de entrada de texto deve ter entre (inclusivo) uma palavra e 70 palavras.

Parâmetros de habilidade

Os parâmetros são sensíveis a maiúsculas minúsculas.

Entradas Descrição
modelVersion (Obrigatório) A versão do modelo (2023-04-15) será passada para a API de embeddings multimodais do Azure Vision para gerar embeddings. 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 por outro modelo. A API de Análise de Imagens mais recente oferece dois modelos:
  • A 2023-04-15 versão suporta busca de texto em muitos idiomas. Pesquisa de IA do Azure  utiliza esta versão.
  • O modelo legado 2022-04-11 , que suporta apenas inglês.

Entradas de competências

As entradas de definição de habilidades 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 mais informações, veja 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ê está usando 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 A URL para baixar a imagem será vetorizada.
queryString A string de consulta da URL para baixar a imagem 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 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 de competências

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

Definição de exemplo

Para entrada de texto, considere uma mancha que possui 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 ser assim:

{ 
    "@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 imagem, uma segunda definição de habilidade no mesmo conjunto de habilidades 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 você quiser vetorizar imagens diretamente da sua fonte de dados de armazenamento de blobs, 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 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 de exemplo

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 essa saída para um campo no índice de busca, você 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 busca, o outputFieldMapping no indexador deve ser assim:

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

Para mapear embeddings de imagem ao índice, você usa projeções de índice. A carga útil para indexProjections pode se parecer com o exemplo a seguir. image_content_vector é um campo no índice, e ele é 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"
                }
            ]
        }
    ]
}

Consulte também