次の方法で共有


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

Von Bedeutung

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

この記事では、Azure AI Foundry Models で画像埋め込み API を使用する方法について説明します。

[前提条件]

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

  • 画像埋め込みモデルのデプロイ。 ない場合は、「 Foundry モデルの追加と構成 」を参照して、埋め込みモデルをリソースに追加します。

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

画像埋め込みを使用する

まず、モデルを実行するクライアントを作成します。 次のコードでは、環境変数に格納されているエンドポイント URL とキーを使用しています。

import os
from azure.ai.inference import ImageEmbeddingsClient
from azure.core.credentials import AzureKeyCredential

client = ImageEmbeddingsClient(
    endpoint="https://<resource>.services.ai.azure.com/models",
    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

client = ImageEmbeddingsClient(
    endpoint="https://<resource>.services.ai.azure.com/models",
    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 = client.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)

Von Bedeutung

一括での埋め込みの計算は、すべてのモデルでサポートされていない場合があります。 たとえば、Cohere-embed-v3-english モデルの場合は、一度に 1 つの画像を送信する必要があります。

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

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

text_image_input= ImageEmbeddingInput.load(image_file="sample1.png", image_format="png")
text_image_input.text = "A cute baby sea otter"
response = client.embed(
    input=[ text_image_input ],
)

さまざまな種類の埋め込みを作成する

一部のモデルでは、予定している使用方法に応じて、同じ入力に対して複数の埋め込みを生成できます。 この機能を使用すると、RAG パターンのより正確な埋め込みを取得できます。

次の例は、ベクター データベースに保存されるドキュメントの埋め込みを作成するために使用される埋め込みを作成する方法を示しています。

from azure.ai.inference.models import EmbeddingInputType

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

クエリでこのようなドキュメントを取得する場合は、次のコード スニペットを使用してクエリの埋め込みを作成し、検索パフォーマンスを最大化できます。

from azure.ai.inference.models import EmbeddingInputType

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

すべての埋め込みモデルで要求内の入力の種類の指定がサポートされているわけではないことに注意してください。その場合、422 エラーが返されます。

Von Bedeutung

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

この記事では、Azure AI Foundry Models で画像埋め込み API を使用する方法について説明します。

[前提条件]

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

  • 次のコマンドを使用して、JavaScript 用 Azure 推論ライブラリをインストールします。

    npm install @azure-rest/ai-inference
    npm install @azure/core-auth
    npm install @azure/identity
    

    Node.jsを使用している場合は、 package.jsonで依存関係を構成できます。

    package.json

    {
      "name": "main_app",
      "version": "1.0.0",
      "description": "",
      "main": "app.js",
      "type": "module",
      "dependencies": {
        "@azure-rest/ai-inference": "1.0.0-beta.6",
        "@azure/core-auth": "1.9.0",
        "@azure/core-sse": "2.2.0",
        "@azure/identity": "4.8.0"
      }
    }
    
  • 次をインポートします。

    import ModelClient from "@azure-rest/ai-inference";
    import { isUnexpected } from "@azure-rest/ai-inference";
    import { createSseStream } from "@azure/core-sse";
    import { AzureKeyCredential } from "@azure/core-auth";
    import { DefaultAzureCredential } from "@azure/identity";
    
  • 画像埋め込みモデルのデプロイ。 ない場合は、Foundry Models の追加と構成を読み、リソースに埋め込みモデルを追加してください。

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

画像埋め込みを使用する

まず、モデルを実行するクライアントを作成します。 次のコードでは、環境変数に格納されているエンドポイント URL とキーを使用しています。

const client = ModelClient(
    "https://<resource>.services.ai.azure.com/models", 
    new AzureKeyCredential(process.env.AZURE_INFERENCE_CREDENTIAL)
);

Microsoft Entra ID サポートを使用してリソースを構成した場合は、次のコード スニペットを使用してクライアントを作成できます。

const clientOptions = { credentials: { "https://cognitiveservices.azure.com" } };

const client = ModelClient(
    "https://<resource>.services.ai.azure.com/models", 
    new DefaultAzureCredential()
    clientOptions,
);

埋め込みを作成する

画像埋め込みを作成するには、要求の一部として画像データを渡す必要があります。 画像データは 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 } ],
        model: "Cohere-embed-v3-english",
    }
});

ヒント

