Delen via


Insluitingen van afbeeldingen genereren met Azure AI Foundry-modellen

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. Bepaalde functies worden mogelijk niet ondersteund of hebben mogelijk beperkte mogelijkheden. Voor meer informatie, zie Aanvullende Gebruiksvoorwaarden voor Microsoft Azure Previews.

In dit artikel wordt uitgelegd hoe u de API voor het insluiten van afbeeldingen gebruikt met Azure AI Foundry-modellen.

Vereiste voorwaarden

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

  • Een implementatie van een afbeeldingsinsluitingsmodel. Als u er nog geen hebt, lees Foundry-modellen toevoegen en configureren om een embedmodel toe te voegen aan uw resource.

    • In dit voorbeeld wordt Cohere-embed-v3-english gebruikgemaakt van Cohere.

Gebruik afbeeldingsinsluitingen

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

client = ImageEmbeddingsClient(
    endpoint="https://<resource>.services.ai.azure.com/models",
    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

client = ImageEmbeddingsClient(
    endpoint="https://<resource>.services.ai.azure.com/models",
    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 = client.embed(
    input=[ image_input ],
)

Aanbeveling

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 embeddings in batches wordt mogelijk niet ondersteund voor alle modellen. Voor Cohere-embed-v3-english model moet u bijvoorbeeld stuk voor stuk één afbeelding 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 = client.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 = client.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 = client.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. Bepaalde functies worden mogelijk niet ondersteund of hebben mogelijk beperkte mogelijkheden. Voor meer informatie, zie Aanvullende Gebruiksvoorwaarden voor Microsoft Azure Previews.

In dit artikel wordt uitgelegd hoe u de API voor het insluiten van afbeeldingen gebruikt met Azure AI Foundry-modellen.

Vereiste voorwaarden

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

  • Installeer de Azure-deductiebibliotheek voor JavaScript met de volgende opdracht:

    npm install @azure-rest/ai-inference
    npm install @azure/core-auth
    npm install @azure/identity
    

    Als u Node.jsgebruikt, kunt u de afhankelijkheden configureren in package.json:

    package.json

    {
      "name": "main_app",
      "version": "1.0.0",
      "description": "",
      "main": "app.js",
      "type": "module",
      "dependencies": {
        "@azure-rest/ai-inference": "1.0.0-beta.6",
        "@azure/core-auth": "1.9.0",
        "@azure/core-sse": "2.2.0",
        "@azure/identity": "4.8.0"
      }
    }
    
  • Importeer het volgende:

    import ModelClient from "@azure-rest/ai-inference";
    import { isUnexpected } from "@azure-rest/ai-inference";
    import { createSseStream } from "@azure/core-sse";
    import { AzureKeyCredential } from "@azure/core-auth";
    import { DefaultAzureCredential } from "@azure/identity";
    
  • Een implementatie van een afbeeldingsinsluitingsmodel. Als u er nog geen hebt, lees Het toevoegen en configureren van Foundry-modellen om een embeddingmodel toe te voegen voor uw resource.

    • In dit voorbeeld wordt Cohere-embed-v3-english gebruikgemaakt van Cohere.

Gebruik afbeeldingsinsluitingen

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.

const client = ModelClient(
    "https://<resource>.services.ai.azure.com/models", 
    new AzureKeyCredential(process.env.AZURE_INFERENCE_CREDENTIAL)
);

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

const clientOptions = { credentials: { "https://cognitiveservices.azure.com" } };

const client = ModelClient(
    "https://<resource>.services.ai.azure.com/models", 
    new DefaultAzureCredential()
    clientOptions,
);

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 } ],
        model: "Cohere-embed-v3-english",
    }
});

Aanbeveling

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 embeddings in batches wordt mogelijk niet ondersteund voor alle modellen. Voor Cohere-embed-v3-english model moet u bijvoorbeeld stuk voor stuk één afbeelding 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
            }
        ],
        model: "Cohere-embed-v3-english",
    }
});

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("/images/embeddings").post({
    body: {
        input: [ { image: image_data_base64 } ],
        input_type: "document",
        model: "Cohere-embed-v3-english",
    }
});

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("/images/embeddings").post({
    body: {
        input: [ { image: image_data_base64 } ],
        input_type: "query",
        model: "Cohere-embed-v3-english",
    }
});

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

Opmerking

Het gebruik van insluitingen van afbeeldingen wordt alleen ondersteund met behulp van Python-, JavaScript-, C#- 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. Bepaalde functies worden mogelijk niet ondersteund of hebben mogelijk beperkte mogelijkheden. Voor meer informatie, zie Aanvullende Gebruiksvoorwaarden voor Microsoft Azure Previews.

In dit artikel wordt uitgelegd hoe u de API voor het insluiten van afbeeldingen gebruikt met Azure AI Foundry-modellen.

