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:
Subskrypcja Azure. Jeśli używasz modeli GitHub, możesz uaktualnić środowisko i utworzyć subskrypcję platformy Azure w tym procesie. Przeczytaj artykuł Upgrade from GitHub Models to Azure AI model inference if's your case (Uaktualnianie modeli Usługi GitHub do wnioskowania modelu AI platformy Azure), jeśli tak jest.
Zasób usług AI platformy Azure. Aby uzyskać więcej informacji, zobacz Create an Azure AI Services resource (Tworzenie zasobu usług Azure AI Services).
Adres URL i klucz punktu końcowego.
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.
- W tym przykładzie użyto
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:
Subskrypcja Azure. Jeśli używasz modeli GitHub, możesz uaktualnić środowisko i utworzyć subskrypcję platformy Azure w tym procesie. Przeczytaj artykuł Upgrade from GitHub Models to Azure AI model inference if's your case (Uaktualnianie modeli Usługi GitHub do wnioskowania modelu AI platformy Azure), jeśli tak jest.
Zasób usług AI platformy Azure. Aby uzyskać więcej informacji, zobacz Create an Azure AI Services resource (Tworzenie zasobu usług Azure AI Services).
Adres URL i klucz punktu końcowego.
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.
- W tym przykładzie użyto
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:
Subskrypcja Azure. Jeśli używasz modeli GitHub, możesz uaktualnić środowisko i utworzyć subskrypcję platformy Azure w tym procesie. Przeczytaj artykuł Upgrade from GitHub Models to Azure AI model inference if's your case (Uaktualnianie modeli Usługi GitHub do wnioskowania modelu AI platformy Azure), jeśli tak jest.
Zasób usług AI platformy Azure. Aby uzyskać więcej informacji, zobacz Create an Azure AI Services resource (Tworzenie zasobu usług Azure AI Services).
Adres URL i klucz punktu końcowego.
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.
- W tym przykładzie użyto
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.