要求を作成するときは、モデルに対するトークンの入力制限を考慮してください。 テキストのより大きい部分を埋め込む必要がある場合は、チャンキング戦略が必要です。

応答は次のとおりです。モデルの使用状況の統計情報が表示されます。

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

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

Von Bedeutung

一括での埋め込みの計算は、すべてのモデルでサポートされていない場合があります。 たとえば、Cohere-embed-v3-english モデルの場合は、一度に 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
            }
        ],
        model: "Cohere-embed-v3-english",
    }
});

さまざまな種類の埋め込みを作成する

一部のモデルでは、予定している使用方法に応じて、同じ入力に対して複数の埋め込みを生成できます。 この機能を使用すると、RAG パターンのより正確な埋め込みを取得できます。

次の例は、ベクター データベースに保存されるドキュメントの埋め込みを作成するために使用される埋め込みを作成する方法を示しています。

var response = await client.path("/images/embeddings").post({
    body: {
        input: [ { image: image_data_base64 } ],
        input_type: "document",
        model: "Cohere-embed-v3-english",
    }
});

クエリでこのようなドキュメントを取得する場合は、次のコード スニペットを使用してクエリの埋め込みを作成し、検索パフォーマンスを最大化できます。

var response = await client.path("/images/embeddings").post({
    body: {
        input: [ { image: image_data_base64 } ],
        input_type: "query",
        model: "Cohere-embed-v3-english",
    }
});

すべての埋め込みモデルで要求内の入力の種類の指定がサポートされているわけではないことに注意してください。その場合、422 エラーが返されます。

イメージ埋め込みの使用は、Python、JavaScript、C#、または REST 要求のみを使用してサポートされます。

Von Bedeutung

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

この記事では、Azure AI Foundry Models で画像埋め込み API を使用する方法について説明します。

[前提条件]

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

  • 次のコマンドを使用して Azure AI 推論パッケージをインストールします。

    dotnet add package Azure.AI.Inference --prerelease
    
  • Entra ID を使用する場合は、次のパッケージも必要です。

    dotnet add package Azure.Identity
    
  • 画像埋め込みモデルのデプロイ。 ない場合は、「 Foundry モデルの追加と構成 」を参照して、埋め込みモデルをリソースに追加します。

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

画像埋め込みを使用する

まず、モデルを実行するクライアントを作成します。 次のコードでは、環境変数に格納されているエンドポイント URL とキーを使用しています。

ImageEmbeddingsClient client = new ImageEmbeddingsClient(
    new Uri("https://<resource>.services.ai.azure.com/models"),
    new AzureKeyCredential(Environment.GetEnvironmentVariable("AZURE_INFERENCE_CREDENTIAL"))
);

Microsoft Entra ID サポートを使用してリソースを構成した場合は、次のコード スニペットを使用してクライアントを作成できます。 includeInteractiveCredentialsはデモンストレーション目的でのみtrueに設定されているため、Web ブラウザーを使用して認証を行うことができます。 運用ワークロードの場合は、パラメーターを削除する必要があります。

TokenCredential credential = new DefaultAzureCredential(includeInteractiveCredentials: true);
AzureAIInferenceClientOptions clientOptions = new AzureAIInferenceClientOptions();
BearerTokenAuthenticationPolicy tokenPolicy = new BearerTokenAuthenticationPolicy(credential, new string[] { "https://cognitiveservices.azure.com/.default" });

clientOptions.AddPolicy(tokenPolicy, HttpPipelinePosition.PerRetry);

ImageEmbeddingsClient client = new ImageEmbeddingsClient(
    new Uri("https://<resource>.services.ai.azure.com/models"),
    credential,
    clientOptions
);

埋め込みを作成する

画像埋め込みを作成するには、要求の一部として画像データを渡す必要があります。 画像データは PNG 形式で、base64 でエンコードされている必要があります。

List<ImageEmbeddingInput> input = new List<ImageEmbeddingInput>
{
    ImageEmbeddingInput.Load(imageFilePath:"sampleImage.png", imageFormat:"png")
};

var requestOptions = new ImageEmbeddingsOptions()
{
    Input = input,
    Model = "Cohere-embed-v3-english"
};

Response<EmbeddingsResult> response = client.Embed(requestOptions);

ヒント

要求を作成するときは、モデルに対するトークンの入力制限を考慮してください。 テキストのより大きい部分を埋め込む必要がある場合は、チャンキング戦略が必要です。

