Partage via


Comment générer des incorporations d’images avec l’inférence de modèle Azure AI

Important

Les éléments marqués (préversion) dans cet article sont actuellement en préversion publique. Cette préversion est fournie sans contrat de niveau de service, nous la déconseillons dans des charges de travail de production. Certaines fonctionnalités peuvent être limitées ou non prises en charge. Pour plus d’informations, consultez Conditions d’Utilisation Supplémentaires relatives aux Évaluations Microsoft Azure.

Cet article explique comment utiliser l’API d’incorporation d’images avec des modèles déployés sur l’inférence de modèle Azure AI dans Azure AI Foundry.

Prérequis

Pour utiliser des modèles incorporés dans votre application, vous avez besoin des éléments suivants :

Utiliser des incorporations

Tout d’abord, créez le client pour consommer le modèle. Le code suivant utilise une URL de point de terminaison et une clé qui sont stockées dans les variables d’environnement.

import os
from azure.ai.inference import ImageEmbeddingsClient
from azure.core.credentials import AzureKeyCredential

model = ImageEmbeddingsClient(
    endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
    credential=AzureKeyCredential(os.environ["AZURE_INFERENCE_CREDENTIAL"]),
    model="Cohere-embed-v3-english"
)

Si vous avez configuré la ressource avec la prise en charge de Microsoft Entra ID, vous pouvez utiliser l’extrait de code suivant pour créer un client.

import os
from azure.ai.inference import ImageEmbeddingsClient
from azure.identity import DefaultAzureCredential

model = ImageEmbeddingsClient(
    endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
    credential=DefaultAzureCredential(),
    model="Cohere-embed-v3-english"
)

Créer des incorporations

Pour créer des incorporations d’images, vous devez transmettre les données d’image dans le cadre de votre demande. Les données d’image doivent être au format PNG et encodées en base64.

from azure.ai.inference.models import ImageEmbeddingInput

image_input= ImageEmbeddingInput.load(image_file="sample1.png", image_format="png")
response = model.embed(
    input=[ image_input ],
)

Conseil

Lors de la création d’une demande, prenez en compte la limite d’entrée du jeton pour le modèle. Si vous avez besoin d’incorporer de grandes parties de texte, vous avez besoin d’une stratégie de segmentation.

La réponse est la suivante, où vous pouvez voir les statistiques d’utilisation du modèle :

import numpy as np

for embed in response.data:
    print("Embeding of size:", np.asarray(embed.embedding).shape)

print("Model:", response.model)
print("Usage:", response.usage)

Important

Les incorporations de calcul dans des lots peuvent ne pas être prises en charge pour tous les modèles. Par exemple, pour le modèle cohere-embed-v3, vous devez envoyer une image à la fois.

Incorporation de paires d’images et de texte

Certains modèles peuvent générer des incorporations à partir de paires d’images et de texte. Dans ce cas, vous pouvez utiliser les champs image et text de la demande pour transmettre l’image et le texte au modèle. L’exemple suivant montre comment créer des incorporations pour les paires d’images et de texte :

text_image_input= ImageEmbeddingInput.load(image_file="sample1.png", image_format="png")
text_image_input.text = "A cute baby sea otter"
response = model.embed(
    input=[ text_image_input ],
)

Créer différents types d’incorporations

Certains modèles peuvent générer plusieurs incorporations pour la même entrée en fonction de la façon dont vous envisagez de les utiliser. Cette fonctionnalité vous permet de récupérer des incorporations plus précises pour les modèles RAG.

L’exemple suivant montre comment créer des incorporations utilisées pour créer un incorporation pour un document qui sera stocké dans une base de données vectorielle :

from azure.ai.inference.models import EmbeddingInputType

response = model.embed(
    input=[ image_input ],
    input_type=EmbeddingInputType.DOCUMENT,
)

Lorsque vous travaillez sur une requête pour récupérer un tel document, vous pouvez utiliser l’extrait de code suivant pour créer les incorporations de la requête et optimiser les performances de récupération.

from azure.ai.inference.models import EmbeddingInputType

response = model.embed(
    input=[ image_input ],
    input_type=EmbeddingInputType.QUERY,
)

Notez que tous les modèles d’incorporation ne permettent pas d’indiquer le type d’entrée dans la requête et que, dans ces cas, une erreur 422 est retournée.

Important

