Fazer a recuperação de imagens usando incorporações multimodais (versão 4.0)
As APIs de incorporação multimodal permitem a vetorização de imagens e consultas de texto. Eles convertem imagens em coordenadas em um espaço vetorial multidimensional. Em seguida, as consultas de texto recebidas 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 a necessidade de usar tags de imagem ou outros metadados. A proximidade semântica produz frequentemente melhores resultados na pesquisa.
A 2024-02-01
API inclui um modelo multilingue que suporta a pesquisa de texto em 102 idiomas. O modelo original apenas 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 em inglês, esses vetores não serão compatíveis com vetores de texto e imagem multilíngues.
Importante
Essas APIs estão disponíveis apenas em determinadas regiões geográficas. Consulte Disponibilidade da região.
Pré-requisitos
- Subscrição do Azure - Criar uma gratuitamente
- Depois de ter sua assinatura do Azure, crie um recurso de Visão Computacional no portal do Azure para obter sua chave e ponto de extremidade. Certifique-se de criá-lo em uma das regiões geográficas suportadas: consulte Disponibilidade da região.
- Depois de implantar, selecione Ir para recurso. Copie a chave e o ponto de extremidade para um local temporário para usar mais tarde.
Experimente as incorporações multimodais
Você pode experimentar o recurso de incorporação multimodal de forma rápida e fácil em seu 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 deste guia.
Chamar a API de imagem vetorizada
A retrieval:vectorizeImage
API permite converter os dados de uma imagem em um vetor. Para chamá-lo, faça as seguintes alterações no comando cURL abaixo:
- Substitua
<endpoint>
pelo seu ponto de extremidade do Azure AI Vision. - Substitua
<subscription-key>
pela chave do Azure AI Vision. - No corpo da solicitação, defina
"url"
como a URL de uma imagem remota que você deseja usar. - Opcionalmente, altere o
model-version
parâmetro para uma versão mais antiga.2022-04-11
é o modelo legado que suporta apenas texto em inglês. Imagens e texto vetorizados com um determinado modelo não são compatíveis com outros modelos, portanto, certifique-se de usar 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://learn.microsoft.com/azure/ai-services/computer-vision/media/quickstarts/presentation.png'
}"
Para vetorizar uma imagem local, você colocaria os dados binários no corpo da solicitação HTTP.
A chamada de API retorna um objeto JSON vetorial , que define as coordenadas da imagem no espaço vetorial de alta dimensão.
{
"modelVersion": "2022-04-11",
"vector": [ -0.09442752, -0.00067171326, -0.010985051, ... ]
}
Chamar a API de texto vetorizado
A retrieval:vectorizeText
API permite converter uma cadeia de texto em um vetor. Para chamá-lo, faça as seguintes alterações no comando cURL abaixo:
- Substitua
<endpoint>
pelo seu ponto de extremidade do Azure AI Vision. - Substitua
<subscription-key>
pela chave do Azure AI Vision. - No corpo da solicitação, defina
"text"
como o termo de pesquisa de exemplo que você deseja usar. - Opcionalmente, altere o
model-version
parâmetro para uma versão mais antiga.2022-04-11
é o modelo legado que suporta apenas texto em inglês. Imagens e texto vetorizados com um determinado modelo não são compatíveis com outros modelos, portanto, certifique-se de usar 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 de API retorna um objeto JSON vetorial , que define as coordenadas da cadeia de texto no espaço vetorial de alta dimensão.
{
"modelVersion": "2022-04-11",
"vector": [ -0.09442752, -0.00067171326, -0.010985051, ... ]
}
Calcular semelhança vetorial
A similaridade cossena é um método para medir a semelhança 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 semelhança podem ser retornadas como resultados da pesquisa.
O código de exemplo a seguir calcula a semelhança cosseno entre dois vetores. Cabe a você decidir qual limite de semelhança usar para retornar imagens como resultados de 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);
}