Delen via


Insluitingen van afbeeldingen genereren met azure AI-modeldeductie

Belangrijk

Items die in dit artikel zijn gemarkeerd (preview) zijn momenteel beschikbaar als openbare preview. Deze preview wordt aangeboden zonder een service level agreement en we raden deze niet aan voor productieworkloads. Misschien worden bepaalde functies niet ondersteund of zijn de mogelijkheden ervan beperkt. Zie Aanvullende gebruiksvoorwaarden voor Microsoft Azure-previews voor meer informatie.

In dit artikel wordt uitgelegd hoe u de API voor het insluiten van afbeeldingen gebruikt met modellen die zijn geïmplementeerd in Azure AI-modeldeductie in Azure AI Foundry.

Vereisten

Als u insluitmodellen in uw toepassing wilt gebruiken, hebt u het volgende nodig:

  • Een insluitmodelimplementatie voor afbeeldingen. Als u er nog geen hebt, leest u Modellen toevoegen en configureren voor Azure AI-services om een insluitingsmodel toe te voegen aan uw resource.

    • In dit voorbeeld wordt Cohere-embed-v3-english gebruikgemaakt van Cohere.
  • Installeer het Azure AI-deductiepakket met de volgende opdracht:

    pip install -U azure-ai-inference
    

    Tip

    Lees meer over het Azure AI-deductiepakket en de naslaginformatie.

Insluitingen gebruiken

Maak eerst de client om het model te gebruiken. De volgende code maakt gebruik van een eindpunt-URL en -sleutel die zijn opgeslagen in omgevingsvariabelen.

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

Als u de resource hebt geconfigureerd voor ondersteuning voor Microsoft Entra ID , kunt u het volgende codefragment gebruiken om een client te maken.

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

Insluitingen maken

Als u insluitingen van afbeeldingen wilt maken, moet u de afbeeldingsgegevens doorgeven als onderdeel van uw aanvraag. Afbeeldingsgegevens moeten de PNG-indeling hebben en als base64 zijn gecodeerd.

from azure.ai.inference.models import ImageEmbeddingInput

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

Tip

Houd bij het maken van een aanvraag rekening met de invoerlimiet van het token voor het model. Als u grotere delen van tekst wilt insluiten, hebt u een segmenteringsstrategie nodig.

Het antwoord is als volgt, waar u de gebruiksstatistieken van het model kunt zien:

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)

Belangrijk

Het berekenen van insluitingen in batches wordt mogelijk niet ondersteund voor alle modellen. Voor het model moet u bijvoorbeeld cohere-embed-v3 één afbeelding tegelijk verzenden.

Afbeeldingen en tekstparen insluiten

Sommige modellen kunnen insluitingen genereren op basis van afbeeldingen en tekstparen. In dit geval kunt u de image en text velden in de aanvraag gebruiken om de afbeelding en tekst door te geven aan het model. In het volgende voorbeeld ziet u hoe u insluitingen maakt voor afbeeldingen en tekstparen:

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

Verschillende typen insluitingen maken

Sommige modellen kunnen meerdere insluitingen genereren voor dezelfde invoer, afhankelijk van hoe u deze wilt gebruiken. Met deze mogelijkheid kunt u nauwkeurigere insluitingen voor RAG-patronen ophalen.

In het volgende voorbeeld ziet u hoe u insluitingen maakt die worden gebruikt om een insluiting te maken voor een document dat wordt opgeslagen in een vectordatabase:

from azure.ai.inference.models import EmbeddingInputType

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

Wanneer u aan een query werkt om een dergelijk document op te halen, kunt u het volgende codefragment gebruiken om de insluitingen voor de query te maken en de prestaties van het ophalen te maximaliseren.

from azure.ai.inference.models import EmbeddingInputType

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

U ziet dat niet alle ondersteuning voor insluitingsmodellen het invoertype in de aanvraag aangeeft en dat in die gevallen een 422-fout wordt geretourneerd.

Belangrijk

Items die in dit artikel zijn gemarkeerd (preview) zijn momenteel beschikbaar als openbare preview. Deze preview wordt aangeboden zonder een service level agreement en we raden deze niet aan voor productieworkloads. Misschien worden bepaalde functies niet ondersteund of zijn de mogelijkheden ervan beperkt. Zie Aanvullende gebruiksvoorwaarden voor Microsoft Azure-previews voor meer informatie.

In dit artikel wordt uitgelegd hoe u de API voor het insluiten van afbeeldingen gebruikt met modellen die zijn geïmplementeerd in Azure AI-modeldeductie in Azure AI Foundry.

Vereisten

Als u insluitmodellen in uw toepassing wilt gebruiken, hebt u het volgende nodig:

  • Een insluitmodelimplementatie voor afbeeldingen. Als u nog geen gelezen model toevoegen en configureren voor Azure AI-services hebt om een insluitingsmodel toe te voegen aan uw resource.

    • In dit voorbeeld wordt Cohere-embed-v3-english gebruikgemaakt van Cohere.
  • Installeer de Azure-deductiebibliotheek voor JavaScript met de volgende opdracht:

    npm install @azure-rest/ai-inference
    

    Tip

    Lees meer over het Azure AI-deductiepakket en de naslaginformatie.

Insluitingen gebruiken

Maak eerst de client om het model te gebruiken. De volgende code maakt gebruik van een eindpunt-URL en -sleutel die zijn opgeslagen in omgevingsvariabelen.

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

Als u de resource hebt geconfigureerd voor ondersteuning voor Microsoft Entra ID , kunt u het volgende codefragment gebruiken om een client te maken.

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

