Sdílet prostřednictvím


Jak vygenerovat vkládání obrázků s využitím odvození modelu Azure AI

Důležité

Položky označené (Preview) v tomto článku jsou aktuálně ve verzi Public Preview. Tato verze Preview je poskytována bez smlouvy o úrovni služeb a nedoporučujeme ji pro produkční úlohy. Některé funkce se nemusí podporovat nebo mohou mít omezené možnosti. Další informace najdete v dodatečných podmínkách použití pro verze Preview v Microsoft Azure.

Tento článek vysvětluje, jak používat rozhraní API pro vkládání obrázků s modely nasazenými do odvozování modelu Azure AI v Azure AI Foundry.

Požadavky

Pokud chcete ve své aplikaci používat vložené modely, potřebujete:

  • Předplatné Azure. Pokud používáte modely GitHubu, můžete prostředí upgradovat a v procesu vytvořit předplatné Azure. Pokud se jedná o váš případ, přečtěte si upgrade z modelů GitHubu na odvození modelu Azure AI.

  • Prostředek služeb Azure AI Další informace najdete v tématu Vytvoření prostředku Azure AI Services.

  • Adresa URL a klíč koncového bodu.

    Snímek obrazovky znázorňující, jak získat adresu URL a klíč přidružený k prostředku

  • Nasazení modelu vkládání imagí. Pokud ho nemáte, přečtěte si článek Přidání a konfigurace modelů do služeb Azure AI a přidejte do prostředku model vkládání.

    • Tento příklad používá Cohere-embed-v3-english cohere.
  • Nainstalujte balíček odvození Azure AI pomocí následujícího příkazu:

    pip install -U azure-ai-inference
    

    Tip

    Přečtěte si další informace o balíčku a referenci pro odvození AI v Azure.

Použití vkládání

Nejprve vytvořte klienta, který bude model využívat. Následující kód používá adresu URL koncového bodu a klíč, které jsou uložené v proměnných prostředí.

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

Pokud jste nakonfigurovali prostředek na podporu Microsoft Entra ID , můžete k vytvoření klienta použít následující fragment kódu.

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

Vytváření vložených objektů

Pokud chcete vytvořit vkládání obrázků, musíte v rámci požadavku předat data obrázku. Data obrázků by měla být ve formátu PNG a kódována 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 ],
)

Tip

Při vytváření požadavku vezměte v úvahu vstupní limit tokenu pro model. Pokud potřebujete vložit větší části textu, budete potřebovat strategii vytváření bloků dat.

Odpověď je následující, kde vidíte statistiku využití 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)

Důležité

Výpočetní vkládání do dávek nemusí být podporováno pro všechny modely. Například pro cohere-embed-v3 model je třeba odeslat jeden obrázek najednou.

Vkládání obrázků a párů textu

Některé modely můžou generovat vkládání z obrázků a párů textu. V tomto případě můžete k předání obrázku a textu do modelu použít image pole a text pole v požadavku. Následující příklad ukazuje, jak vytvořit vkládání obrázků a párů textu:

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

Vytváření různých typů vkládání

Některé modely můžou generovat více vkládání pro stejný vstup v závislosti na tom, jak je plánujete použít. Tato funkce umožňuje načíst přesnější vkládání pro vzory RAG.

Následující příklad ukazuje, jak vytvořit vkládání, které se používají k vytvoření vkládání pro dokument, který bude uložen ve vektorové databázi:

from azure.ai.inference.models import EmbeddingInputType

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

Když pracujete na dotazu na načtení takového dokumentu, můžete pomocí následujícího fragmentu kódu vytvořit vkládání pro dotaz a maximalizovat výkon načítání.

from azure.ai.inference.models import EmbeddingInputType

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

Všimněte si, že ne všechny modely vkládání podporují indikující typ vstupu v požadavku a v těchto případech se vrátí chyba 422.

Důležité

Položky označené (Preview) v tomto článku jsou aktuálně ve verzi Public Preview. Tato verze Preview je poskytována bez smlouvy o úrovni služeb a nedoporučujeme ji pro produkční úlohy. Některé funkce se nemusí podporovat nebo mohou mít omezené možnosti. Další informace najdete v dodatečných podmínkách použití pro verze Preview v Microsoft Azure.

Tento článek vysvětluje, jak používat rozhraní API pro vkládání obrázků s modely nasazenými do odvozování modelu Azure AI v Azure AI Foundry.

Požadavky

Pokud chcete ve své aplikaci používat vložené modely, potřebujete:

  • Předplatné Azure. Pokud používáte modely GitHubu, můžete prostředí upgradovat a v procesu vytvořit předplatné Azure. Pokud se jedná o váš případ, přečtěte si upgrade z modelů GitHubu na odvození modelu Azure AI.

  • Prostředek služeb Azure AI Další informace najdete v tématu Vytvoření prostředku Azure AI Services.

  • Adresa URL a klíč koncového bodu.

    Snímek obrazovky znázorňující, jak získat adresu URL a klíč přidružený k prostředku

  • Nasazení modelu vkládání imagí. Pokud nemáte možnost Přidat a nakonfigurovat modely do služeb Azure AI, abyste do prostředku přidali model vkládání.

    • Tento příklad používá Cohere-embed-v3-english cohere.
  • Pomocí následujícího příkazu nainstalujte knihovnu Azure Inference pro JavaScript:

    npm install @azure-rest/ai-inference
    

    Tip

    Přečtěte si další informace o balíčku a referenci pro odvození AI v Azure.

Použití vkládání

