Udostępnij za pośrednictwem


Jak wygenerować osadzanie obrazów za pomocą wnioskowania modelu AI platformy Azure

Ważne

Elementy oznaczone (wersja zapoznawcza) w tym artykule są obecnie dostępne w publicznej wersji zapoznawczej. Ta wersja zapoznawcza jest udostępniana bez umowy dotyczącej poziomu usług i nie zalecamy korzystania z niej w przypadku obciążeń produkcyjnych. Niektóre funkcje mogą być nieobsługiwane lub ograniczone. Aby uzyskać więcej informacji, zobacz Uzupełniające warunki korzystania z wersji zapoznawczych platformy Microsoft Azure.

W tym artykule wyjaśniono, jak używać interfejsu API osadzania obrazów z modelami wdrożonym w wnioskowaniu modelu AI platformy Azure w narzędziu Azure AI Foundry.

Wymagania wstępne

Aby użyć modeli osadzania w aplikacji, potrzebne są następujące elementy:

  • Wdrożenie modelu osadzania obrazu. Jeśli go nie masz, przeczytaj artykuł Dodawanie i konfigurowanie modeli w usługach azure AI w celu dodania modelu osadzania do zasobu.

    • W tym przykładzie użyto Cohere-embed-v3-english narzędzia Cohere.
  • Zainstaluj pakiet wnioskowania usługi Azure AI za pomocą następującego polecenia:

    pip install -U azure-ai-inference
    

    Napiwek

    Dowiedz się więcej na temat pakietu wnioskowania i dokumentacji dotyczącej wnioskowania na platformie Azure.

Korzystanie z osadzania

Najpierw utwórz klienta, aby korzystać z modelu. Poniższy kod używa adresu URL punktu końcowego i klucza przechowywanego w zmiennych środowiskowych.

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

Jeśli zasób został skonfigurowany do obsługi identyfikatora Entra firmy Microsoft, możesz użyć następującego fragmentu kodu, aby utworzyć klienta.

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

Tworzenie osadzania

Aby utworzyć osadzanie obrazów, musisz przekazać dane obrazu w ramach żądania. Dane obrazów powinny być w formacie PNG i zakodowane jako 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 ],
)

Napiwek

Podczas tworzenia żądania należy wziąć pod uwagę limit danych wejściowych tokenu dla modelu. Jeśli musisz osadzić większe fragmenty tekstu, potrzebujesz strategii fragmentowania.

Odpowiedź jest następująca, gdzie można zobaczyć statystyki użycia modelu:

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)

Ważne

Przetwarzanie osadzania w partiach może nie być obsługiwane dla wszystkich modeli. Na przykład w przypadku cohere-embed-v3 modelu należy wysłać jeden obraz jednocześnie.

Osadzanie obrazów i par tekstowych

Niektóre modele mogą generować osadzanie na podstawie obrazów i par tekstowych. W takim przypadku możesz użyć image pól i text w żądaniu, aby przekazać obraz i tekst do modelu. W poniższym przykładzie pokazano, jak utworzyć osadzanie dla obrazów i par tekstowych:

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

Tworzenie różnych typów osadzania

Niektóre modele mogą generować wiele osadzeń dla tych samych danych wejściowych w zależności od tego, jak planujesz ich używać. Ta funkcja umożliwia pobieranie bardziej dokładnych osadzeń dla wzorców RAG.

W poniższym przykładzie pokazano, jak utworzyć osadzanie, które są używane do tworzenia osadzania dla dokumentu, który będzie przechowywany w bazie danych wektorów:

from azure.ai.inference.models import EmbeddingInputType

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

Podczas pracy nad zapytaniem w celu pobrania takiego dokumentu możesz użyć następującego fragmentu kodu, aby utworzyć osadzanie dla zapytania i zmaksymalizować wydajność pobierania.

from azure.ai.inference.models import EmbeddingInputType

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

