Dela via


Så här genererar du avbildningsinbäddningar med Azure AI Foundry Models

Viktigt!

Objekt markerade (förhandsversion) i den här artikeln är för närvarande i offentlig förhandsversion. Den här förhandsversionen tillhandahålls utan ett serviceavtal och vi rekommenderar det inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller kan vara begränsade. Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.

Den här artikeln beskriver hur du använder API för bildinbäddning med Azure AI Foundry Models.

Förutsättningar

För att använda inbäddningsmodeller i din applikation behöver du:

  • Installera Azure AI-slutsatsdragningspaketet för Python med följande kommando:

    pip install -U azure-ai-inference
    
  • Distribuering av en avbildningsmodell för bildinbäddningar. Om du inte har någon läser du Lägg till och konfigurera Foundry Models för att lägga till en inbäddningsmodell i resursen.

    • Det här exemplet använder Cohere-embed-v3-english från Cohere.

Använda bildinbäddningar

Skapa först klienten för att använda modellen. I följande kod används en slutpunkts-URL och nyckel som lagras i miljövariabler.

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

Om du har konfigurerat resursen till med Stöd för Microsoft Entra-ID kan du använda följande kodfragment för att skapa en klient.

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

Skapa inbäddningar

Om du vill skapa avbildningsinbäddningar måste du skicka bilddata som en del av din begäran. Bilddata ska vara i PNG-format och kodas som base64.

from azure.ai.inference.models import ImageEmbeddingInput

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

Tips/Råd

När du skapar en begäran tar du hänsyn till tokens indatagräns för modellen. Om du behöver bädda in större delar av text behöver du en segmenteringsstrategi.

Svaret är följande, där du kan se modellens användningsstatistik:

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)

Viktigt!

Databehandling av inbäddningar i batchar kanske inte stöds för alla modeller. Till exempel, för Cohere-embed-v3-english-modellen behöver du skicka en bild i taget.

Bädda in bilder och textpar

Vissa modeller kan generera inbäddningar från bilder och textpar. I det här fallet kan du använda fälten image och text i begäran för att skicka bilden och texten till modellen. I följande exempel visas hur du skapar inbäddningar för bilder och textpar:

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

Skapa olika typer av inbäddningar

Vissa modeller kan generera flera inbäddningar för samma indata beroende på hur du planerar att använda dem. Med den här funktionen kan du hämta mer exakta inbäddningar för RAG-mönster.

I följande exempel visas hur du skapar inbäddningar som används för att skapa en inbäddning för ett dokument som ska lagras i en vektordatabas:

from azure.ai.inference.models import EmbeddingInputType

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

När du arbetar med en fråga för att hämta ett sådant dokument kan du använda följande kodfragment för att skapa inbäddningarna för frågan och maximera hämtningsprestandan.

from azure.ai.inference.models import EmbeddingInputType

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

Observera att inte alla inbäddningsmodeller stöder att ange inputtyp i förfrågan och i dessa fall returneras ett 422-fel.

Viktigt!

Objekt markerade (förhandsversion) i den här artikeln är för närvarande i offentlig förhandsversion. Den här förhandsversionen tillhandahålls utan ett serviceavtal och vi rekommenderar det inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller kan vara begränsade. Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.

Den här artikeln beskriver hur du använder API för bildinbäddning med Azure AI Foundry Models.

Förutsättningar

För att använda inbäddningsmodeller i din applikation behöver du:

  • Installera Azure Inference-biblioteket för JavaScript med följande kommando:

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

    Om du använder Node.jskan du konfigurera beroendena i 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"
      }
    }
    
  • Importera följande:

    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";
    
  • Distribuering av en avbildningsmodell för bildinbäddningar. Om du inte redan har någon, läs Lägg till och konfigurera Foundry Models för att lägga till en inbäddningsmodell i resursen.

    • Det här exemplet använder Cohere-embed-v3-english från Cohere.

Använda bildinbäddningar

Skapa först klienten för att använda modellen. I följande kod används en slutpunkts-URL och nyckel som lagras i miljövariabler.

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

