次の方法で共有


Azure AI モデル推論を使用して画像埋め込みを生成する方法

重要

この記事で "(プレビュー)" と付記されている項目は、現在、パブリック プレビュー段階です。 このプレビューはサービス レベル アグリーメントなしで提供されており、運用環境ではお勧めしません。 特定の機能はサポート対象ではなく、機能が制限されることがあります。 詳しくは、Microsoft Azure プレビューの追加使用条件に関するページをご覧ください。

この記事では、Azure AI Foundry の Azure AI モデル推論にデプロイされたモデルで画像埋め込み API を使用する方法について説明します。

前提条件

アプリケーションで埋め込みモデルを使用するには、次のものが必要です。

埋め込みを使用する

まず、モデルを実行するクライアントを作成します。 次のコードでは、環境変数に格納されているエンドポイント 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 モデルの場合は、一度に 1 つの画像を送信する必要があります。

画像とテキストのペアを埋め込む

一部のモデルでは、画像とテキストのペアから埋め込みを生成できます。 この場合、要求の imagetext フィールドを使用して、画像とテキストをモデルに渡すことができます。 次の例は、画像とテキストのペアの埋め込みを作成する方法を示しています。

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 の Azure AI モデル推論にデプロイされたモデルで画像埋め込み API を使用する方法について説明します。

前提条件

アプリケーションで埋め込みモデルを使用するには、次のものが必要です。

埋め込みを使用する

まず、モデルを実行するクライアントを作成します。 次のコードでは、環境変数に格納されているエンドポイント 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 モデルの場合は、一度に 1 つの画像を送信する必要があります。

画像とテキストのペアを埋め込む

一部のモデルでは、画像とテキストのペアから埋め込みを生成できます。 この場合、要求の imagetext フィールドを使用して、画像とテキストをモデルに渡すことができます。 次の例は、画像とテキストのペアの埋め込みを作成する方法を示しています。

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 エラーが返されます。

Note

画像埋め込みの使用は、Python、JavaScript、または REST 要求の使用のみがサポートされています。

Note

画像埋め込みの使用は、Python、JavaScript、または REST 要求の使用のみがサポートされています。

重要

この記事で "(プレビュー)" と付記されている項目は、現在、パブリック プレビュー段階です。 このプレビューはサービス レベル アグリーメントなしで提供されており、運用環境ではお勧めしません。 特定の機能はサポート対象ではなく、機能が制限されることがあります。 詳しくは、Microsoft Azure プレビューの追加使用条件に関するページをご覧ください。

この記事では、Azure AI Foundry の Azure AI モデル推論にデプロイされたモデルで画像埋め込み API を使用する方法について説明します。

前提条件

アプリケーションで埋め込みモデルを使用するには、次のものが必要です。

  • 画像埋め込みモデルのデプロイ。 ない場合は、Azure AI サービスにモデルを追加して構成するに関するページを読んで、埋め込みモデルをリソースに追加してください。

    • この例では、Cohere の Cohere-embed-v3-english を使用します。

埋め込みを使用する

テキスト埋め込みを使用するには、api-key に示されている資格情報とともに、ベース URL に追加されたルート /images/embeddings を使用します。 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 モデルの場合は、一度に 1 つの画像を送信する必要があります。

画像とテキストのペアを埋め込む

一部のモデルでは、画像とテキストのペアから埋め込みを生成できます。 この場合、要求の imagetext フィールドを使用して、画像とテキストをモデルに渡すことができます。 次の例は、画像とテキストのペアの埋め込みを作成する方法を示しています。

{
    "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 エラーが返されます。