共用方式為


如何使用 Azure AI 模型推斷產生影像內嵌

重要

本文中標示為 (預覽) 的項目目前處於公開預覽狀態。 此預覽版本沒有服務等級協定,不建議將其用於生產工作負載。 可能不支援特定功能,或可能已經限制功能。 如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款

本文說明如何在 Azure AI Foundry 中使用影像內嵌 API 搭配部署至 Azure AI 模型推斷的模型。

必要條件

若要在應用程式中使用內嵌模型,您需要:

  • 映射內嵌模型部署。 如果您沒有模型,請閱讀 將模型新增並設定至 Azure AI 服務 ,以將內嵌模型新增至您的資源。

    • 此範例使用 Cohere-embed-v3-english Cohere。
  • 使用下列命令安裝 Azure AI 推斷套件:

    pip install -U azure-ai-inference
    

    提示

    深入了解 [Azure AI 推斷套件和參考]

使用內嵌

首先,建立用戶端以取用模型。 下列程式碼會使用儲存在環境變數中的端點 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 AI 服務 ,以將內嵌模型新增至您的資源。

    • 此範例使用 Cohere-embed-v3-english Cohere。
  • 使用下列命令安裝適用於 JavaScript 的 Azure 推斷連結庫:

    npm install @azure-rest/ai-inference
    

    提示

    深入了解 [Azure AI 推斷套件和參考]

使用內嵌

首先,建立用戶端以取用模型。 下列程式碼會使用儲存在環境變數中的端點 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 模型推斷的模型。

必要條件

若要在應用程式中使用內嵌模型,您需要:

使用內嵌

若要使用文字內嵌,請使用附加至基底 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 錯誤。