Azure Vision マルチモーダル埋め込みスキル

Note

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

Important

このスキルは 補足利用規約のプレビュー段階です。 最新のプレビュー バージョンの スキルセット - 作成または更新 (REST API) では、この機能がサポートされています。

Azure Visionのマルチモーダル埋め込みスキルは、Foundry ToolsのAzure Visionのマルチモーダル埋め込みAPIを利用してテキストや画像入力の埋め込みを生成します。

1日あたり1人あたり20件を超えるトランザクションの場合、このスキルは請求可能なMicrosoft Foundryリソースをスキルセットに付与する必要があります。 組み込みスキルの実行は、既存の Foundry Tools標準価格で請求されます。 画像抽出も請求可能ですAzure AI 検索

Microsoft Foundryリソースは請求目的のみに使用されます。 コンテンツ処理はAzure AI 検索が管理・維持する別々のリソースで行われます。 データはリソースが展開される ジオ(Geo )で処理されます。

サポートされているリージョン

対応地域はモダリティやスキルがAzure Visionマルチモーダル埋め込みAPIとどのように連携するかによって異なります。

方法 Requirement
インポートデータ ウィザード
  1. Azure Visionでマルチモーダル埋め込みをサポートするregionを見つけてください。
  2. 領域がAzure AI 検索でAIエンrichmentをサポートしているか確認してください。
  3. 同じ地域でAzure AI 検索サービスとAzure AIマルチサービスアカウントを作成しましょう。
請求に鍵 ベースの接続 を使ったプログラム的
  1. Azure Visionでマルチモーダル埋め込みをサポートするregionを見つけてください。
  2. 領域がAzure AI 検索でAIエンrichmentをサポートしているか確認してください。
  3. 同じ地域内でAzure AI 検索サービスとMicrosoft Foundryリソースを作成しましょう。
プログラム的で、 請求にキーレス接続 を使った 同じ地域での要件はありません。 各サービスがある地域で、Azure AI 検索サービスとFoundryリソースMicrosoft作成してください。

@odata.type

Microsoft.Skills.Vision.VectorizeSkill

データ制限

スキルの入力制限は、画像とテキストの Azure Vision ドキュメントに記載されています。 テキスト入力にデータチャンクが必要なら、 テキスト 分割スキルの使用を検討してください。

該当する入力には以下が含まれます:

  • 画像入力ファイルのサイズは20メガバイト(MB)未満でなければなりません。 画像サイズは10×10ピクセル以上かつ16,000×16,000ピクセル未満でなければなりません。
  • テキスト入力文字列は1語から70語の間でなければなりません。

スキル パラメーター

パラメータは大文字・小文字を区別します。

入力 Description
modelVersion (必須)モデルバージョン(2023-04-15)は埋め込み生成のためにAzure Visionマルチモーダル埋め込みAPIに渡されます。 ベクトル埋め込みは、同じモデルタイプである場合にのみ比較・マッチングが可能です。 あるモデルでベクトル化された画像は、別のモデルでは検索できません。 最新の画像解析APIは2つのモデルを提供しています:
  • 2023-04-15バージョンは、多くの言語でテキスト検索に対応しています。 Azure AI 検索はこのバージョンを使用しています。
  • レガシー 2022-04-11 モデルは英語のみに対応しています。

スキルの入力

スキル定義の入力には名前、ソース、入力が含まれます。 以下の表は入力名の有効な値を示しています。 再帰入力を指定することもできます。 詳細については、 REST APIのリファレンススキルセットの作成をご覧ください。