Nejprve vytvořte klienta, který bude model využívat. Následující kód používá adresu URL koncového bodu a klíč, které jsou uložené v proměnných prostředí.

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

Pokud jste nakonfigurovali prostředek na podporu Microsoft Entra ID , můžete k vytvoření klienta použít následující fragment kódu.

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

Vytváření vložených objektů

Pokud chcete vytvořit vkládání obrázků, musíte v rámci požadavku předat data obrázku. Data obrázků by měla být ve formátu PNG a kódována 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 } ],
    }
});

Tip

Při vytváření požadavku vezměte v úvahu vstupní limit tokenu pro model. Pokud potřebujete vložit větší části textu, budete potřebovat strategii vytváření bloků dat.

Odpověď je následující, kde vidíte statistiku využití modelu:

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

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

Důležité

Výpočetní vkládání do dávek nemusí být podporováno pro všechny modely. Například pro cohere-embed-v3 model je třeba odeslat jeden obrázek najednou.

Vkládání obrázků a párů textu

Některé modely můžou generovat vkládání z obrázků a párů textu. V tomto případě můžete k předání obrázku a textu do modelu použít image pole a text pole v požadavku. Následující příklad ukazuje, jak vytvořit vkládání obrázků a párů textu:

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

Vytváření různých typů vkládání

Některé modely můžou generovat více vkládání pro stejný vstup v závislosti na tom, jak je plánujete použít. Tato funkce umožňuje načíst přesnější vkládání pro vzory RAG.

Následující příklad ukazuje, jak vytvořit vkládání, které se používají k vytvoření vkládání pro dokument, který bude uložen ve vektorové databázi:

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

Když pracujete na dotazu na načtení takového dokumentu, můžete pomocí následujícího fragmentu kódu vytvořit vkládání pro dotaz a maximalizovat výkon načítání.

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

Všimněte si, že ne všechny modely vkládání podporují indikující typ vstupu v požadavku a v těchto případech se vrátí chyba 422.

Poznámka:

Použití vkládání obrázků se podporuje jenom pomocí požadavků Pythonu, JavaScriptu nebo REST.

Poznámka:

Použití vkládání obrázků se podporuje jenom pomocí požadavků Pythonu, JavaScriptu nebo REST.

Důležité

Položky označené (Preview) v tomto článku jsou aktuálně ve verzi Public Preview. Tato verze Preview je poskytována bez smlouvy o úrovni služeb a nedoporučujeme ji pro produkční úlohy. Některé funkce se nemusí podporovat nebo mohou mít omezené možnosti. Další informace najdete v dodatečných podmínkách použití pro verze Preview v Microsoft Azure.

Tento článek vysvětluje, jak používat rozhraní API pro vkládání obrázků s modely nasazenými do odvozování modelu Azure AI v Azure AI Foundry.

Požadavky

Pokud chcete ve své aplikaci používat vložené modely, potřebujete:

  • Předplatné Azure. Pokud používáte modely GitHubu, můžete prostředí upgradovat a v procesu vytvořit předplatné Azure. Pokud se jedná o váš případ, přečtěte si upgrade z modelů GitHubu na odvození modelu Azure AI.

  • Prostředek služeb Azure AI Další informace najdete v tématu Vytvoření prostředku Azure AI Services.

  • Adresa URL a klíč koncového bodu.

    Snímek obrazovky znázorňující, jak získat adresu URL a klíč přidružený k prostředku

  • Nasazení modelu vkládání imagí. Pokud nemáte možnost Přidat a nakonfigurovat modely do služeb Azure AI, abyste do prostředku přidali model vkládání.

    • Tento příklad používá Cohere-embed-v3-english cohere.

Použití vkládání

Pokud chcete použít vkládání textu, použijte trasu /images/embeddings připojenou k základní adrese URL spolu s přihlašovacími údaji uvedenými v api-key. Authorization záhlaví je podporováno také ve formátu 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>

Pokud jste nakonfigurovali prostředek s podporou Microsoft Entra ID , předejte token v Authorization hlavičce:

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

Vytváření vložených objektů

Pokud chcete vytvořit vkládání obrázků, musíte v rámci požadavku předat data obrázku. Data obrázků by měla být ve formátu PNG a kódována jako base64.

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

Tip

Při vytváření požadavku vezměte v úvahu vstupní limit tokenu pro model. Pokud potřebujete vložit větší části textu, budete potřebovat strategii vytváření bloků dat.

Odpověď je následující, kde vidíte statistiku využití 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
    }
}

Důležité

Výpočetní vkládání do dávek nemusí být podporováno pro všechny modely. Například pro cohere-embed-v3 model je třeba odeslat jeden obrázek najednou.

Vkládání obrázků a párů textu

Některé modely můžou generovat vkládání z obrázků a párů textu. V tomto případě můžete k předání obrázku a textu do modelu použít image pole a text pole v požadavku. Následující příklad ukazuje, jak vytvořit vkládání obrázků a párů textu:

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

Vytváření různých typů vkládání

Některé modely můžou generovat více vkládání pro stejný vstup v závislosti na tom, jak je plánujete použít. Tato funkce umožňuje načíst přesnější vkládání pro vzory RAG.

Následující příklad ukazuje, jak vytvořit vkládání, které se používají k vytvoření vkládání pro dokument, který bude uložen ve vektorové databázi:

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

Když pracujete na dotazu na načtení takového dokumentu, můžete pomocí následujícího fragmentu kódu vytvořit vkládání pro dotaz a maximalizovat výkon načítání.

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

Všimněte si, že ne všechny modely vkládání podporují indikující typ vstupu v požadavku a v těchto případech se vrátí chyba 422.