Fazer a recuperação de imagem usando inserções multimodais (versão 4.0)

As APIs de inserções multimodais permitem a vetorização de imagens e consultas de texto. Elas convertem imagens em coordenadas em um espaço de vetor multidimensional. Depois, as consultas de texto de entrada também podem ser convertidas em vetores e as imagens podem ser correspondidas ao texto com base na proximidade semântica. Isso permite que o usuário pesquise um conjunto de imagens usando texto, sem precisar usar marcas de imagem ou outros metadados. A proximidade semântica geralmente produz melhores resultados na pesquisa.

A API 2024-02-01 inclui um modelo multilíngue que dá suporte à pesquisa de texto em 102 idiomas. O modelo original somente em inglês ainda está disponível, mas não pode ser combinado com o novo modelo no mesmo índice de pesquisa. Se você vetorizou texto e imagens usando o modelo somente inglês, esses vetores não serão compatíveis com vetores de texto e imagem multilíngues.

Importante

Essas APIs só estão disponíveis em determinadas regiões geográficas. Confira a Disponibilidade de região.

Pré-requisitos

Experimentar inserções multimodais

Você pode experimentar o recurso de inserções multimodais de forma rápida e fácil no navegador usando o Vision Studio.

Importante

A experiência do Vision Studio é limitada a 500 imagens. Para usar um conjunto de imagens maior, crie seu próprio aplicativo de pesquisa usando as APIs neste guia.

Chame a API Vetorizar Imagem

A API retrieval:vectorizeImage permite converter os dados de uma imagem em um vetor. Para chamá-la, faça as seguintes alterações no comando cURL abaixo:

  1. Substitua <endpoint> pelo seu ponto de extremidade do Visão de IA do Azure.
  2. Substitua <subscription-key> pela chave do Visão de IA do Azure.
  3. No corpo da solicitação, defina "url" como a URL de uma imagem remota que você deseja usar.
  4. Opcionalmente, altere o parâmetro model-version para uma versão mais antiga. 2022-04-11 é o modelo herdado que dá suporte apenas ao texto em inglês. As imagens e o texto que são vetorizados com um determinado modelo não são compatíveis com outros modelos, portanto, use o mesmo modelo para ambos.
curl.exe -v -X POST "<endpoint>/computervision/retrieval:vectorizeImage?api-version=2024-02-01&model-version=2023-04-15" -H "Content-Type: application/json" -H "Ocp-Apim-Subscription-Key: <subscription-key>" --data-ascii "
{
'url':'https://video2.skills-academy.com/azure/ai-services/computer-vision/media/quickstarts/presentation.png'
}"

Para vetorizar uma imagem local, coloque os dados binários no corpo da solicitação HTTP.

A chamada à API retorna um objeto JSON vetor, que define as coordenadas da imagem no espaço vetor de alta dimensão.

{ 
  "modelVersion": "2022-04-11", 
  "vector": [ -0.09442752, -0.00067171326, -0.010985051, ... ] 
}

Chame a API Vetorizar Texto

A API retrieval:vectorizeText permite converter uma cadeia de caracteres de texto em um vetor. Para chamá-la, faça as seguintes alterações no comando cURL abaixo:

  1. Substitua <endpoint> pelo seu ponto de extremidade do Visão de IA do Azure.
  2. Substitua <subscription-key> pela chave do Visão de IA do Azure.
  3. No corpo da solicitação, defina "text" como o termo de pesquisa de exemplo que você deseja usar.
  4. Opcionalmente, altere o parâmetro model-version para uma versão mais antiga. 2022-04-11 é o modelo herdado que dá suporte apenas ao texto em inglês. As imagens e o texto que são vetorizados com um determinado modelo não são compatíveis com outros modelos, portanto, use o mesmo modelo para ambos.
curl.exe -v -X POST "<endpoint>/computervision/retrieval:vectorizeText?api-version=2024-02-01&model-version=2023-04-15" -H "Content-Type: application/json" -H "Ocp-Apim-Subscription-Key: <subscription-key>" --data-ascii "
{
'text':'cat jumping'
}"

A chamada à API retorna um objeto JSON vetor, que define as coordenadas da cadeia de caracteres de texto no espaço vetor de alta dimensão.

{ 
  "modelVersion": "2022-04-11", 
  "vector": [ -0.09442752, -0.00067171326, -0.010985051, ... ] 
}

Calcular a similaridade do vetor

A similaridade cosseno é um método para medir a similaridade de dois vetores. Em um cenário de Recuperação de Imagem, você comparará o vetor de consulta de pesquisa com o vetor de cada imagem. As imagens que estão acima de um determinado limite de similaridade podem ser retornadas como resultados da pesquisa.

O código de exemplo a seguir calcula a similaridade de cosseno entre dois vetores. Cabe a você decidir qual limite de similaridade usar para retornar imagens como resultados da pesquisa.

public static float GetCosineSimilarity(float[] vector1, float[] vector2)
{ 
    float dotProduct = 0; 
    int length = Math.Min(vector1.Length, vector2.Length); 
    for (int i = 0; i < length; i++) 
    { 
        dotProduct += vector1[i] * vector2[i]; 
    } 
    float magnitude1 = Math.Sqrt(vector1.Select(x => x * x).Sum());
    float magnitude2 = Math.Sqrt(vector2.Select(x => x * x).Sum());
    
    return dotProduct / (magnitude1 * magnitude2);
}

Próxima etapa