Om du har konfigurerat resursen med Microsoft Entra ID-stöd kan du använda följande kodfragment för att skapa en klient.

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

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

Skapa inbäddningar

Om du vill skapa avbildningsinbäddningar måste du skicka bilddata som en del av din begäran. Bilddata ska vara i PNG-format och kodas som 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 } ],
        model: "Cohere-embed-v3-english",
    }
});

Tips/Råd

När du skapar en begäran tar du hänsyn till tokens indatagräns för modellen. Om du behöver bädda in större delar av text behöver du en segmenteringsstrategi.

Svaret är följande, där du kan se modellens användningsstatistik:

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

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

Viktigt!

Databehandling av inbäddningar i batchar kanske inte stöds för alla modeller. Till exempel, för Cohere-embed-v3-english-modellen behöver du skicka en bild i taget.

Bädda in bilder och textpar

Vissa modeller kan generera inbäddningar från bilder och textpar. I det här fallet kan du använda fälten image och text i begäran för att skicka bilden och texten till modellen. I följande exempel visas hur du skapar inbäddningar för bilder och textpar:

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

Skapa olika typer av inbäddningar

Vissa modeller kan generera flera inbäddningar för samma indata beroende på hur du planerar att använda dem. Med den här funktionen kan du hämta mer exakta inbäddningar för RAG-mönster.

I följande exempel visas hur du skapar inbäddningar som används för att skapa en inbäddning för ett dokument som ska lagras i en vektordatabas:

var response = await client.path("/images/embeddings").post({
    body: {
        input: [ { image: image_data_base64 } ],
        input_type: "document",
        model: "Cohere-embed-v3-english",
    }
});

När du arbetar med en fråga för att hämta ett sådant dokument kan du använda följande kodfragment för att skapa inbäddningarna för frågan och maximera hämtningsprestandan.

var response = await client.path("/images/embeddings").post({
    body: {
        input: [ { image: image_data_base64 } ],
        input_type: "query",
        model: "Cohere-embed-v3-english",
    }
});

Observera att inte alla inbäddningsmodeller stöder att ange inputtyp i förfrågan och i dessa fall returneras ett 422-fel.

Anmärkning

Användning av bildinbäddningar stöds endast med hjälp av Python-, JavaScript-, C#- eller REST-begäranden.

Viktigt!

Objekt markerade (förhandsversion) i den här artikeln är för närvarande i offentlig förhandsversion. Den här förhandsversionen tillhandahålls utan ett serviceavtal och vi rekommenderar det inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller kan vara begränsade. Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.

Den här artikeln beskriver hur du använder API för bildinbäddning med Azure AI Foundry Models.

Förutsättningar

För att använda inbäddningsmodeller i din applikation behöver du:

  • Installera Azure AI-slutsatsdragningspaketet med följande kommando:

    dotnet add package Azure.AI.Inference --prerelease
    
  • Om du använder Entra ID behöver du också följande paket:

    dotnet add package Azure.Identity
    
  • Distribuering av en avbildningsmodell för bildinbäddningar. Om du inte har någon läser du Lägg till och konfigurera Foundry Models för att lägga till en inbäddningsmodell i resursen.

    • Det här exemplet använder Cohere-embed-v3-english från Cohere.

Använda bildinbäddningar

Skapa först klienten för att använda modellen. I följande kod används en slutpunkts-URL och nyckel som lagras i miljövariabler.

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

Om du har konfigurerat resursen med Microsoft Entra ID-stöd kan du använda följande kodfragment för att skapa en klient. Observera att includeInteractiveCredentials är inställt true på endast i demonstrationssyfte så att autentisering kan ske med hjälp av webbläsaren. För produktionsarbetsbelastningar bör du ta bort parametern.

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

Skapa inbäddningar

Om du vill skapa avbildningsinbäddningar måste du skicka bilddata som en del av din begäran. Bilddata ska vara i PNG-format och kodas som base64.

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

Tips/Råd

När du skapar en begäran tar du hänsyn till tokens indatagräns för modellen. Om du behöver bädda in större delar av text behöver du en segmenteringsstrategi.

