Извлечение изображений с помощью многомодальных внедрения (версия 4.0)
API-интерфейсы многомодальных внедрения обеспечивают векторизацию изображений и текстовых запросов. Они преобразуют изображения в координаты в многомерном векторном пространстве. Затем входящие текстовые запросы также можно преобразовать в векторы, а изображения можно сопоставить с текстом на основе семантической близости. Это позволяет пользователю искать набор изображений с помощью текста без необходимости использовать теги изображений или другие метаданные. Семантическая близость часто дает лучшие результаты в поиске.
2024-02-01
API включает многоязычную модель, которая поддерживает поиск текста на 102 языках. Исходная модель только на английском языке по-прежнему доступна, но ее нельзя объединить с новой моделью в том же индексе поиска. Если векторизованный текст и изображения с помощью модели только на английском языке, эти векторы не будут совместимы с многоязычным текстом и векторами изображений.
Внимание
Эти API доступны только в определенных географических регионах. См . сведения о доступности региона.
Необходимые компоненты
- Подписка Azure — создайте бесплатную учетную запись.
- После получения подписки Azure создайте ресурс Компьютерное зрение в портал Azure, чтобы получить ключ и конечную точку. Не забудьте создать его в одном из поддерживаемых географических регионов: см. статью "Доступность регионов".
- После развертывания ресурса выберите элемент Перейти к ресурсу. Скопируйте ключ и конечную точку во временное расположение, чтобы использовать его позже.
Попробуйте использовать многомодальные внедрения
Вы можете попробовать функцию многомодальных внедрения быстро и легко в браузере с помощью Vision Studio.
Внимание
Интерфейс Vision Studio ограничен 500 изображениями. Чтобы использовать более крупный набор изображений, создайте собственное приложение поиска с помощью API в этом руководстве.
Вызов API векторизации изображений
retrieval:vectorizeImage
API позволяет преобразовать данные изображения в вектор. Чтобы вызвать его, внесите следующие изменения в следующую команду cURL:
- Замените
<endpoint>
конечной точкой Azure AI Vision. - Замените
<subscription-key>
ключ распознавания искусственного интеллекта Azure. - В тексте запроса задайте
"url"
URL-адрес удаленного образа, который вы хотите использовать. - При необходимости измените
model-version
параметр на более раннюю версию.2022-04-11
— это устаревшая модель, которая поддерживает только английский текст. Изображения и текст, векторизованные с определенной моделью, несовместимы с другими моделями, поэтому обязательно используйте одну и ту же модель для обоих.
curl.exe -v -X POST "<endpoint>/computervision/retrieval:vectorizeImage?api-version=2024-02-01&model-version=2023-04-15" -H "Content-Type: application/json" -H "Ocp-Apim-Subscription-Key: <subscription-key>" --data-ascii "
{
'url':'https://learn.microsoft.com/azure/ai-services/computer-vision/media/quickstarts/presentation.png'
}"
Чтобы векторизировать локальное изображение, необходимо поместить двоичные данные в текст HTTP-запроса.
Вызов API возвращает векторный объект JSON, который определяет координаты изображения в пространстве высокомерных векторов.
{
"modelVersion": "2022-04-11",
"vector": [ -0.09442752, -0.00067171326, -0.010985051, ... ]
}
Вызов API векторизации текста
retrieval:vectorizeText
API позволяет преобразовать текстовую строку в вектор. Чтобы вызвать его, внесите следующие изменения в следующую команду cURL:
- Замените
<endpoint>
конечной точкой Azure AI Vision. - Замените
<subscription-key>
ключ распознавания искусственного интеллекта Azure. - В тексте запроса задайте
"text"
пример термина поиска, который вы хотите использовать. - При необходимости измените
model-version
параметр на более раннюю версию.2022-04-11
— это устаревшая модель, которая поддерживает только английский текст. Изображения и текст, векторизованные с определенной моделью, несовместимы с другими моделями, поэтому обязательно используйте одну и ту же модель для обоих.
curl.exe -v -X POST "<endpoint>/computervision/retrieval:vectorizeText?api-version=2024-02-01&model-version=2023-04-15" -H "Content-Type: application/json" -H "Ocp-Apim-Subscription-Key: <subscription-key>" --data-ascii "
{
'text':'cat jumping'
}"
Вызов API возвращает векторный объект JSON, который определяет координаты текстовой строки в пространстве высокомерных векторов.
{
"modelVersion": "2022-04-11",
"vector": [ -0.09442752, -0.00067171326, -0.010985051, ... ]
}
Вычисление сходства векторов
Косинус сходства — это метод измерения сходства двух векторов. В сценарии извлечения изображений вы сравниваете вектор поискового запроса с вектором каждого изображения. Затем изображения, превышающие определенное пороговое значение сходства, можно вернуть в качестве результатов поиска.
В следующем примере кода вычисляется сходство косинуса между двумя векторами. Это до вас, чтобы решить, какой порог сходства используется для возврата изображений в качестве результатов поиска.
public static float GetCosineSimilarity(float[] vector1, float[] vector2)
{
float dotProduct = 0;
int length = Math.Min(vector1.Length, vector2.Length);
for (int i = 0; i < length; i++)
{
dotProduct += vector1[i] * vector2[i];
}
float magnitude1 = Math.Sqrt(vector1.Select(x => x * x).Sum());
float magnitude2 = Math.Sqrt(vector2.Select(x => x * x).Sum());
return dotProduct / (magnitude1 * magnitude2);
}