AML スキル

Note

Azure AI 検索は、Azure ポータル、REST API、およびAzure SDKから使用できます。 また、Foundry IQ は、エンタープライズ コンテンツを、Microsoft Foundry ポータルのエージェントの再利用可能なアクセス許可に対応したナレッジ ベースに変換するマネージド ナレッジ レイヤーです。

重要

機能、またはマークされたプロパティ (プレビュー) は、サービス レベル アグリーメントの対象ではなく、運用環境のワークロードには推奨されず、一般公開される前に変更または制約される可能性があります。 Azure AI 検索 プレビューの用語は、スタンドアロンでも一般公開されている機能の一部でも、すべてのプレビュー機能に適用されます。

AML スキルを使用して、Microsoft Foundry モデル カタログ (プレビュー) またはカスタム Azure Machine Learning (AML) モデルからデプロイされたベース 埋め込みモデルを使用して AI エンリッチメントを拡張します。 データはモデルがデプロイされる Geo で処理されます。

スキルセットで AML スキルを指定すると、デプロイされたモデルが AI エンリッチメント パイプラインに統合されます。 AML スキルは、組み込みスキルでサポートされていない処理または推論を実行する場合に便利です。 たとえば、独自のモデルで埋め込みを生成し、エンリッチされたコンテンツにカスタム機械学習ロジックを適用します。

AML オンライン エンドポイントの場合は、安定した API バージョンまたは同等のAzure SDKを使用して AML スキルを呼び出します。 モデル カタログへの接続には、プレビュー API バージョンを使用します。

AML スキルの使用

他のスキルと同様に、AML スキルには入力と出力があります。 入力は、Foundry モデル カタログまたは AML オンライン エンドポイントからサーバーレス デプロイに JSON オブジェクトとして送信されます。 出力には、成功状態コード、JSON ペイロード、および AML スキル定義で指定されたパラメーターが含まれている必要があります。 その他の応答はエラーと見なされ、エンリッチメントは実行されません。

インデクサーは、次の HTTP 状態コードに対して 2 回再試行します。

  • 503 Service Unavailable
  • 429 Too Many Requests

Microsoft Foundry のモデルの AML スキル (プレビュー)

Azure AI 検索 には、モデル カタログへのクエリ時の接続向けの Microsoft Foundry モデル カタログ ベクターライザー (プレビュー) が用意されており、これは データのインポート ウィザードでも利用できます。 このベクタライザーをクエリに使用する場合、AML スキルは、モデル カタログからモデルを使用して埋め込みを生成するための インデックス作成に対応 します。

インデックス作成中、AML スキルはモデル カタログに接続してインデックスのベクトルを生成できます。 クエリ時に、クエリではベクター化を使用して同じモデルに接続し、テキスト文字列をベクター化できます。 インデックス作成とクエリに同じ埋め込みモデルが使用されるように、AML スキルと Microsoft Foundry モデル カタログ ベクターライザーを一緒に使用する必要があります。 詳細については、「 Foundry モデル カタログの埋め込みモデルを使用する」を参照してください。

データのインポート ウィザードを使用して、Foundry にデプロイされた埋め込みモデル用の AML スキルを含むスキルセットを生成することをお勧めします。 ウィザードでは、入力、出力、マッピングの AML スキル定義が生成され、コードを記述する前にモデルを簡単にテストできます。

前提 条件

@odata.type

Microsoft.Skills.Custom.AmlSkill

スキル パラメーター

パラメータは大文字・小文字を区別します。 使用するパラメーターは、 モデル プロバイダーに必要な認証 (ある場合) によって異なります。

パラメーター名 説明
uri (key 認証に必要)Microsoft Foundry モデル カタログからのサーバーレス デプロイのターゲット URI、または AML オンライン エンドポイントの スコアリング URI。 HTTPS URI スキームのみが許可されます。 モデル カタログでサポートされているモデル (サーバーレス デプロイのみ) は次のとおりです。
  • Cohere-embed-v3-英語
  • Cohere-embed-v3-多言語
  • Cohere-embed-v4
key ( キー認証に必要)モデル プロバイダーの API キー。
resourceId (トークン認証に必要)モデル プロバイダーのAzure Resource Manager リソース ID。 AML オンライン エンドポイントの場合は、subscriptions/{guid}/resourceGroups/{resource-group-name}/Microsoft.MachineLearningServices/workspaces/{workspace-name}/onlineendpoints/{endpoint_name} 形式を使用します。
region ( トークン認証の場合は省略可能)モデル プロバイダーがデプロイされているリージョン。 リージョンが検索サービスのリージョンと異なる場合に必要です。
timeout (省略可能)API 呼び出しを行う HTTP クライアントのタイムアウト。 これは、 ISO 8601 期間 値の制限されたサブセットである XSD "dayTimeDuration" 値として書式設定する必要があります。 たとえば、PT60S が 60 秒間行われます。 設定しない場合は、既定値の 30 秒が選択されます。 タイムアウトを 1 秒以上、最大 230 秒に設定できます。
degreeOfParallelism (省略可能)インデクサーが指定したエンドポイントと並行して行う呼び出しの数。 要求の負荷が高すぎる場合にエンドポイントが失敗する場合は、この値を小さくできます。 エンドポイントがより多くの要求を受け入れることができ、インデクサーのパフォーマンスを向上させる場合は、これを発生させることができます。 設定しない場合は、既定値の 5 が使用されます。 degreeOfParallelismは、最小 1 と最大 10 に設定できます。

