Partager via


Effectuer de la récupération d’images à l’aide des incorporations multimodales (version 4.0)

Les API d’incorporations multimodales permettent la vectorisation des images et des requêtes de texte. Elles convertissent les images en coordonnées dans un espace vectoriel multidimensionnel. Ensuite, les requêtes de texte entrantes peuvent également être converties en vecteurs, et les images peuvent être mises en correspondance avec le texte en fonction de la proximité sémantique. Cela permet à l’utilisateur de rechercher un ensemble d’images à l’aide de texte, sans avoir besoin d’utiliser des balises d’image ou autres métadonnées. La proximité sémantique produit souvent de meilleurs résultats dans la recherche.

L’API 2024-02-01 inclut un modèle multilingue qui prend en charge la recherche de texte dans 102 langues. Le modèle anglais-uniquement d’origine est toujours disponible, mais il ne peut pas être combiné avec le nouveau modèle dans le même index de recherche. Si vous avez vectorisé du texte et des images à l’aide du modèle anglais-uniquement, ces vecteurs ne seront pas compatibles avec les vecteurs de texte et d’image multilingues.

Important

Ces API sont uniquement disponibles dans certaines régions géographiques. Consultez Disponibilité dans les régions.

Prérequis

  • Abonnement Azure - En créer un gratuitement
  • Une fois que vous avez votre abonnement Azure, créez une ressource Vision par ordinateur dans le portail Azure pour obtenir votre clé et votre point de terminaison. Veillez à la créer dans l’une des régions géographiques prises en charge : consultez Disponibilité des régions.
    • À la fin du déploiement, sélectionnez Accéder à la ressource. Copiez la clé et le point de terminaison dans un emplacement temporaire afin de pouvoir l’utiliser ultérieurement.

Tester les incorporations multimodales

Vous pouvez tester rapidement et facilement la fonctionnalité des incorporations multimodales dans votre navigateur à l’aide de Vision Studio.

Important

L’expérience Vision Studio est limitée à 500 images. Pour utiliser un jeu plus volumineux d’images, créez votre propre application de recherche avec les API de ce guide.

Appeler l’API Vectorisation d’images

L’API retrieval:vectorizeImage vous permet de convertir les données d’une image en vecteur. Pour l’appeler, apportez les modifications suivantes à la commande cURL ci-dessous :

  1. Remplacez <endpoint> par votre point de terminaison Azure AI Vision.
  2. Remplacez <subscription-key> par votre clé Azure AI Vision.
  3. Dans le corps de la demande, définissez "url" sur l’URL d’une image distante que vous souhaitez utiliser.
  4. Le cas échéant, remplacez le paramètre model-version par une ancienne version. 2022-04-11 est le modèle hérité qui prend en charge uniquement le texte en anglais. Les images et le texte vectorisés avec un certain modèle ne sont pas compatibles avec les autres modèles. Veillez donc à utiliser le même modèle dans les deux cas.
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'
}"

Pour vectoriser une image locale, vous devez placer les données binaires dans le corps de la requête HTTP.

L’appel d’API renvoie un objet JSON vectoriel qui définit les coordonnées de l’image dans l’espace vectoriel de haute dimension.

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

Appeler l’API Vectorisation de texte

L’API retrieval:vectorizeText vous permet de convertir une chaîne de texte en vecteur. Pour l’appeler, apportez les modifications suivantes à la commande cURL ci-dessous :

  1. Remplacez <endpoint> par votre point de terminaison Azure AI Vision.
  2. Remplacez <subscription-key> par votre clé Azure AI Vision.
  3. Dans le corps de la requête, définissez "text" sur l’exemple de terme de recherche que vous souhaitez utiliser.
  4. Le cas échéant, remplacez le paramètre model-version par une ancienne version. 2022-04-11 est le modèle hérité qui prend en charge uniquement le texte en anglais. Les images et le texte vectorisés avec un certain modèle ne sont pas compatibles avec les autres modèles. Veillez donc à utiliser le même modèle dans les deux cas.
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'
}"

L’appel d’API renvoie un objet JSON vectoriel qui définit les coordonnées de la chaîne de texte dans l’espace vectoriel de haute dimension.

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

Calculer une similarité vectorielle

La similarité cosinus est une méthode permettant de mesurer la similarité de deux vecteurs. Dans un scénario de récupération d’images, vous comparez le vecteur de requête de recherche au vecteur de chaque image. Des images au-dessus d’un certain seuil de similarité peuvent être retournées comme résultats de la recherche.

L’exemple de code suivant calcule la similarité cosinus entre deux vecteurs. Il vous convient de décider du seuil de similarité à utiliser pour le renvoi d’images comme résultats de la recherche.

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);
}

Étape suivante