Zwróć uwagę, że nie wszystkie modele osadzania obsługują typ danych wejściowych w żądaniu i w tych przypadkach zwracany jest błąd 422.

Ważne

Elementy oznaczone (wersja zapoznawcza) w tym artykule są obecnie dostępne w publicznej wersji zapoznawczej. Ta wersja zapoznawcza jest udostępniana bez umowy dotyczącej poziomu usług i nie zalecamy korzystania z niej w przypadku obciążeń produkcyjnych. Niektóre funkcje mogą być nieobsługiwane lub ograniczone. Aby uzyskać więcej informacji, zobacz Uzupełniające warunki korzystania z wersji zapoznawczych platformy Microsoft Azure.

W tym artykule wyjaśniono, jak używać interfejsu API osadzania obrazów z modelami wdrożonym w wnioskowaniu modelu AI platformy Azure w narzędziu Azure AI Foundry.

Wymagania wstępne

Aby użyć modeli osadzania w aplikacji, potrzebne są następujące elementy:

  • Wdrożenie modelu osadzania obrazu. Jeśli nie masz jednego artykułu Dodawanie i konfigurowanie modeli w usługach Azure AI w celu dodania modelu osadzania do zasobu.

    • W tym przykładzie użyto Cohere-embed-v3-english narzędzia Cohere.
  • Zainstaluj bibliotekę wnioskowania platformy Azure dla języka JavaScript za pomocą następującego polecenia:

    npm install @azure-rest/ai-inference
    

    Napiwek

    Dowiedz się więcej na temat pakietu wnioskowania i dokumentacji dotyczącej wnioskowania na platformie Azure.

Korzystanie z osadzania

Najpierw utwórz klienta, aby korzystać z modelu. Poniższy kod używa adresu URL punktu końcowego i klucza przechowywanego w zmiennych środowiskowych.

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

Jeśli zasób został skonfigurowany do obsługi identyfikatora Entra firmy Microsoft, możesz użyć następującego fragmentu kodu, aby utworzyć klienta.

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

Tworzenie osadzania

Aby utworzyć osadzanie obrazów, musisz przekazać dane obrazu w ramach żądania. Dane obrazów powinny być w formacie PNG i zakodowane jako 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 } ],
    }
});

Napiwek

Podczas tworzenia żądania należy wziąć pod uwagę limit danych wejściowych tokenu dla modelu. Jeśli musisz osadzić większe fragmenty tekstu, potrzebujesz strategii fragmentowania.

Odpowiedź jest następująca, gdzie można zobaczyć statystyki użycia modelu:

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

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

Ważne

Przetwarzanie osadzania w partiach może nie być obsługiwane dla wszystkich modeli. Na przykład w przypadku cohere-embed-v3 modelu należy wysłać jeden obraz jednocześnie.

Osadzanie obrazów i par tekstowych

Niektóre modele mogą generować osadzanie na podstawie obrazów i par tekstowych. W takim przypadku możesz użyć image pól i text w żądaniu, aby przekazać obraz i tekst do modelu. W poniższym przykładzie pokazano, jak utworzyć osadzanie dla obrazów i par tekstowych:

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

Tworzenie różnych typów osadzania

Niektóre modele mogą generować wiele osadzeń dla tych samych danych wejściowych w zależności od tego, jak planujesz ich używać. Ta funkcja umożliwia pobieranie bardziej dokładnych osadzeń dla wzorców RAG.

W poniższym przykładzie pokazano, jak utworzyć osadzanie, które są używane do tworzenia osadzania dla dokumentu, który będzie przechowywany w bazie danych wektorów:

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

Podczas pracy nad zapytaniem w celu pobrania takiego dokumentu możesz użyć następującego fragmentu kodu, aby utworzyć osadzanie dla zapytania i zmaksymalizować wydajność pobierania.

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

