Поделиться через


Навыки многомодального внедрения в azure AI Vision

Внимание

Этот навык находится в общедоступной предварительной версии в разделе "Дополнительные условия использования". REST API 2024-05-01-Preview и более новые api предварительной версии поддерживают эту функцию.

Навык многомодального внедрения в azure AI Vision использует API многомодальных внедрения azure AI Vision для создания внедрения изображений или текста.

Этот навык должен быть присоединен к оплачиваемому ресурсу Azure AI с несколькими службами для транзакций, превышающих 20 документов на индексатор в день. Выполнение встроенных навыков взимается по существующей цене служб ИИ Azure standard.

Кроме того, извлечение изображений взимается с помощью службы "Поиск ИИ Azure".

Расположение ресурсов является важным фактором. Так как вы используете предварительную версию API для создания набора навыков, содержащего навыки предварительного просмотра, у вас есть возможность бессерверного подключения, что упрощает требование региона. Однако если вы подключаетесь к ключу API, поиск Azure ИИ и многослужба Azure должны находиться в одном регионе.

Ресурс azure AI с несколькими службами используется только для выставления счетов. Обработка содержимого выполняется в отдельных ресурсах, управляемых и поддерживаемых поиском ИИ Azure в одном географическом регионе. Данные обрабатываются в географическом расположении, где развернут ресурс.

@odata.type

Microsoft.Skills.Vision.VectorizeSkill

Ограничения данных

Ограничения ввода для навыка можно найти в документации по Распознаванию искусственного интеллекта Azure для изображений и текста соответственно. Рекомендуется использовать навык разделения текста, если требуется фрагментирование данных для текстовых входных данных.

Применимые входные данные:

  • Размер входного файла изображения должен быть меньше 20 мегабайт (МБ). Размер изображения должен быть больше 10 x 10 пикселей и меньше 16 000 x 16 000 пикселей.
  • Строка ввода текста должна находиться между одним словом (включительно) и 70 словами.

Параметры навыков

Параметры зависят от регистра.

Входные данные Описание
modelVersion (обязательно) Версия модели (2023-04-15), передаваемая в API многомодальных внедрений azure AI Vision для создания внедрения. Векторные внедрения можно сравнить только и сопоставить, если они совпадают с тем же типом модели. Изображения, векторизированные одной моделью, нельзя будет найти, используя другую модель. Последняя версия API анализа изображений предлагает две модели, которая 2023-04-15 поддерживает поиск текста на многих языках и устаревшую 2022-04-11 модель, которая поддерживает только английский язык. Служба поиска ИИ Azure использует более новую версию.

Входные данные навыков

Входные данные определения навыка включают имя, источник и входные данные. В следующей таблице приведены допустимые значения для имени входных данных. Вы также можете указать рекурсивные входные данные. Дополнительные сведения см. в справочнике по REST API и создании набора навыков.

Входные данные Описание
text Векторизованный текст. Если вы используете блоки данных, источник может быть /document/pages/*.
image Сложный тип. В настоящее время используется только поле "/document/normalized_images", созданное индексатором BLOB-объектов Azure, если imageAction задано значение, отличное от noneзначения.
url URL-адрес для скачивания векторного изображения.
queryString Строка запроса URL-адреса для скачивания векторного изображения. Полезно при хранении URL-адреса и маркера SAS в отдельных путях.

Только один из textних image или url/queryString может быть настроен для одного экземпляра навыка. Если вы хотите векторизировать изображения и текст в одном наборе навыков, включите два экземпляра этого навыка в определение набора навыков, по одному для каждого типа ввода, который вы хотите использовать.

Выходные данные навыка

Выходные данные Описание
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"
        }
    ]
}

Пример полученных результатов

Для заданных входных данных создается векторизованный результат внедрения. Выходные данные составляют 1024 измерения, что является числом измерений, поддерживаемых многомодальным API Распознавания искусственного интеллекта Azure.

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

Выходные данные находятся в памяти. Чтобы отправить эти выходные данные в поле в индексе поиска, необходимо определить outputFieldMapping , который сопоставляет векторизованные выходные данные внедрения (массив) с полем вектора. Если выходные данные навыка находятся на узле вектора документа, а content_vector — это поле в индексе поиска, выходные данныеFieldMapping в индексаторе должны выглядеть следующим образом:

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

См. также