Condividi tramite


Come generare incorporamenti di immagini con l'inferenza del modello di intelligenza artificiale di Azure

Importante

Gli elementi contrassegnati (anteprima) in questo articolo sono attualmente disponibili in anteprima pubblica. Questa anteprima viene fornita senza un contratto di servizio e non è consigliabile per i carichi di lavoro di produzione. Alcune funzionalità potrebbero non essere supportate o potrebbero presentare funzionalità limitate. Per altre informazioni, vedere le Condizioni supplementari per l'uso delle anteprime di Microsoft Azure.

Questo articolo illustra come usare l'API di incorporamento delle immagini con i modelli distribuiti nell'inferenza del modello di intelligenza artificiale di Azure in Azure AI Foundry.

Prerequisiti

Per usare i modelli di incorporamento nell'applicazione, è necessario:

  • Distribuzione di un modello di incorporamento di immagini. Se non è disponibile, leggere Aggiungere e configurare modelli ai servizi di intelligenza artificiale di Azure per aggiungere un modello di incorporamento alla risorsa.

    • In questo esempio viene Cohere-embed-v3-english usato da Cohere.
  • Installare il pacchetto di inferenza di Intelligenza artificiale di Azure con il comando seguente:

    pip install -U azure-ai-inference
    

Usare gli incorporamenti

Creare prima di tutto il client per utilizzare il modello. Il codice seguente usa un URL dell'endpoint e una chiave archiviati nelle variabili di ambiente.

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"
)

Se la risorsa è stata configurata con il supporto di Microsoft Entra ID , è possibile usare il frammento di codice seguente per creare 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"
)

Creare incorporamenti

Per creare incorporamenti di immagini, è necessario passare i dati dell'immagine come parte della richiesta. I dati dell'immagine devono essere in formato PNG e codificati come 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 ],
)

Suggerimento

Quando si crea una richiesta, tenere conto del limite di input del token per il modello. Se è necessario incorporare parti di testo più grandi, è necessaria una strategia di suddivisione in blocchi.

La risposta è la seguente, in cui è possibile visualizzare le statistiche di utilizzo del modello:

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)

Importante

L'elaborazione degli incorporamenti in batch potrebbe non essere supportata per tutti i modelli. Ad esempio, per cohere-embed-v3 il modello, è necessario inviare un'immagine alla volta.

Incorporamento di immagini e coppie di testo

Alcuni modelli possono generare incorporamenti da immagini e coppie di testo. In questo caso, è possibile usare i image campi e text nella richiesta per passare l'immagine e il testo al modello. L'esempio seguente illustra come creare incorporamenti per le coppie di immagini e testo:

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 ],
)

Creare tipi diversi di incorporamenti

Alcuni modelli possono generare più incorporamenti per lo stesso input a seconda del modo in cui si prevede di usarli. Questa funzionalità consente di recuperare incorporamenti più accurati per i modelli RAG.

Nell'esempio seguente viene illustrato come creare incorporamenti usati per creare un incorporamento per un documento che verrà archiviato in un database vettoriale:

from azure.ai.inference.models import EmbeddingInputType

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

Quando si lavora su una query per recuperare un documento di questo tipo, è possibile usare il frammento di codice seguente per creare gli incorporamenti per la query e ottimizzare le prestazioni di recupero.

from azure.ai.inference.models import EmbeddingInputType

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

Si noti che non tutti i modelli di incorporamento supportano l'indicazione del tipo di input nella richiesta e in questi casi viene restituito un errore 422.

Importante

Gli elementi contrassegnati (anteprima) in questo articolo sono attualmente disponibili in anteprima pubblica. Questa anteprima viene fornita senza un contratto di servizio e non è consigliabile per i carichi di lavoro di produzione. Alcune funzionalità potrebbero non essere supportate o potrebbero presentare funzionalità limitate. Per altre informazioni, vedere le Condizioni supplementari per l'uso delle anteprime di Microsoft Azure.

Questo articolo illustra come usare l'API di incorporamento delle immagini con i modelli distribuiti nell'inferenza del modello di intelligenza artificiale di Azure in Azure AI Foundry.

Prerequisiti

Per usare i modelli di incorporamento nell'applicazione, è necessario:

  • Distribuzione di un modello di incorporamento di immagini. Se non si ha una sola lettura Aggiungere e configurare modelli ai servizi di intelligenza artificiale di Azure per aggiungere un modello di incorporamento alla risorsa.

    • In questo esempio viene Cohere-embed-v3-english usato da Cohere.
  • Installare la libreria di inferenza di Azure per JavaScript con il comando seguente:

    npm install @azure-rest/ai-inference
    

Usare gli incorporamenti

Creare prima di tutto il client per utilizzare il modello. Il codice seguente usa un URL dell'endpoint e una chiave archiviati nelle variabili di ambiente.

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

Se la risorsa è stata configurata con il supporto di Microsoft Entra ID , è possibile usare il frammento di codice seguente per creare 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"
);

Creare incorporamenti

Per creare incorporamenti di immagini, è necessario passare i dati dell'immagine come parte della richiesta. I dati dell'immagine devono essere in formato PNG e codificati come 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 } ],
    }
});

Suggerimento

Quando si crea una richiesta, tenere conto del limite di input del token per il modello. Se è necessario incorporare parti di testo più grandi, è necessaria una strategia di suddivisione in blocchi.

La risposta è la seguente, in cui è possibile visualizzare le statistiche di utilizzo del modello:

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

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

Importante

L'elaborazione degli incorporamenti in batch potrebbe non essere supportata per tutti i modelli. Ad esempio, per cohere-embed-v3 il modello, è necessario inviare un'immagine alla volta.