Zwróć uwagę, że nie wszystkie modele osadzania obsługują typ danych wejściowych w żądaniu i w tych przypadkach zwracany jest błąd 422.

Uwaga

Korzystanie z osadzania obrazów jest obsługiwane tylko przy użyciu języka Python, języka JavaScript lub żądań REST.

Uwaga

Korzystanie z osadzania obrazów jest obsługiwane tylko przy użyciu języka Python, języka JavaScript lub żądań REST.

Ważne

Elementy oznaczone (wersja zapoznawcza) w tym artykule są obecnie dostępne w publicznej wersji zapoznawczej. Ta wersja zapoznawcza jest udostępniana bez umowy dotyczącej poziomu usług i nie zalecamy korzystania z niej w przypadku obciążeń produkcyjnych. Niektóre funkcje mogą być nieobsługiwane lub ograniczone. Aby uzyskać więcej informacji, zobacz Uzupełniające warunki korzystania z wersji zapoznawczych platformy Microsoft Azure.

W tym artykule wyjaśniono, jak używać interfejsu API osadzania obrazów z modelami wdrożonym w wnioskowaniu modelu AI platformy Azure w narzędziu Azure AI Foundry.

Wymagania wstępne

Aby użyć modeli osadzania w aplikacji, potrzebne są następujące elementy:

  • Wdrożenie modelu osadzania obrazu. Jeśli nie masz jednego artykułu Dodawanie i konfigurowanie modeli w usługach Azure AI w celu dodania modelu osadzania do zasobu.

    • W tym przykładzie użyto Cohere-embed-v3-english narzędzia Cohere.

Korzystanie z osadzania

Aby użyć osadzania tekstu, użyj trasy /images/embeddings dołączonej do podstawowego adresu URL wraz z poświadczeniami wskazanymi w pliku api-key. Authorization nagłówek jest również obsługiwany w formacie 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>

Jeśli skonfigurowano zasób z obsługą identyfikatora Entra firmy Microsoft, przekaż token w nagłówkuAuthorization:

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

Tworzenie osadzania

Aby utworzyć osadzanie obrazów, musisz przekazać dane obrazu w ramach żądania. Dane obrazów powinny być w formacie PNG i zakodowane jako base64.

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

Napiwek

Podczas tworzenia żądania należy wziąć pod uwagę limit danych wejściowych tokenu dla modelu. Jeśli musisz osadzić większe fragmenty tekstu, potrzebujesz strategii fragmentowania.

Odpowiedź jest następująca, gdzie można zobaczyć statystyki użycia modelu:

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

Ważne

Przetwarzanie osadzania w partiach może nie być obsługiwane dla wszystkich modeli. Na przykład w przypadku cohere-embed-v3 modelu należy wysłać jeden obraz jednocześnie.

Osadzanie obrazów i par tekstowych

Niektóre modele mogą generować osadzanie na podstawie obrazów i par tekstowych. W takim przypadku możesz użyć image pól i text w żądaniu, aby przekazać obraz i tekst do modelu. W poniższym przykładzie pokazano, jak utworzyć osadzanie dla obrazów i par tekstowych:

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

Tworzenie różnych typów osadzania

Niektóre modele mogą generować wiele osadzeń dla tych samych danych wejściowych w zależności od tego, jak planujesz ich używać. Ta funkcja umożliwia pobieranie bardziej dokładnych osadzeń dla wzorców RAG.

W poniższym przykładzie pokazano, jak utworzyć osadzanie, które są używane do tworzenia osadzania dla dokumentu, który będzie przechowywany w bazie danych wektorów:

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

Podczas pracy nad zapytaniem w celu pobrania takiego dokumentu możesz użyć następującego fragmentu kodu, aby utworzyć osadzanie dla zapytania i zmaksymalizować wydajność pobierania.

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

Zwróć uwagę, że nie wszystkie modele osadzania obsługują typ danych wejściowych w żądaniu i w tych przypadkach zwracany jest błąd 422.