Vereiste voorwaarden

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

  • Installeer het Azure AI-deductiepakket met de volgende opdracht:

    dotnet add package Azure.AI.Inference --prerelease
    
  • Als je Entra ID gebruikt, heb je ook het volgende pakket nodig:

    dotnet add package Azure.Identity
    
  • Een implementatie van een afbeeldingsinsluitingsmodel. Als u er nog geen hebt, lees Foundry-modellen toevoegen en configureren om een embedmodel toe te voegen aan uw resource.

    • In dit voorbeeld wordt Cohere-embed-v3-english gebruikgemaakt van Cohere.

Gebruik afbeeldingsinsluitingen

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.

ImageEmbeddingsClient client = new ImageEmbeddingsClient(
    new Uri("https://<resource>.services.ai.azure.com/models"),
    new AzureKeyCredential(Environment.GetEnvironmentVariable("AZURE_INFERENCE_CREDENTIAL"))
);

Als u de resource hebt geconfigureerd met ondersteuning voor Microsoft Entra ID , kunt u het volgende codefragment gebruiken om een client te maken. U ziet dat includeInteractiveCredentials deze is ingesteld op true alleen voor demonstratiedoeleinden, zodat verificatie kan plaatsvinden met behulp van de webbrowser. Voor productieworkloads moet u de parameter verwijderen.

TokenCredential credential = new DefaultAzureCredential(includeInteractiveCredentials: true);
AzureAIInferenceClientOptions clientOptions = new AzureAIInferenceClientOptions();
BearerTokenAuthenticationPolicy tokenPolicy = new BearerTokenAuthenticationPolicy(credential, new string[] { "https://cognitiveservices.azure.com/.default" });

clientOptions.AddPolicy(tokenPolicy, HttpPipelinePosition.PerRetry);

ImageEmbeddingsClient client = new ImageEmbeddingsClient(
    new Uri("https://<resource>.services.ai.azure.com/models"),
    credential,
    clientOptions
);

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.

List<ImageEmbeddingInput> input = new List<ImageEmbeddingInput>
{
    ImageEmbeddingInput.Load(imageFilePath:"sampleImage.png", imageFormat:"png")
};

var requestOptions = new ImageEmbeddingsOptions()
{
    Input = input,
    Model = "Cohere-embed-v3-english"
};

Response<EmbeddingsResult> response = client.Embed(requestOptions);

Aanbeveling

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:

foreach (EmbeddingItem item in response.Value.Data)
{
    List<float> embedding = item.Embedding.ToObjectFromJson<List<float>>();
    Console.WriteLine($"Index: {item.Index}, Embedding: <{string.Join(", ", embedding)}>");
}

Belangrijk

Het berekenen van embeddings in batches wordt mogelijk niet voor alle modellen ondersteund. Voor Cohere-embed-v3-english model moet u bijvoorbeeld stuk voor stuk één afbeelding 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_input = ImageEmbeddingInput.Load(imageFilePath:"sampleImage.png", imageFormat:"png")
image_input.text = "A cute baby sea otter"

var requestOptions = new ImageEmbeddingsOptions()
{
    Input = new List<ImageEmbeddingInput>
    {
        image_input
    },
    Model = "Cohere-embed-v3-english"
};

Response<EmbeddingsResult> response = client.Embed(requestOptions);

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 voor een document dat wordt opgeslagen in een vectordatabase:

var requestOptions = new EmbeddingsOptions()
{
    Input = image_input,
    InputType = EmbeddingInputType.DOCUMENT, 
    Model = "Cohere-embed-v3-english"
};

Response<EmbeddingsResult> response = client.Embed(requestOptions);

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 requestOptions = new EmbeddingsOptions()
{
    Input = image_input,
    InputType = EmbeddingInputType.QUERY,
    Model = "Cohere-embed-v3-english"
};

Response<EmbeddingsResult> response = client.Embed(requestOptions);

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. Bepaalde functies worden mogelijk niet ondersteund of hebben mogelijk beperkte mogelijkheden. Voor meer informatie, zie Aanvullende Gebruiksvoorwaarden voor Microsoft Azure Previews.

In dit artikel wordt uitgelegd hoe u de API voor het insluiten van afbeeldingen gebruikt met Azure AI Foundry-modellen.

Vereiste voorwaarden

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

  • Een implementatie van een afbeeldingsinsluitingsmodel. Als u er nog geen hebt, lees Het toevoegen en configureren van Foundry-modellen om een embeddingmodel toe te voegen voor uw resource.

    • In dit voorbeeld wordt Cohere-embed-v3-english gebruikgemaakt van Cohere.

Gebruik afbeeldingsinsluitingen

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 het formaat 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 mee in de Authorization header in het formaat Bearer <token>. Gebruik scope https://cognitiveservices.azure.com/.default.

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

Het gebruik van Microsoft Entra-id vereist mogelijk extra configuratie in uw resource om toegang te verlenen. Meer informatie over het configureren van sleutelloze verificatie met Microsoft Entra-id.

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..."
        }
    ]
}

Aanbeveling

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 embeddings in batches wordt mogelijk niet ondersteund voor alle modellen. Voor Cohere-embed-v3-english model moet u bijvoorbeeld stuk voor stuk één afbeelding 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.