埋め込みを生成する方法について説明します

埋め込みは、機械学習モデルとアルゴリズムで簡単に使用できる特別な形式のデータ表現です。 埋め込みは、テキストのセマンティックな意味の情報密度の高い表現です。 各埋め込みは浮動小数点数のベクトルであり、ベクトル空間内の 2 つの埋め込み間の距離が、元の形式の 2 つの入力間のセマンティック類似性と相関します。 たとえば、2 つのテキストが似ている場合、それらのベクター表現も似ています。 埋め込みは、Azure Cosmos DB for NoSQLAzure SQL Database、およびAzure Database for PostgreSQL - Flexible Server などの Azure データベースでベクトル類似性検索を支えます。

[前提条件]

  • デプロイされた Azure OpenAI 埋め込みモデル。
  • あなたのリソースからの次の値。
    • エンドポイント (例: https://YOUR-RESOURCE-NAME.openai.azure.com/)。
    • API キー。
    • デプロイモデル名

言語固有のセットアップ ガイダンスについては、「Azure OpenAI でサポートされているプログラミング言語を参照してください。

埋め込みを取得する方法

テキストの埋め込みベクターを取得するには、次のコード スニペットに示すように、埋め込みエンドポイントに要求を行います。

Azure OpenAI 埋め込み API は現在、v1 API でのMicrosoft Entra IDをサポートしていません。 この記事の例では、API キー認証を使用します。

using OpenAI;
using OpenAI.Embeddings;
using System.ClientModel;

EmbeddingClient client = new(
    "text-embedding-3-small",
    credential: new ApiKeyCredential("API-KEY"),
    options: new OpenAIClientOptions()
    {

        Endpoint = new Uri("https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1")
    }
);

string input = "This is a test";

OpenAIEmbedding embedding = client.GenerateEmbedding(input);
ReadOnlyMemory<float> vector = embedding.ToFloats();
Console.WriteLine($"Embeddings: [{string.Join(", ", vector.ToArray())}]");

ベスト プラクティス

入力が最大長を超えていないことを確認する

  • 最新の埋め込みモデルの入力テキストの最大長は 8,192 トークンです。 要求を行う前に、入力がこの制限を超えないようにしてください。
  • 1 つの埋め込み要求で入力の配列を送信する場合、最大配列サイズは 2,048 です。
  • 1 つの要求で入力の配列を送信する場合は、要求の 1 分あたりのトークン数が、モデル デプロイによって割り当てられたクォータ制限を下回る必要があります。 既定では、最新の第 3 世代埋め込みモデルには、リージョンあたりの 350 K TPM の制限が適用されます。

トラブルシューティング

  • 401または403エラーが発生した場合は、API キーがリソースに対して有効であることを確認します。
  • 404 エラーが発生した場合は、エンドポイントに/openai/v1/ パスが含まれており、正しいベース URL を使用したかどうかを確認します。
  • 400 エラーが発生した場合は、modelがデプロイ名に設定されており、要求本文が有効な JSON であることを確認します。

制限事項とリスク

埋め込みモデルは信頼性が低い場合や、特定のケースで社会的リスクを引き起こす可能性があります。 軽減策なしで使用すると、損害が発生する可能性があります。 責任を持って使用にアプローチする方法の詳細については、 責任ある AI コンテンツを参照してください。

次のステップ