Recuperación de imágenes mediante inserciones multimodales (versión 4.0)
Las API de inserción multimodal permiten la vectorización de imágenes y consultas de texto. Convierten imágenes en coordenadas en un espacio vectorial multidimensional. A continuación, las consultas de texto entrantes también se pueden convertir en vectores y las imágenes se pueden comparar con el texto en función de la proximidad semántica. Esto permite al usuario buscar en un conjunto de imágenes mediante texto, sin necesidad de usar etiquetas de imagen u otros metadatos. La proximidad semántica suele producir mejores resultados en la búsqueda.
La API 2024-02-01
incluye un modelo multilingüe que admite la búsqueda de texto en 102 idiomas. El modelo de solo inglés original sigue disponible, pero no se puede combinar con el nuevo modelo en el mismo índice de búsqueda. Si ha vectorizado texto e imágenes con el modelo de solo inglés, estos vectores no serán compatibles con vectores de imagen y texto multilingües.
Importante
Estas API solo están disponibles en determinadas regiones geográficas. Consulte Disponibilidad de la región.
Requisitos previos
- Una suscripción a Azure: cree una cuenta gratuita
- Una vez que tenga la suscripción de Azure, cree un recurso de Computer Vision en Azure Portal para obtener la clave y el punto de conexión. Asegúrese de crearlo en una de las regiones geográficas admitidas: consulte disponibilidad de región.
- Tras su implementación, seleccione Ir al recurso. Copie la clave y el punto de conexión en una ubicación temporal para usarlos más adelante.
Pruebe las inserciones multimodales
Puede probar la característica de inserciones multimodales de forma rápida y sencilla en el explorador mediante Vision Studio.
Importante
La experiencia de Vision Studio está limitada a 500 imágenes. Para usar un conjunto de imágenes mayor, cree su propia aplicación de búsqueda utilizando las API de esta guía.
Llamar a la API de vectorización de imágenes
La API retrieval:vectorizeImage
permite convertir los datos de una imagen en un vector. Para la llamada, realice estos cambios en el siguiente comando cURL:
- Reemplace
<endpoint>
por su punto de conexión de Visión de Azure AI. - Reemplace
<subscription-key>
por su clave de Visión de Azure AI. - En el cuerpo de la solicitud, establezca
"url"
como la dirección URL de una imagen remota que desea utilizar. - Opcionalmente, cambie el parámetro
model-version
a una versión anterior.2022-04-11
es el modelo heredado que solo admite texto en inglés. Las imágenes y el texto que se vectorizan con un modelo determinado no son compatibles con otros modelos, por lo que asegúrese de usar el mismo modelo para ambos.
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'
}"
Para vectorizar una imagen local, se ponen los datos binarios en el cuerpo de la solicitud HTTP.
La llamada API devuelve un objeto JSON vectorial, que define las coordenadas de la imagen en el espacio vectorial de alta dimensión.
{
"modelVersion": "2022-04-11",
"vector": [ -0.09442752, -0.00067171326, -0.010985051, ... ]
}
Llamar a la API de vectorización de textos
La API retrieval:vectorizeText
permite convertir una cadena de texto en un vector. Para la llamada, realice estos cambios en el siguiente comando cURL:
- Reemplace
<endpoint>
por su punto de conexión de Visión de Azure AI. - Reemplace
<subscription-key>
por su clave de Visión de Azure AI. - En el cuerpo de la solicitud, establezca
"text"
en el término de búsqueda de ejemplo que desea usar. - Opcionalmente, cambie el parámetro
model-version
a una versión anterior.2022-04-11
es el modelo heredado que solo admite texto en inglés. Las imágenes y el texto que se vectorizan con un modelo determinado no son compatibles con otros modelos, por lo que asegúrese de usar el mismo modelo para ambos.
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'
}"
La llamada API devuelve un objeto JSON vectorial, que define las coordenadas de la cadena de texto en el espacio vectorial de alta dimensión.
{
"modelVersion": "2022-04-11",
"vector": [ -0.09442752, -0.00067171326, -0.010985051, ... ]
}
Calcular similitud de vectores
La similitud de coseno es un método para medir la similitud de dos vectores. En un escenario de recuperación de imágenes, comparará el vector de consulta de búsqueda con cada vector de imagen. Las imágenes que están por encima de un umbral determinado de similitud se pueden devolver como resultados de búsqueda.
El siguiente código de ejemplo calcula la similitud de coseno entre dos vectores. Es necesario decidir qué umbral de similitud usar para devolver imágenes como resultados de búsqueda.
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);
}