Azure OpenAI を使用して埋め込みを生成する

埋め込みは、テキストのセマンティックな意味を表す浮動小数点数のベクトルです。 同様のテキストでは、近いベクトルが生成されるため、埋め込みはベクター検索、推奨事項、分類、クラスタリングに役立ちます。

[前提条件]

  • Azure サブスクリプション。 お持ちでない場合は、無料で作成してください。
  • 埋め込みモデル デプロイを使用する Azure OpenAI リソース。
  • お客様のリソース エンドポイント(例: https://YOUR-RESOURCE-NAME.openai.azure.com)。
  • Microsoft Entra ID認証の場合、Azure OpenAI リソースに割り当てられたCognitive Services OpenAI User ロールを持つ ID。 詳細については、「Azure OpenAI のロールベースのアクセス制御」を参照してください。
  • ローカル認証のAzure CLI
  • 選択した言語のランタイムとパッケージ マネージャー。

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

各要求のmodel値は、Azure モデルのデプロイ名です。 例では、 text-embedding-3-smallを使用します。デプロイの名前が異なる場合は置き換えます。

埋め込みを生成する

埋め込みエンドポイントにテキストを送信し、応答の最初の項目からベクターを読み取ります。

v1 埋め込み API では、Microsoft Entra IDと API キー認証がサポートされています。 Microsoft Entra IDをお勧めします。有効期間が長い資格情報の格納を回避するためです。 この記事の例では、Microsoft Entra IDを使用します。

ローカル開発の場合は、SDK の例を実行する前に Azure にサインインします。

az login

DefaultAzureCredentialはサインイン ID をローカルで使用し、アプリケーションがAzureで実行されるときにマネージド ID を使用できます。

API キー認証もサポートされています。 キーベースのクライアント構成については、OpenAI v1 API ガイダンスAzure参照してください。

OpenAI と Azure ID パッケージをインストールします。

pip install openai azure-identity

埋め込みを生成し、その寸法を印刷します。

from openai import OpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

endpoint = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/"
token_provider = get_bearer_token_provider(
	DefaultAzureCredential(), "https://ai.azure.com/.default"
)
openai = OpenAI(
	base_url=endpoint,
	api_key=token_provider,
)

# Generate one embedding vector.
response = openai.embeddings.create(
	model="text-embedding-3-small",
	input="The quick brown fox jumped over the lazy dog.",
)
print(f"Embedding dimensions: {len(response.data[0].embedding)}")
Embedding dimensions: <number>

embeddings.create を参照してください。

ベスト プラクティス

Tip

入力トークンの 合計 が 300,000 を超えると、個々の入力が入力ごとの制限の下にある場合でも、埋め込み要求は HTTP 400 を返します。 大きなバッチをより小さな要求に分割します。

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

  • 現在の埋め込みモデルの最大入力長は 8,192 トークンです。 要求を送信する前に、各入力を確認します。
  • 単一の埋め込み要求で入力の配列を送信する場合、最大配列サイズは 2,048 です。
  • /embeddings 要求には、すべての入力に対して 300,000 トークンの集計制限があります。 この制限を超える要求は HTTP 400 で失敗します。
  • 1 分あたりの合計トークン数は、モデル デプロイに割り当てられているクォータより下に保持します。 現在の制限については、「OpenAI クォータと制限Azure」を参照してください。

トラブルシューティング

  • 401応答の場合は、もう一度サインインし、アクセス トークンが正しい対象ユーザーを使用していることを確認します。
  • 403応答の場合は、ID に Azure OpenAI リソースに割り当てられているCognitive Services OpenAI User ロールがあることを確認します。
  • 404応答の場合は、エンドポイントに/openai/v1/が含まれており、modelに有効なデプロイ名が含まれていることを確認します。
  • 400応答については、要求本文、各入力のトークン数、入力の数、集計トークン数を確認します。

制限事項とリスク

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

次のステップ