認証

AML スキルには、次の 2 つの認証オプションがあります。

  • キーベースの認証: AML スキルからのスコアリング要求を認証するための静的キーを指定します。 この接続の uri パラメーターと key パラメーターを設定します。

  • トークン ベースの認証: Foundry ハブベースのプロジェクトまたは AML オンライン エンドポイントは、トークン ベースの認証を使用してデプロイされます。 Azure AI 検索 サービスには、管理 ID と、モデル プロバイダーに対するロールの割り当てが必要です。 その後、AML スキルは、検索サービス ID を使用して、静的キーを必要とせず、モデル プロバイダーに対して認証します。 検索サービス ID には 、所有者 ロールまたは 共同作成者 ロールが必要です。 resourceId パラメーターを設定し、検索サービスがモデル プロバイダーとは異なるリージョンにある場合は、region パラメーターを設定します。

スキルの入力

スキル入力は、ドキュメントクラッキング中に作成されるエンリッチドドキュメントのノードです。 たとえば、ルート ドキュメント、正規化されたイメージ、または BLOB の内容などです。 このスキルには定義済みの入力はありません。 入力の場合は、AML スキルの実行時に設定される 1 つ以上のノードを指定する必要があります。

スキルの出力

スキル出力は、スキルによって作成されたエンリッチメントされたドキュメントの新しいノードです。 このスキルには定義済みの出力はありません。 出力の場合は、AML スキルの JSON 応答から設定できるノードを指定する必要があります。

サンプル定義

  {
    "@odata.type": "#Microsoft.Skills.Custom.AmlSkill",
    "description": "A custom model that detects the language in a document.",
    "uri": "https://language-model.models.contoso.com/score",
    "context": "/document",
    "inputs": [
      {
        "name": "text",
        "source": "/document/content"
      }
    ],
    "outputs": [
      {
        "name": "detected_language_code"
      }
    ]
  }

入力 JSON 構造のサンプル

この JSON 構造体は、Foundry ハブ ベースのプロジェクトまたは AML オンライン エンドポイントに送信されるペイロードを表します。 構造体の最上位のフィールドは、スキル定義の inputs セクションで指定された "names" に対応します。 それらのフィールドの値は、それらのフィールドの「情報源」から取得されます。その情報源は、ドキュメント内のフィールドや別のスキルに由来することがあります。

{
  "text": "Este es un contrato en Inglés"
}

出力 JSON 構造のサンプル

出力は、Foundry ハブ ベースのプロジェクトまたは AML オンライン エンドポイントからの応答に対応します。 モデル プロバイダーは JSON ペイロードのみを返し ( Content-Type 応答ヘッダーを確認して検証)、フィールドが output の "names" に一致するエンリッチメントであり、その値がエンリッチメントと見なされるオブジェクトである必要があります。

{
    "detected_language_code": "es"
}

インラインシェーピングの例定義

  {
    "@odata.type": "#Microsoft.Skills.Custom.AmlSkill",
    "description": "A sample model that detects the language of sentence",
    "uri": "https://language-model.models.contoso.com/score",
    "context": "/document",
    "inputs": [
      {
        "name": "shapedText",
        "sourceContext": "/document",
        "inputs": [
            {
              "name": "content",
              "source": "/document/content"
            }
        ]
      }
    ],
    "outputs": [
      {
        "name": "detected_language_code"
      }
    ]
  }

インライン入力整形用のJSON構造

{
  "shapedText": { "content": "Este es un contrato en Inglés" }
}

インライン整形サンプルの出力JSON構造

{
    "detected_language_code": "es"
}

エラー ケース

Foundry ハブ ベースのプロジェクトまたは AML オンライン エンドポイントが使用できないか、または正常でない状態コードを送信しているだけでなく、次の場合はエラーと見なされます。

  • モデルプロバイダーは成功のステータスコードを返しますが、応答はapplication/jsonがないことを示しています。 したがって、応答は無効であり、エンリッチメントは実行されません。

  • モデル プロバイダーから無効な JSON が返されます。

モデル プロバイダーが使用できない場合、または HTTP エラーが返された場合は、HTTP エラーに関する使用可能な詳細を含むわかりやすいエラーがインデクサーの実行履歴に追加されます。