Azure OpenAI Embedding スキル
Azure OpenAI Embedding スキルは、Azure OpenAI リソースにデプロイされた埋め込みモデルに接続して、インデックス付けの間に埋め込みを生成します。 データは、モデルがデプロイされている geo で処理されます。
Azure portal のデータのインポートとベクトル化ウィザードでは、Azure OpenAI Embedding スキルを使用してコンテンツをベクトル化します。 ウィザードを実行し、生成されたスキルセットを確認して、モデルを埋め込むためのスキルがどのようにウィザードによって構築されるかを確認できます。
Note
このスキルは Azure OpenAI にバインドされており、既存の Azure OpenAI の従量課金制の価格で課金されます。
@odata.type
Microsoft.Skills.Text.AzureOpenAIEmbeddingSkill
データ制限
テキスト入力のサイズは最大で 8,000 トークンにする必要があります。 入力が、許可される最大値を超える場合、モデルによって無効な要求エラーがスローされます。 詳細については、Azure OpenAI のドキュメントでトークンの主要な概念に関するページを参照してください。 データ チャンクが必要な場合は、テキスト分割スキルの使用を検討してください。
スキルのパラメーター
パラメーターの大文字と小文字は区別されます。
入力 | 説明 |
---|---|
resourceUri |
モデル プロバイダー (この場合は Azure OpenAI リソース) の URI。 このパラメーターは、https://<resourcename>.openai.azure.com などのドメイン openai.azure.com を持つ URL のみをサポートします。 Azure OpenAI エンドポイントにドメイン cognitiveservices.azure.com を含む URL (https://<resourcename>.cognitiveservices.azure.com など) がある場合は、 openai.azure.com を含むを Azure OpenAI リソース用に最初に作成し、代わりにhttps://<resourcename>.openai.azure.com を使用する必要があります。 |
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 |
このプロパティは、スキルセットが 2024-05-01-preview または 2024-07-01 REST API を使用して作成される場合に必要です。 このプロパティを、resourceUri で指定して deploymentId で識別されたプロバイダーにデプロイされた Azure OpenAI 埋め込みモデルのデプロイ名に設定します。 現在サポートされている値は、text-embedding-ada-002 、text-embedding-3-large 、text-embedding-3-small です |
dimensions |
(省略可能。2024-05-01-preview REST API で導入されました)。 モデルが埋め込みディメンションの削減をサポートしている場合に生成する埋め込みのディメンション。 サポートされている範囲を次に示します。 指定しない場合、各モデルの最大ディメンションが既定値になります。 2023-10-01-preview を使用して作成されたスキルセットの場合、ディメンションは 1536 に固定されます。 |
modelName
でサポートされるディメンション
Azure OpenAI Embedding スキルでサポートされるディメンションは、構成されている modelName
によって異なります。
modelName |
最小ディメンション | 最大ディメンション |
---|---|---|
text-embedding-ada-002 | 1536 | 1536 |
text-embedding-3-large | 1 | 3072 |
text-embedding-3-small | 1 | 1536 |
スキルの入力
入力 | 説明 |
---|---|
text |
ベクター化する入力テキスト。 データ チャンクを使用している場合、ソースが /document/pages/* になる可能性があります。 |
スキルの出力
出力 | 説明 |
---|---|
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 制限によって、インデックス付けプロセスが不要に遅延しなくなります。
このスキルを使用した例と動作するコード サンプルについては、次のリンクを参照してください。
エラーと警告
条件 | 結果 |
---|---|
null または無効な URI | Error |
null または無効な deploymentID | Error |
テキストが空です | 警告 |
テキストが 8,000 トークンを超えています | Error |