Svaret är följande, där du kan se modellens användningsstatistik:

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

Viktigt!

Databehandling av inbäddningar i batchar kanske inte stöds för alla modeller. Till exempel, för Cohere-embed-v3-english-modellen behöver du skicka en bild i taget.

Bädda in bilder och textpar

Vissa modeller kan generera inbäddningar från bilder och textpar. I det här fallet kan du använda fälten image och text i begäran för att skicka bilden och texten till modellen. I följande exempel visas hur du skapar inbäddningar för bilder och textpar:

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

Skapa olika typer av inbäddningar

Vissa modeller kan generera flera inbäddningar för samma indata beroende på hur du planerar att använda dem. Med den här funktionen kan du hämta mer exakta inbäddningar för RAG-mönster.

I följande exempel visas hur du skapar inbäddningar för ett dokument som ska lagras i en vektordatabas:

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

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

När du arbetar med en fråga för att hämta ett sådant dokument kan du använda följande kodfragment för att skapa inbäddningarna för frågan och maximera hämtningsprestandan.

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

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

Observera att inte alla inbäddningsmodeller stöder att ange inputtyp i förfrågan och i dessa fall returneras ett 422-fel.

Viktigt!

Objekt markerade (förhandsversion) i den här artikeln är för närvarande i offentlig förhandsversion. Den här förhandsversionen tillhandahålls utan ett serviceavtal och vi rekommenderar det inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller kan vara begränsade. Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.

Den här artikeln beskriver hur du använder API för bildinbäddning med Azure AI Foundry Models.

Förutsättningar

För att använda inbäddningsmodeller i din applikation behöver du:

  • Distribuering av en avbildningsmodell för bildinbäddningar. Om du inte redan har någon, läs Lägg till och konfigurera Foundry Models för att lägga till en inbäddningsmodell i resursen.

    • Det här exemplet använder Cohere-embed-v3-english från Cohere.

Använda bildinbäddningar

Om du vill använda textbäddningar använder du den väg /images/embeddings som läggs till i bas-URL:en tillsammans med dina autentiseringsuppgifter som anges i api-key. Authorization -huvudet stöds också med formatet 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>

Om du har konfigurerat resursen med Microsoft Entra ID-stöd, skickar du din token i Authorization-rubriken med formatet Bearer <token>. Använd omfång 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>

Användning av Microsoft Entra-ID kan kräva ytterligare konfiguration i resursen för att bevilja åtkomst. Lär dig hur du konfigurerar nyckellös autentisering med Microsoft Entra-ID.

Skapa inbäddningar

Om du vill skapa avbildningsinbäddningar måste du skicka bilddata som en del av din begäran. Bilddata ska vara i PNG-format och kodas som base64.

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

Tips/Råd

När du skapar en begäran tar du hänsyn till tokens indatagräns för modellen. Om du behöver bädda in större delar av text behöver du en segmenteringsstrategi.

Svaret är följande, där du kan se modellens användningsstatistik:

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

Viktigt!

Databehandling av inbäddningar i batchar kanske inte stöds för alla modeller. Till exempel, för Cohere-embed-v3-english-modellen behöver du skicka en bild i taget.

Bädda in bilder och textpar

Vissa modeller kan generera inbäddningar från bilder och textpar. I det här fallet kan du använda fälten image och text i begäran för att skicka bilden och texten till modellen. I följande exempel visas hur du skapar inbäddningar för bilder och textpar:

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

Skapa olika typer av inbäddningar

Vissa modeller kan generera flera inbäddningar för samma indata beroende på hur du planerar att använda dem. Med den här funktionen kan du hämta mer exakta inbäddningar för RAG-mönster.

I följande exempel visas hur du skapar inbäddningar som används för att skapa en inbäddning för ett dokument som ska lagras i en vektordatabas:

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

När du arbetar med en fråga för att hämta ett sådant dokument kan du använda följande kodfragment för att skapa inbäddningarna för frågan och maximera hämtningsprestandan.

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

Observera att inte alla inbäddningsmodeller stöder att ange inputtyp i förfrågan och i dessa fall returneras ett 422-fel.