次の方法で共有


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

重要

このスキルは、 使用条件のパブリック プレビュー段階にあります。 2024-05-01-Preview REST API 以降のプレビュー API では、この機能がサポートされています。

Azure AI Vision マルチモーダル埋め込みは、Azure AI Vision のマルチモーダル埋め込みの API を使用して、画像またはテキスト入力用の埋め込みを生成するスキルです。

このスキルは、インデクサーあたり 1 日あたり 20 ドキュメントを超えるトランザクションに対して 課金対象の Azure AI マルチサービス リソースにアタッチ する必要があります。 組み込みスキルの実行は、既存の Azure AI サービス Standard 価格で課金されます。

さらに、画像抽出は Azure AI Searchによって課金

リソースの場所は重要な考慮事項です。 プレビュー API バージョンを使用して、プレビュー スキルを含むスキルセットを作成しているため、 キーレス接続のオプションを使用できるため、リージョンの要件が緩和されます。 ただし、API キーを使用して接続する場合は、Azure AI Search と Azure AI マルチサービスが同じリージョンに存在する必要があります。

Azure AI マルチサービス リソースは、課金目的でのみ使用されます。 コンテンツ処理は、同じ geo 内で Azure AI Search によって管理および管理される個別のリソースで発生します。 データは、リソースがデプロイされている Geo で処理されます。

@odata.type

Microsoft.Skills.Vision.VectorizeSkill

データ制限

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

該当する入力は次のとおりです。

  • イメージ入力ファイルのサイズは 20 メガバイト (MB) 未満にする必要があります。 イメージ サイズは、10 x 10 ピクセルより大きく、16,000 x 16,000 ピクセル未満である必要があります。
  • テキスト入力文字列は、1 単語から 70 単語までの範囲で指定する必要があります。

スキルのパラメーター

パラメーターの大文字と小文字は区別されます。

入力 説明
modelVersion (必須)埋め込みを生成するために Azure AI Vision マルチモーダル埋め込み API に渡されるモデル バージョン (2023-04-15)。 ベクター埋め込みを比較および照合できるのは、同じモデル型の場合のみです。 あるモデルによってベクター化された画像は、別のモデルでは検索できません。 最新の Image Analysis API には、多くの言語でのテキスト検索をサポートするバージョン 2023-04-15 と、英語のみをサポートする従来の 2022-04-11 モデルの 2 つのモデルが用意されています。 Azure AI Search では、新しいバージョンが使用されます。

スキルの入力

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

入力 説明
text ベクター化する入力テキスト。 データ チャンクを使用している場合、ソースが /document/pages/* になる可能性があります。
image 複合型。 現在は "/document/normalized_images" フィールドでのみ機能し、imageActionnone 以外の値に設定されている場合に、Azure BLOB インデクサーによって生成されます。
url ベクトル化する画像をダウンロードする URL。
queryString ベクトル化する画像をダウンロードする URL のクエリ文字列。 URL と SAS トークンを別々のパスに格納する場合に便利です。

スキルの 1 つのインスタンスに対して構成できるのは、textimage、または url/queryString のいずれか 1 つだけです。 同じスキルセット内の画像とテキストの両方をベクトル化する場合は、スキルセット定義にこのスキルの 2 つのインスタンスを含めます。使用する入力の種類ごとに 1 つずつです。

スキルの出力

出力 説明
vector 入力テキストまたは画像の float の配列を埋め込む出力。

定義例

テキスト入力の場合は、次の内容を含む BLOB を検討してください。

{
    "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"
        } 
    ] 
} 

画像入力の場合、同じスキルセット内の 2 つ目のスキル定義は次のようになります。

{
    "@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 AI 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"
                }
            ]
        }
    ]
}

関連項目