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 Azure-abonnement. Als u GitHub-modellen gebruikt, kunt u uw ervaring upgraden en een Azure-abonnement maken in het proces. Lees Upgrade van GitHub-modellen naar Azure AI-modeldeductie als dat uw geval is.
Een Azure AI-servicesresource. Zie Een Azure AI Services-resource maken voor meer informatie.
De eindpunt-URL en -sleutel.
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.
- In dit voorbeeld wordt
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 Azure-abonnement. Als u GitHub-modellen gebruikt, kunt u uw ervaring upgraden en een Azure-abonnement maken in het proces. Lees Upgrade van GitHub-modellen naar Azure AI-modeldeductie als dat uw geval is.
Een Azure AI-servicesresource. Zie Een Azure AI Services-resource maken voor meer informatie.
De eindpunt-URL en -sleutel.
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.
- In dit voorbeeld wordt
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:
Een Azure-abonnement. Als u GitHub-modellen gebruikt, kunt u uw ervaring upgraden en een Azure-abonnement maken in het proces. Lees Upgrade van GitHub-modellen naar Azure AI-modeldeductie als dat uw geval is.
Een Azure AI-servicesresource. Zie Een Azure AI Services-resource maken voor meer informatie.
De eindpunt-URL en -sleutel.
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.
- In dit voorbeeld wordt
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.