Azure OpenAI Embedding スキルは、Azure OpenAI リソースまたは Azure AI Foundry プロジェクトにデプロイされた埋め込みモデルに接続して、インデックス作成中に埋め込みを生成します。 データは、モデルがデプロイされている geo で処理されます。
Azure portal の データのインポート (新しい) ウィザード では、Azure OpenAI Embedding スキルを使用してコンテンツをベクター化します。 ウィザードを実行し、生成されたスキルセットを確認して、モデルを埋め込むためのスキルがどのようにウィザードによって構築されるかを確認できます。
Note
このスキルは Azure OpenAI にバインドされ、既存の Azure OpenAI Standard 価格で課金されます。
Prerequisites
Azure AI Foundry Models リソースまたは Azure AI Foundry プロジェクトの Azure OpenAI。
Azure OpenAI リソースには、などの
https://<resourcename>.openai.azure.com
が必要です。 Azure portal でリソースを作成した場合、このサブドメインはリソースのセットアップ中に自動的に生成されました。Azure AI Foundry プロジェクトには、
cognitiveservices.azure.com
ドメインを持つ Azure AI サービス エンドポイントが必要です。 Azure OpenAI 埋め込みモデルをプロジェクトにデプロイした後、openai.azure.com
ドメインを使用するようにエンドポイントを変更する必要があります。 たとえば、エンドポイントをhttps://<resourcename>.cognitiveservices.azure.com
からhttps://<resourcename>.openai.azure.com
に変更します。 その後、このスキルのresourceUri
プロパティに対して、この更新されたエンドポイントを使用できます。
リソースまたはプロジェクトにデプロイされた Azure OpenAI 埋め込みモデル 。
@odata.type
Microsoft.Skills.Text.AzureOpenAIEmbeddingSkill
データ制限
テキスト入力のサイズは最大で 8,000 トークンにする必要があります。 入力が、許可される最大値を超える場合、モデルによって無効な要求エラーがスローされます。 詳細については、Azure OpenAI のドキュメントでトークンの主要な概念に関するページを参照してください。 データ チャンクが必要な場合は、テキスト分割スキルの使用を検討してください。
スキルのパラメーター
パラメーターの大文字と小文字は区別されます。
Inputs | Description |
---|---|
resourceUri |
必須。 モデル プロバイダーの URI。 このパラメーターは、openai.azure.com など、https://<resourcename>.openai.azure.com ドメインを持つ URL のみをサポートします。 このフィールドは、Azure OpenAI リソースがプライベート エンドポイントの背後にデプロイされているか、仮想ネットワーク (VNet) 統合を使用している場合に必要です。
Azure API Management エンドポイントは、URL https://<resourcename>.azure-api.net でサポートされています。 共有プライベート リンクは、API Management エンドポイントではサポートされていません。 |
apiKey |
モデルのアクセスに使用されるシークレット キー。 キーを指定する場合は、authIdentity を空のままにします。
apiKey と authIdentity の両方を設定すると、接続で apiKey が使用されます。 |
deploymentId |
必須。 デプロイされた Azure OpenAI 埋め込みモデルの名前。 このモデルは、text-embedding-ada-002 などの埋め込みモデルである必要があります。 サポートされているモデルについては、Azure OpenAI モデルの一覧を参照してください。 |
authIdentity |
Azure OpenAI に接続するために検索サービスによって使用されるユーザー マネージド ID。
システムまたはユーザーのマネージド ID を使用できます。 システム マネージド ID を使用するには、 apiKey し、 authIdentity 空白のままにします。 システム マネージド ID が自動的に使用されます。 Azure OpenAI にテキストを送信するには、マネージド ID に Cognitive Services OpenAI ユーザー アクセス許可が必要です。 |
modelName |
必須。 このプロパティを、resourceUri で指定して deploymentId で識別されたプロバイダーにデプロイされた Azure OpenAI 埋め込みモデルのデプロイ名に設定します。 現在サポートされている値は、text-embedding-ada-002 、text-embedding-3-large 、text-embedding-3-small です |
dimensions |
Optional. モデルが一連のディメンションをサポートしていると仮定して、生成する埋め込みのディメンション。 サポートされている範囲を以下に示します。現在、text-embedding-3 モデル シリーズにのみ適用されます。 既定値は、各モデルの最大ディメンションです。 2023-10-01-preview 以前の REST API バージョンを使用して作成されたスキルセットの場合、ディメンションは 1536 で修正されます。 スキルで dimensions プロパティを設定する場合は、ベクトル フィールド定義のdimensions プロパティ同じ値に設定してください。 |
modelName
でサポートされるディメンション
Azure OpenAI Embedding スキルでサポートされるディメンションは、構成されている modelName
によって異なります。
modelName |
最小ディメンション | 最大寸法 |
---|---|---|
text-embedding-ada-002 | 1536 | 1536 |
text-embedding-3-large | 1 | 3072 |
text-embedding-3-small | 1 | 1536 |
スキルの入力
Input | Description |
---|---|
text |
ベクター化する入力テキスト。 データ チャンクを使用している場合、ソースが /document/pages/* になる可能性があります。 |
スキルの出力
Output | Description |
---|---|
embedding |
入力テキストのベクター化された埋め込み。 |
定義例
次のフィールドを持つレコードを検討してみます。
{
"content": "Microsoft released Windows 10."
}
スキル定義は次のようになります。
{
"@odata.type": "#Microsoft.Skills.Text.AzureOpenAIEmbeddingSkill",
"description": "Connects a deployed embedding model.",
"resourceUri": "https://my-demo-openai-eastus.openai.azure.com/",
"deploymentId": "my-text-embedding-ada-002-model",
"modelName": "text-embedding-ada-002",
"dimensions": 1536,
"inputs": [
{
"name": "text",
"source": "/document/content"
}
],
"outputs": [
{
"name": "embedding"
}
]
}
サンプル出力
指定された入力テキストに対して、ベクター化された埋め込み出力が生成されます。
{
"embedding": [
0.018990106880664825,
-0.0073809814639389515,
....
0.021276434883475304,
]
}
出力はメモリ内に存在します。 この出力を検索インデックスのフィールドに送信するには、ベクトル化された埋め込み出力 (配列) をベクトル フィールドにマップする outputFieldMapping を定義する必要があります。 スキルの出力がドキュメントの embedding ノードに存在し、content_vector が検索インデックス内のフィールドであると仮定すると、インデクサーの outputFieldMapping は次のようになります。
"outputFieldMappings": [
{
"sourceFieldName": "/document/embedding/*",
"targetFieldName": "content_vector"
}
]
ベスト プラクティス
このスキルを使用する場合に考慮すべきベスト プラクティスを次に示します。
Azure OpenAI TPM (1 分あたりのトークン数) の制限に達している場合は、クォータ制限に関するアドバイスを参照して、適切に対処できるようにします。 Azure OpenAI インスタンスのパフォーマンスの詳細については、Azure OpenAI 監視のドキュメントを参照してください。
このスキルに使用する Azure OpenAI 埋め込みモデルのデプロイは、クエリのベクトル化などの他のユース ケースで使用されるデプロイとは理想的には別である必要があります。 これにより、各デプロイが特定のユース ケースに合わせて調整され、パフォーマンスが最適化され、インデクサーとインデックス埋め込みの呼び出しからのトラフィックを簡単に識別できます。
Azure OpenAI インスタンスは、同じリージョン内にあるか、少なくとも AI 検索サービスがホストされているリージョンに地理的に近い場所にある必要があります。 これにより、待機時間が短縮され、サービス間のデータ転送速度が向上します。
クォータと制限のドキュメントで公開されている既定の Azure OpenAI TPM (1 分あたりのトークン数) よりも大きい制限がある場合は、Azure AI 検索チームでサポート ケースを開いて、適切に調整できるようにします。 これにより、より高い制限が存在する場合に、ドキュメントに記載された既定の TPM 制限によって、インデックス付けプロセスが不要に遅延しなくなります。
このスキルを使用した例と動作するコード サンプルについては、次のリンクを参照してください。
エラーと警告
Condition | Result |
---|---|
null または無効な URI | Error |
null または無効な deploymentID | Error |
テキストが空です | Warning |
テキストが 8,000 トークンを超えています | Error |