Dela via


Så här genererar du inbäddningar av avbildningar med Azure AI-modellinferens

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 inbäddning av avbildningar med modeller som distribuerats till Azure AI-modellinferens i Azure AI Foundry.

Förutsättningar

Om du vill använda inbäddningsmodeller i ditt program behöver du:

  • En distribution av en avbildningsmodell för inbäddningsmodeller. Om du inte har någon läser du Lägg till och konfigurera modeller i Azure AI-tjänster för att lägga till en inbäddningsmodell i resursen.

    • Det här exemplet använder Cohere-embed-v3-english från Cohere.
  • Installera Azure AI-slutsatsdragningspaketet med följande kommando:

    pip install -U azure-ai-inference
    

    Dricks

    Läs mer om Azure AI-slutsatsdragningspaketet och referensen.

Använda inbä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

model = ImageEmbeddingsClient(
    endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
    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

model = ImageEmbeddingsClient(
    endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
    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 = model.embed(
    input=[ image_input ],
)

Dricks

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. För modellen behöver du till exempel cohere-embed-v3 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 = model.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 = model.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 = model.embed(
    input=[ image_input ],
    input_type=EmbeddingInputType.QUERY,
)

Observera att inte alla inbäddningsmodeller stöder indatatypen i begäran 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 inbäddning av avbildningar med modeller som distribuerats till Azure AI-modellinferens i Azure AI Foundry.

Förutsättningar

Om du vill använda inbäddningsmodeller i ditt program behöver du:

  • En distribution av en avbildningsmodell för inbäddningsmodeller. Om du inte har någon läser du Lägg till och konfigurera modeller i Azure AI-tjänster för att lägga till en inbäddningsmodell i resursen.

    • Det här exemplet använder Cohere-embed-v3-english från Cohere.
  • Installera Azure Inference-biblioteket för JavaScript med följande kommando:

    npm install @azure-rest/ai-inference
    

    Dricks

    Läs mer om Azure AI-slutsatsdragningspaketet och referensen.

Använda inbä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 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"
);

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

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

Dricks

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. För modellen behöver du till exempel cohere-embed-v3 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
            }
        ]
    }
});

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("/embeddings").post({
    body: {
        input: [ { image: image_data_base64 } ],
        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.

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

Observera att inte alla inbäddningsmodeller stöder indatatypen i begäran och i dessa fall returneras ett 422-fel.

Kommentar

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

Kommentar

Användning av bildinbäddningar stöds endast med hjälp av Python-, JavaScript- 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 inbäddning av avbildningar med modeller som distribuerats till Azure AI-modellinferens i Azure AI Foundry.

Förutsättningar

Om du vill använda inbäddningsmodeller i ditt program behöver du:

Använda inbä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 Stöd för Microsoft Entra-ID skickar du token i Authorization rubriken:

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

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

Dricks

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. För modellen behöver du till exempel cohere-embed-v3 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 indatatypen i begäran och i dessa fall returneras ett 422-fel.