Les éléments marqués (préversion) dans cet article sont actuellement en préversion publique. Cette préversion est fournie sans contrat de niveau de service, nous la déconseillons dans des charges de travail de production. Certaines fonctionnalités peuvent être limitées ou non prises en charge. Pour plus d’informations, consultez Conditions d’Utilisation Supplémentaires relatives aux Évaluations Microsoft Azure.

Cet article explique comment utiliser l’API d’incorporation d’images avec des modèles déployés sur l’inférence de modèle Azure AI dans Azure AI Foundry.

Prérequis

Pour utiliser des modèles incorporés dans votre application, vous avez besoin des éléments suivants :

Utiliser des incorporations

Tout d’abord, créez le client pour consommer le modèle. Le code suivant utilise une URL de point de terminaison et une clé qui sont stockées dans les variables d’environnement.

import ModelClient from "@azure-rest/ai-inference";
import { isUnexpected } from "@azure-rest/ai-inference";
import { AzureKeyCredential } from "@azure/core-auth";

const client = new ModelClient(
    process.env.AZURE_INFERENCE_ENDPOINT,
    new AzureKeyCredential(process.env.AZURE_INFERENCE_CREDENTIAL),
    "Cohere-embed-v3-english"
);

Si vous avez configuré la ressource avec la prise en charge de Microsoft Entra ID, vous pouvez utiliser l’extrait de code suivant pour créer un client.

import ModelClient from "@azure-rest/ai-inference";
import { isUnexpected } from "@azure-rest/ai-inference";
import { DefaultAzureCredential } from "@azure/identity";

const client = new ModelClient(
    process.env.AZURE_INFERENCE_ENDPOINT,
    new DefaultAzureCredential(),
    "Cohere-embed-v3-english"
);

Créer des incorporations

Pour créer des incorporations d’images, vous devez transmettre les données d’image dans le cadre de votre demande. Les données d’image doivent être au format PNG et encodées en base64.

var image_path = "sample1.png";
var image_data = fs.readFileSync(image_path);
var image_data_base64 = Buffer.from(image_data).toString("base64");

var response = await client.path("/images/embeddings").post({
    body: {
        input: [ { image: image_data_base64 } ],
    }
});

Conseil

Lors de la création d’une demande, prenez en compte la limite d’entrée du jeton pour le modèle. Si vous avez besoin d’incorporer de grandes parties de texte, vous avez besoin d’une stratégie de segmentation.

La réponse est la suivante, où vous pouvez voir les statistiques d’utilisation du modèle :

if (isUnexpected(response)) {
    throw response.body.error;
}

console.log(response.embedding);
console.log(response.body.model);
console.log(response.body.usage);

Important

Les incorporations de calcul dans des lots peuvent ne pas être prises en charge pour tous les modèles. Par exemple, pour le modèle cohere-embed-v3, vous devez envoyer une image à la fois.

Incorporation de paires d’images et de texte

Certains modèles peuvent générer des incorporations à partir de paires d’images et de texte. Dans ce cas, vous pouvez utiliser les champs image et text de la demande pour transmettre l’image et le texte au modèle. L’exemple suivant montre comment créer des incorporations pour les paires d’images et de texte :

var image_path = "sample1.png";
var image_data = fs.readFileSync(image_path);
var image_data_base64 = Buffer.from(image_data).toString("base64");

var response = await client.path("images/embeddings").post({
    body: {
        input: [
            {
                text: "A cute baby sea otter",
                image: image_data_base64
            }
        ]
    }
});

Créer différents types d’incorporations

Certains modèles peuvent générer plusieurs incorporations pour la même entrée en fonction de la façon dont vous envisagez de les utiliser. Cette fonctionnalité vous permet de récupérer des incorporations plus précises pour les modèles RAG.

L’exemple suivant montre comment créer des incorporations utilisées pour créer un incorporation pour un document qui sera stocké dans une base de données vectorielle :

var response = await client.path("/embeddings").post({
    body: {
        input: [ { image: image_data_base64 } ],
        input_type: "document",
    }
});

Lorsque vous travaillez sur une requête pour récupérer un tel document, vous pouvez utiliser l’extrait de code suivant pour créer les incorporations de la requête et optimiser les performances de récupération.

var response = await client.path("/embeddings").post({
    body: {
        input: [ { image: image_data_base64 } ],
        input_type: "query",
    }
});

Notez que tous les modèles d’incorporation ne permettent pas d’indiquer le type d’entrée dans la requête et que, dans ces cas, une erreur 422 est retournée.

Remarque

L’utilisation d’incorporations d’images n’est possible qu’en utilisant Python, JavaScript ou des requêtes REST.