Incorporamento di immagini e coppie di testo

Alcuni modelli possono generare incorporamenti da immagini e coppie di testo. In questo caso, è possibile usare i image campi e text nella richiesta per passare l'immagine e il testo al modello. L'esempio seguente illustra come creare incorporamenti per le coppie di immagini e testo:

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

Creare tipi diversi di incorporamenti

Alcuni modelli possono generare più incorporamenti per lo stesso input a seconda del modo in cui si prevede di usarli. Questa funzionalità consente di recuperare incorporamenti più accurati per i modelli RAG.

Nell'esempio seguente viene illustrato come creare incorporamenti usati per creare un incorporamento per un documento che verrà archiviato in un database vettoriale:

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

Quando si lavora su una query per recuperare un documento di questo tipo, è possibile usare il frammento di codice seguente per creare gli incorporamenti per la query e ottimizzare le prestazioni di recupero.

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

Si noti che non tutti i modelli di incorporamento supportano l'indicazione del tipo di input nella richiesta e in questi casi viene restituito un errore 422.

Nota

L'uso di incorporamenti di immagini è supportato solo con le richieste Python, JavaScript o REST.

Nota

L'uso di incorporamenti di immagini è supportato solo con le richieste Python, JavaScript o REST.

Importante

Gli elementi contrassegnati (anteprima) in questo articolo sono attualmente disponibili in anteprima pubblica. Questa anteprima viene fornita senza un contratto di servizio e non è consigliabile per i carichi di lavoro di produzione. Alcune funzionalità potrebbero non essere supportate o potrebbero presentare funzionalità limitate. Per altre informazioni, vedere le Condizioni supplementari per l'uso delle anteprime di Microsoft Azure.

Questo articolo illustra come usare l'API di incorporamento delle immagini con i modelli distribuiti nell'inferenza del modello di intelligenza artificiale di Azure in Azure AI Foundry.

Prerequisiti

Per usare i modelli di incorporamento nell'applicazione, è necessario:

  • Distribuzione di un modello di incorporamento di immagini. Se non si ha una sola lettura Aggiungere e configurare modelli ai servizi di intelligenza artificiale di Azure per aggiungere un modello di incorporamento alla risorsa.

    • In questo esempio viene Cohere-embed-v3-english usato da Cohere.

Usare gli incorporamenti

Per usare gli incorporamenti di testo, usare la route /images/embeddings aggiunta all'URL di base insieme alle credenziali indicate in api-key. Authorization l'intestazione è supportata anche con il formato Bearer <key>.

POST https://<resource>.services.ai.azure.com/models/images/embeddings?api-version=2024-05-01-preview
Content-Type: application/json
api-key: <key>

Se la risorsa è stata configurata con il supporto di Microsoft Entra ID , passare il token nell'intestazione Authorization :

POST https://<resource>.services.ai.azure.com/models/images/embeddings?api-version=2024-05-01-preview
Content-Type: application/json
Authorization: Bearer <token>

Creare incorporamenti

Per creare incorporamenti di immagini, è necessario passare i dati dell'immagine come parte della richiesta. I dati dell'immagine devono essere in formato PNG e codificati come base64.

{
    "model": "Cohere-embed-v3-english",
    "input": [
        {
            "image": "data:image/png;base64,iVBORw0KGgoAAAANSUh..."
        }
    ]
}

Suggerimento

Quando si crea una richiesta, tenere conto del limite di input del token per il modello. Se è necessario incorporare parti di testo più grandi, è necessaria una strategia di suddivisione in blocchi.

La risposta è la seguente, in cui è possibile visualizzare le statistiche di utilizzo del modello:

{
    "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
    }
}

Importante

L'elaborazione degli incorporamenti in batch potrebbe non essere supportata per tutti i modelli. Ad esempio, per cohere-embed-v3 il modello, è necessario inviare un'immagine alla volta.

Incorporamento di immagini e coppie di testo

Alcuni modelli possono generare incorporamenti da immagini e coppie di testo. In questo caso, è possibile usare i image campi e text nella richiesta per passare l'immagine e il testo al modello. L'esempio seguente illustra come creare incorporamenti per le coppie di immagini e testo:

{
    "model": "Cohere-embed-v3-english",
    "input": [
        {
            "image": "data:image/png;base64,iVBORw0KGgoAAAANSUh...",
            "text": "A photo of a cat"
        }
    ]
}

Creare tipi diversi di incorporamenti

Alcuni modelli possono generare più incorporamenti per lo stesso input a seconda del modo in cui si prevede di usarli. Questa funzionalità consente di recuperare incorporamenti più accurati per i modelli RAG.

Nell'esempio seguente viene illustrato come creare incorporamenti usati per creare un incorporamento per un documento che verrà archiviato in un database vettoriale:

{
    "model": "Cohere-embed-v3-english",
    "input": [
        {
            "image": "data:image/png;base64,iVBORw0KGgoAAAANSUh..."
        }
    ],
    "input_type": "document"
}

Quando si lavora su una query per recuperare un documento di questo tipo, è possibile usare il frammento di codice seguente per creare gli incorporamenti per la query e ottimizzare le prestazioni di recupero.

{
    "model": "Cohere-embed-v3-english",
    "input": [
        {
            "image": "data:image/png;base64,iVBORw0KGgoAAAANSUh..."
        }
    ],
    "input_type": "query"
}

Si noti che non tutti i modelli di incorporamento supportano l'indicazione del tipo di input nella richiesta e in questi casi viene restituito un errore 422.