応答は次のとおりです。モデルの使用状況の統計情報が表示されます。

foreach (EmbeddingItem item in response.Value.Data)
{
    List<float> embedding = item.Embedding.ToObjectFromJson<List<float>>();
    Console.WriteLine($"Index: {item.Index}, Embedding: <{string.Join(", ", embedding)}>");
}

Von Bedeutung

バッチでの埋め込みの計算は、すべてのモデルでサポートされていない場合があります。 たとえば、Cohere-embed-v3-english モデルの場合は、一度に 1 つの画像を送信する必要があります。

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

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

var image_input = ImageEmbeddingInput.Load(imageFilePath:"sampleImage.png", imageFormat:"png")
image_input.text = "A cute baby sea otter"

var requestOptions = new ImageEmbeddingsOptions()
{
    Input = new List<ImageEmbeddingInput>
    {
        image_input
    },
    Model = "Cohere-embed-v3-english"
};

Response<EmbeddingsResult> response = client.Embed(requestOptions);

さまざまな種類の埋め込みを作成する

一部のモデルでは、予定している使用方法に応じて、同じ入力に対して複数の埋め込みを生成できます。 この機能を使用すると、RAG パターンのより正確な埋め込みを取得できます。

次の例は、ベクター データベースに格納されるドキュメントの埋め込みを作成する方法を示しています。

var requestOptions = new EmbeddingsOptions()
{
    Input = image_input,
    InputType = EmbeddingInputType.DOCUMENT, 
    Model = "Cohere-embed-v3-english"
};

Response<EmbeddingsResult> response = client.Embed(requestOptions);

クエリでこのようなドキュメントを取得する場合は、次のコード スニペットを使用してクエリの埋め込みを作成し、検索パフォーマンスを最大化できます。

var requestOptions = new EmbeddingsOptions()
{
    Input = image_input,
    InputType = EmbeddingInputType.QUERY,
    Model = "Cohere-embed-v3-english"
};

Response<EmbeddingsResult> response = client.Embed(requestOptions);

すべての埋め込みモデルで要求内の入力の種類の指定がサポートされているわけではないことに注意してください。その場合、422 エラーが返されます。

Von Bedeutung

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

この記事では、Azure AI Foundry Models で画像埋め込み API を使用する方法について説明します。

[前提条件]

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

  • 画像埋め込みモデルのデプロイ。 ない場合は、Foundry Models の追加と構成を読み、リソースに埋め込みモデルを追加してください。

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

画像埋め込みを使用する

テキスト埋め込みを使用するには、/images/embeddings に示されている資格情報とともに、ベース URL に追加されたルート api-key を使用します。 Authorization ヘッダーは、形式 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>

Microsoft Entra ID のサポートを使用してリソースを構成した場合は、Authorization ヘッダーにBearer <token>形式のトークンを渡します。 スコープ https://cognitiveservices.azure.com/.defaultを使用します。

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

Microsoft Entra ID を使用するには、アクセス権を付与するためにリソースに追加の構成が必要になる場合があります。 Microsoft Entra ID を使用してキーレス認証を構成する方法について説明します。

埋め込みを作成する

画像埋め込みを作成するには、要求の一部として画像データを渡す必要があります。 画像データは PNG 形式で、base64 でエンコードされている必要があります。

{
    "model": "Cohere-embed-v3-english",
    "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
    }
}

Von Bedeutung

一括での埋め込みの計算は、すべてのモデルでサポートされていない場合があります。 たとえば、Cohere-embed-v3-english モデルの場合は、一度に 1 つの画像を送信する必要があります。

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

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

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

さまざまな種類の埋め込みを作成する

一部のモデルでは、予定している使用方法に応じて、同じ入力に対して複数の埋め込みを生成できます。 この機能を使用すると、RAG パターンのより正確な埋め込みを取得できます。

次の例は、ベクター データベースに保存されるドキュメントの埋め込みを作成するために使用される埋め込みを作成する方法を示しています。

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

クエリでこのようなドキュメントを取得する場合は、次のコード スニペットを使用してクエリの埋め込みを作成し、検索パフォーマンスを最大化できます。

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

すべての埋め込みモデルで要求内の入力の種類の指定がサポートされているわけではないことに注意してください。その場合、422 エラーが返されます。