Insluitingen maken

Als u insluitingen van afbeeldingen wilt maken, moet u de afbeeldingsgegevens doorgeven als onderdeel van uw aanvraag. Afbeeldingsgegevens moeten de PNG-indeling hebben en als base64 zijn gecodeerd.

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

Tip

Houd bij het maken van een aanvraag rekening met de invoerlimiet van het token voor het model. Als u grotere delen van tekst wilt insluiten, hebt u een segmenteringsstrategie nodig.

Het antwoord is als volgt, waar u de gebruiksstatistieken van het model kunt zien:

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

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

Belangrijk

Het berekenen van insluitingen in batches wordt mogelijk niet ondersteund voor alle modellen. Voor het model moet u bijvoorbeeld cohere-embed-v3 één afbeelding tegelijk verzenden.

Afbeeldingen en tekstparen insluiten

Sommige modellen kunnen insluitingen genereren op basis van afbeeldingen en tekstparen. In dit geval kunt u de image en text velden in de aanvraag gebruiken om de afbeelding en tekst door te geven aan het model. In het volgende voorbeeld ziet u hoe u insluitingen maakt voor afbeeldingen en tekstparen:

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

Verschillende typen insluitingen maken

Sommige modellen kunnen meerdere insluitingen genereren voor dezelfde invoer, afhankelijk van hoe u deze wilt gebruiken. Met deze mogelijkheid kunt u nauwkeurigere insluitingen voor RAG-patronen ophalen.

In het volgende voorbeeld ziet u hoe u insluitingen maakt die worden gebruikt om een insluiting te maken voor een document dat wordt opgeslagen in een vectordatabase:

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

Wanneer u aan een query werkt om een dergelijk document op te halen, kunt u het volgende codefragment gebruiken om de insluitingen voor de query te maken en de prestaties van het ophalen te maximaliseren.

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

U ziet dat niet alle ondersteuning voor insluitingsmodellen het invoertype in de aanvraag aangeeft en dat in die gevallen een 422-fout wordt geretourneerd.

Notitie

Het gebruik van insluitingen van afbeeldingen wordt alleen ondersteund met behulp van Python-, JavaScript- of REST-aanvragen.

Notitie

Het gebruik van insluitingen van afbeeldingen wordt alleen ondersteund met behulp van Python-, JavaScript- of REST-aanvragen.

Belangrijk

Items die in dit artikel zijn gemarkeerd (preview) zijn momenteel beschikbaar als openbare preview. Deze preview wordt aangeboden zonder een service level agreement en we raden deze niet aan voor productieworkloads. Misschien worden bepaalde functies niet ondersteund of zijn de mogelijkheden ervan beperkt. Zie Aanvullende gebruiksvoorwaarden voor Microsoft Azure-previews voor meer informatie.

In dit artikel wordt uitgelegd hoe u de API voor het insluiten van afbeeldingen gebruikt met modellen die zijn geïmplementeerd in Azure AI-modeldeductie in Azure AI Foundry.

Vereisten

Als u insluitmodellen in uw toepassing wilt gebruiken, hebt u het volgende nodig:

Insluitingen gebruiken

Als u de tekst insluitingen wilt gebruiken, gebruikt u de route /images/embeddings die is toegevoegd aan uw basis-URL, samen met uw referenties die zijn aangegeven in api-key. Authorization header wordt ook ondersteund met de indeling 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>

Als u de resource hebt geconfigureerd met ondersteuning voor Microsoft Entra ID , geeft u het token door in de Authorization header:

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

Insluitingen maken

Als u insluitingen van afbeeldingen wilt maken, moet u de afbeeldingsgegevens doorgeven als onderdeel van uw aanvraag. Afbeeldingsgegevens moeten de PNG-indeling hebben en als base64 zijn gecodeerd.

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

Tip

Houd bij het maken van een aanvraag rekening met de invoerlimiet van het token voor het model. Als u grotere delen van tekst wilt insluiten, hebt u een segmenteringsstrategie nodig.

Het antwoord is als volgt, waar u de gebruiksstatistieken van het model kunt zien:

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

Belangrijk

Het berekenen van insluitingen in batches wordt mogelijk niet ondersteund voor alle modellen. Voor het model moet u bijvoorbeeld cohere-embed-v3 één afbeelding tegelijk verzenden.

Afbeeldingen en tekstparen insluiten

Sommige modellen kunnen insluitingen genereren op basis van afbeeldingen en tekstparen. In dit geval kunt u de image en text velden in de aanvraag gebruiken om de afbeelding en tekst door te geven aan het model. In het volgende voorbeeld ziet u hoe u insluitingen maakt voor afbeeldingen en tekstparen:

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

Verschillende typen insluitingen maken

Sommige modellen kunnen meerdere insluitingen genereren voor dezelfde invoer, afhankelijk van hoe u deze wilt gebruiken. Met deze mogelijkheid kunt u nauwkeurigere insluitingen voor RAG-patronen ophalen.

In het volgende voorbeeld ziet u hoe u insluitingen maakt die worden gebruikt om een insluiting te maken voor een document dat wordt opgeslagen in een vectordatabase:

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

Wanneer u aan een query werkt om een dergelijk document op te halen, kunt u het volgende codefragment gebruiken om de insluitingen voor de query te maken en de prestaties van het ophalen te maximaliseren.

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

U ziet dat niet alle ondersteuning voor insluitingsmodellen het invoertype in de aanvraag aangeeft en dat in die gevallen een 422-fout wordt geretourneerd.