Remarque

L’utilisation d’incorporations d’images n’est possible qu’en utilisant Python, JavaScript ou des requêtes REST.

Important

Les éléments marqués (préversion) dans cet article sont actuellement en préversion publique. Cette préversion est fournie sans contrat de niveau de service, nous la déconseillons dans des charges de travail de production. Certaines fonctionnalités peuvent être limitées ou non prises en charge. Pour plus d’informations, consultez Conditions d’Utilisation Supplémentaires relatives aux Évaluations Microsoft Azure.

Cet article explique comment utiliser l’API d’incorporation d’images avec des modèles déployés sur l’inférence de modèle Azure AI dans Azure AI Foundry.

Prérequis

Pour utiliser des modèles incorporés dans votre application, vous avez besoin des éléments suivants :

Utiliser des incorporations

Pour utiliser les incorporations de texte, utilisez l’itinéraire /images/embeddings ajouté à votre URL de base, ainsi que vos informations d’identification indiquées dans api-key. L’en-tête Authorization est également pris en charge avec le format Bearer <key>.

POST https://<resource>.services.ai.azure.com/models/images/embeddings
Content-Type: application/json
api-key: <key>

Si vous avez configuré la ressource avec la prise en charge Microsoft Entra ID, transmettez le jeton dans l’en-tête Authorization :

POST https://<resource>.services.ai.azure.com/models/images/embeddings
Content-Type: application/json
Authorization: Bearer <token>

Créer des incorporations

Pour créer des incorporations d’images, vous devez transmettre les données d’image dans le cadre de votre demande. Les données d’image doivent être au format PNG et encodées en base64.

{
    "model": "${varients-sample}",
    "input": [
        {
            "image": "data:image/png;base64,iVBORw0KGgoAAAANSUh..."
        }
    ]
}

Conseil

Lors de la création d’une demande, prenez en compte la limite d’entrée du jeton pour le modèle. Si vous avez besoin d’incorporer de grandes parties de texte, vous avez besoin d’une stratégie de segmentation.

La réponse est la suivante, où vous pouvez voir les statistiques d’utilisation du modèle :

{
    "id": "0ab1234c-d5e6-7fgh-i890-j1234k123456",
    "object": "list",
    "data": [
        {
            "index": 0,
            "object": "embedding",
            "embedding": [
                0.017196655,
                // ...
                -0.000687122,
                -0.025054932,
                -0.015777588
            ]
        }
    ],
    "model": "Cohere-embed-v3-english",
    "usage": {
        "prompt_tokens": 9,
        "completion_tokens": 0,
        "total_tokens": 9
    }
}

Important

Les incorporations de calcul dans des lots peuvent ne pas être prises en charge pour tous les modèles. Par exemple, pour le modèle cohere-embed-v3, vous devez envoyer une image à la fois.

Incorporation de paires d’images et de texte

Certains modèles peuvent générer des incorporations à partir de paires d’images et de texte. Dans ce cas, vous pouvez utiliser les champs image et text de la demande pour transmettre l’image et le texte au modèle. L’exemple suivant montre comment créer des incorporations pour les paires d’images et de texte :

{
    "model": "${varients-sample}",
    "input": [
        {
            "image": "data:image/png;base64,iVBORw0KGgoAAAANSUh...",
            "text": "A photo of a cat"
        }
    ]
}

Créer différents types d’incorporations

Certains modèles peuvent générer plusieurs incorporations pour la même entrée en fonction de la façon dont vous envisagez de les utiliser. Cette fonctionnalité vous permet de récupérer des incorporations plus précises pour les modèles RAG.

L’exemple suivant montre comment créer des incorporations utilisées pour créer un incorporation pour un document qui sera stocké dans une base de données vectorielle :

{
    "model": "${varients-sample}",
    "input": [
        {
            "image": "data:image/png;base64,iVBORw0KGgoAAAANSUh..."
        }
    ],
    "input_type": "document"
}

Lorsque vous travaillez sur une requête pour récupérer un tel document, vous pouvez utiliser l’extrait de code suivant pour créer les incorporations de la requête et optimiser les performances de récupération.

{
    "model": "${varients-sample}",
    "input": [
        {
            "image": "data:image/png;base64,iVBORw0KGgoAAAANSUh..."
        }
    ],
    "input_type": "query"
}

Notez que tous les modèles d’incorporation ne permettent pas d’indiquer le type d’entrée dans la requête et que, dans ces cas, une erreur 422 est retournée.