入力 Description
text 入力テキストはベクター化されます。 もしデータチャンクを使っているなら、ソースは /document/pages/*かもしれません。
image 複合型。 現在は「/document/normalized_images」フィールドでのみ動作し、imageActionnone以外の値に設定されたときにAzureブロブインデクサーが生成します。
url 画像をベクター化するためのURLです。
queryString 画像をダウンロードするためのURLのクエリ文字列をベクター化します。 URLとSASトークンを別々のパスに保存するときに便利です。

スキルの単一のインスタンスに対して、 textimage 、または url/queryString のうち1つしか設定できません。 同じスキルセット内で画像とテキストの両方をベクトル化したい場合は、使いたい入力タイプごとにこのスキルのインスタンスを2つ、スキルセット定義に含めてください。

スキルの出力

アウトプット Description
vector 入力テキストや画像の浮動点数の埋め込み配列を出力します。

サンプル定義

テキスト入力として、以下の内容を持つブロブを考えます。

{
    "content": "Forests, grasslands, deserts, and mountains are all part of the Patagonian landscape that spans more than a million square  kilometers of South America."
}

テキスト入力の場合、スキルの定義はこんな感じかもしれません:

{ 
    "@odata.type": "#Microsoft.Skills.Vision.VectorizeSkill", 
    "context": "/document", 
    "modelVersion": "2023-04-15", 
    "inputs": [ 
        { 
            "name": "text", 
            "source": "/document/content" 
        } 
    ], 
    "outputs": [ 
        { 
            "name": "vector",
            "targetName": "text_vector"
        } 
    ] 
} 

画像入力については、同じスキルセット内の第二のスキル定義は次のようなものかもしれません。

{
    "@odata.type": "#Microsoft.Skills.Vision.VectorizeSkill",
    "context": "/document/normalized_images/*",
    "modelVersion": "2023-04-15", 
    "inputs": [
        {
            "name": "image",
            "source": "/document/normalized_images/*"
        }
    ],
    "outputs": [
        {
            "name": "vector",
            "targetName": "image_vector"
        }
    ]
}

インデックス作成時に画像を抽出するのではなく、Blobストレージのデータソースから直接画像をベクトル化したい場合は、スキル定義でURLを指定し、ストレージのセキュリティに応じてSASトークンを指定すべきです。 この場合、スキルの定義は次のようなものかもしれません。

{
    "@odata.type": "#Microsoft.Skills.Vision.VectorizeSkill",
    "context": "/document",
    "modelVersion": "2023-04-15", 
    "inputs": [
        {
            "name": "url",
            "source": "/document/metadata_storage_path"
        },
        {
            "name": "queryString",
            "source": "/document/metadata_storage_sas_token"
        }
    ],
    "outputs": [
        {
            "name": "vector",
            "targetName": "image_vector"
        }
    ]
}

サンプル出力

与えられた入力に対して、ベクトル化された埋め込み出力が生成されます。 出力は1,024次元で、これはAzure VisionマルチモーダルAPIがサポートする次元数です。

{
  "text_vector": [
        0.018990106880664825,
        -0.0073809814639389515,
        .... 
        0.021276434883475304,
      ]
}

出力はメモリ上にあります。 この出力を検索インデックス内のフィールドに送るには、ベクトル化された埋め込み出力(配列)をベクトルフィールドにマッピングするoutputFieldMappingを定義する必要があります。 スキル出力が文書の ベクター ノードにあり、 content_vector が検索インデックスのフィールドであると仮定すると、インデクサー内のoutputFieldMappingは以下のようになります。

  "outputFieldMappings": [
    {
      "sourceFieldName": "/document/vector/*",
      "targetFieldName": "content_vector"
    }
  ]

画像埋め込みをインデックスにマッピングするには 、インデックス投影を使用します。 indexProjectionsのペイロードは以下の例のようなものかもしれません。 image_content_vectorはインデックス内のフィールドで、normalized_images配列のベクトルに含まれる内容で埋められます。

"indexProjections": {
    "selectors": [
        {
            "targetIndexName": "myTargetIndex",
            "parentKeyFieldName": "ParentKey",
            "sourceContext": "/document/normalized_images/*",
            "mappings": [
                {
                    "name": "image_content_vector",
                    "source": "/document/normalized_images/*/vector"
                }
            ]
        }
    ]
}

こちらも参照ください