如何使用 Azure AI 模型推斷產生影像內嵌
重要
本文中標示為 (預覽) 的項目目前處於公開預覽狀態。 此預覽版本沒有服務等級協定,不建議將其用於生產工作負載。 可能不支援特定功能,或可能已經限制功能。 如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款。
本文說明如何在 Azure AI Foundry 中使用影像內嵌 API 搭配部署至 Azure AI 模型推斷的模型。
必要條件
若要在應用程式中使用內嵌模型,您需要:
Azure 訂用帳戶。 如果您使用 GitHub Models,您可以升級您的體驗,並在程式中建立 Azure 訂用帳戶。 如果您的情況,請閱讀 從 GitHub 模型升級至 Azure AI 模型推斷 。
Azure AI 服務資源。 如需詳細資訊,請參閱 建立 Azure AI 服務資源。
端點 URL 和金鑰。
映射內嵌模型部署。 如果您沒有模型,請閱讀 將模型新增並設定至 Azure AI 服務 ,以將內嵌模型新增至您的資源。
- 此範例使用
Cohere-embed-v3-english
Cohere。
- 此範例使用
使用下列命令安裝 Azure AI 推斷套件:
pip install -U azure-ai-inference
使用內嵌
首先,建立用戶端以取用模型。 下列程式碼會使用儲存在環境變數中的端點 URL 和金鑰。
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"
)
如果您將資源設定為 Microsoft Entra ID 支援,您可以使用下列代碼段來建立用戶端。
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"
)
建立內嵌
若要建立映像內嵌,您必須在要求中傳遞影像數據。 影像數據應採用 PNG 格式,並編碼為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 ],
)
提示
建立要求時,請考慮到模型的令牌輸入限制。 如果您需要內嵌較大的文字部分,則需要區塊化策略。
回應如下,您可以在其中查看模型的使用量統計資料:
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)
重要
並非所有模型都支援以批次方式計算內嵌。 例如,針對 cohere-embed-v3
模型,您必須一次傳送一個影像。
內嵌影像和文字組
某些模型可以從影像和文字組產生內嵌。 在此情況下,您可以使用 image
要求中的 和 text
字段,將影像和文字傳遞至模型。 下列範例示範如何建立影像和文字組的內嵌:
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 ],
)
建立不同類型的內嵌
根據您打算如何使用這些模型,某些模型可以針對相同的輸入產生多個內嵌。 此功能可讓您針對 RAG 模式擷取更精確的內嵌。
下列範例示範如何建立內嵌,其用來建立將儲存在向量資料庫中之文件的內嵌:
from azure.ai.inference.models import EmbeddingInputType
response = model.embed(
input=[ image_input ],
input_type=EmbeddingInputType.DOCUMENT,
)
當您處理查詢以擷取這類文件時,您可以使用下列程式碼片段來建立查詢的內嵌,並將擷取效能最大化。
from azure.ai.inference.models import EmbeddingInputType
response = model.embed(
input=[ image_input ],
input_type=EmbeddingInputType.QUERY,
)
請注意,並非所有內嵌模型都支援指出要求中的輸入類型,而且在這些情況下會傳回 422 錯誤。
重要
本文中標示為 (預覽) 的項目目前處於公開預覽狀態。 此預覽版本沒有服務等級協定,不建議將其用於生產工作負載。 可能不支援特定功能,或可能已經限制功能。 如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款。
本文說明如何在 Azure AI Foundry 中使用影像內嵌 API 搭配部署至 Azure AI 模型推斷的模型。
必要條件
若要在應用程式中使用內嵌模型,您需要:
Azure 訂用帳戶。 如果您使用 GitHub Models,您可以升級您的體驗,並在程式中建立 Azure 訂用帳戶。 如果您的情況,請閱讀 從 GitHub 模型升級至 Azure AI 模型推斷 。
Azure AI 服務資源。 如需詳細資訊,請參閱 建立 Azure AI 服務資源。
端點 URL 和金鑰。
映射內嵌模型部署。 如果您沒有一個讀取 將模型新增並設定至 Azure AI 服務 ,以將內嵌模型新增至您的資源。
- 此範例使用
Cohere-embed-v3-english
Cohere。
- 此範例使用
使用下列命令安裝適用於 JavaScript 的 Azure 推斷連結庫:
npm install @azure-rest/ai-inference
使用內嵌
首先,建立用戶端以取用模型。 下列程式碼會使用儲存在環境變數中的端點 URL 和金鑰。
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"
);
如果您將資源設定為 Microsoft Entra ID 支援,您可以使用下列代碼段來建立用戶端。
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"
);
建立內嵌
若要建立映像內嵌,您必須在要求中傳遞影像數據。 影像數據應採用 PNG 格式,並編碼為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 } ],
}
});
提示
建立要求時,請考慮到模型的令牌輸入限制。 如果您需要內嵌較大的文字部分,則需要區塊化策略。
回應如下,您可以在其中查看模型的使用量統計資料:
if (isUnexpected(response)) {
throw response.body.error;
}
console.log(response.embedding);
console.log(response.body.model);
console.log(response.body.usage);
重要
並非所有模型都支援以批次方式計算內嵌。 例如,針對 cohere-embed-v3
模型,您必須一次傳送一個影像。
內嵌影像和文字組
某些模型可以從影像和文字組產生內嵌。 在此情況下,您可以使用 image
要求中的 和 text
字段,將影像和文字傳遞至模型。 下列範例示範如何建立影像和文字組的內嵌:
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
}
]
}
});
建立不同類型的內嵌
根據您打算如何使用這些模型,某些模型可以針對相同的輸入產生多個內嵌。 此功能可讓您針對 RAG 模式擷取更精確的內嵌。
下列範例示範如何建立內嵌,其用來建立將儲存在向量資料庫中之文件的內嵌:
var response = await client.path("/embeddings").post({
body: {
input: [ { image: image_data_base64 } ],
input_type: "document",
}
});
當您處理查詢以擷取這類文件時,您可以使用下列程式碼片段來建立查詢的內嵌,並將擷取效能最大化。
var response = await client.path("/embeddings").post({
body: {
input: [ { image: image_data_base64 } ],
input_type: "query",
}
});
請注意,並非所有內嵌模型都支援指出要求中的輸入類型,而且在這些情況下會傳回 422 錯誤。
注意
使用映像內嵌僅支援使用 Python、JavaScript 或 REST 要求。
注意
使用映像內嵌僅支援使用 Python、JavaScript 或 REST 要求。
重要
本文中標示為 (預覽) 的項目目前處於公開預覽狀態。 此預覽版本沒有服務等級協定,不建議將其用於生產工作負載。 可能不支援特定功能,或可能已經限制功能。 如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款。
本文說明如何在 Azure AI Foundry 中使用影像內嵌 API 搭配部署至 Azure AI 模型推斷的模型。
必要條件
若要在應用程式中使用內嵌模型,您需要:
Azure 訂用帳戶。 如果您使用 GitHub Models,您可以升級您的體驗,並在程式中建立 Azure 訂用帳戶。 如果您的情況,請閱讀 從 GitHub 模型升級至 Azure AI 模型推斷 。
Azure AI 服務資源。 如需詳細資訊,請參閱 建立 Azure AI 服務資源。
端點 URL 和金鑰。
映射內嵌模型部署。 如果您沒有一個讀取 將模型新增並設定至 Azure AI 服務 ,以將內嵌模型新增至您的資源。
- 此範例使用
Cohere-embed-v3-english
Cohere。
- 此範例使用
使用內嵌
若要使用文字內嵌,請使用附加至基底 URL 的路由 /images/embeddings
,以及 中 api-key
指示的認證。
Authorization
格式也支持 Bearer <key>
標頭。
POST https://<resource>.services.ai.azure.com/models/images/embeddings
Content-Type: application/json
api-key: <key>
如果您使用 Microsoft Entra ID 支援來設定資源,請在標頭中Authorization
傳遞令牌:
POST https://<resource>.services.ai.azure.com/models/images/embeddings
Content-Type: application/json
Authorization: Bearer <token>
建立內嵌
若要建立映像內嵌,您必須在要求中傳遞影像數據。 影像數據應採用 PNG 格式,並編碼為base64。
{
"model": "${varients-sample}",
"input": [
{
"image": "data:image/png;base64,iVBORw0KGgoAAAANSUh..."
}
]
}
提示
建立要求時,請考慮到模型的令牌輸入限制。 如果您需要內嵌較大的文字部分,則需要區塊化策略。
回應如下,您可以在其中查看模型的使用量統計資料:
{
"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
}
}
重要
並非所有模型都支援以批次方式計算內嵌。 例如,針對 cohere-embed-v3
模型,您必須一次傳送一個影像。
內嵌影像和文字組
某些模型可以從影像和文字組產生內嵌。 在此情況下,您可以使用 image
要求中的 和 text
字段,將影像和文字傳遞至模型。 下列範例示範如何建立影像和文字組的內嵌:
{
"model": "${varients-sample}",
"input": [
{
"image": "data:image/png;base64,iVBORw0KGgoAAAANSUh...",
"text": "A photo of a cat"
}
]
}
建立不同類型的內嵌
根據您打算如何使用這些模型,某些模型可以針對相同的輸入產生多個內嵌。 此功能可讓您針對 RAG 模式擷取更精確的內嵌。
下列範例示範如何建立內嵌,其用來建立將儲存在向量資料庫中之文件的內嵌:
{
"model": "${varients-sample}",
"input": [
{
"image": "data:image/png;base64,iVBORw0KGgoAAAANSUh..."
}
],
"input_type": "document"
}
當您處理查詢以擷取這類文件時,您可以使用下列程式碼片段來建立查詢的內嵌,並將擷取效能最大化。
{
"model": "${varients-sample}",
"input": [
{
"image": "data:image/png;base64,iVBORw0KGgoAAAANSUh..."
}
],
"input_type": "query"
}
請注意,並非所有內嵌模型都支援指出要求中的輸入類型,而且在這些情況下會傳回 422 錯誤。