Búsqueda semántica multimodal con imágenes y texto
Como humanos, interpretamos el mundo a través de nuestros sentidos. Oímos sonidos, vemos imágenes, vídeos y textos, a menudo superpuestos. Entendemos el mundo a través de estas múltiples modalidades y de la relación entre ellas. Para que la inteligencia artificial iguale o supere realmente las capacidades humanas, debe desarrollar esta misma capacidad de entender el mundo a través de múltiples lentes simultáneamente.
En este artículo, junto con el vídeo que lo acompaña (próximamente) y el cuaderno, mostraremos los últimos avances en modelos capaces de procesar texto e imágenes a la vez. Lo demostraremos construyendo una aplicación de búsqueda semántica que va más allá de la simple concordancia de palabras clave: entiende la relación entre lo que piden los usuarios y el contenido visual que buscan.
Lo que hace que este proyecto sea especialmente interesante es que se ha construido íntegramente con herramientas de código abierto: la base de datos vectorial Milvus, las bibliotecas de aprendizaje automático de HuggingFace y un conjunto de datos de reseñas de clientes de Amazon. Resulta sorprendente pensar que hace tan solo una década, para construir algo así se habrían necesitado importantes recursos patentados. Hoy en día, estos potentes componentes están disponibles gratuitamente y pueden ser combinados de forma innovadora por cualquiera que tenga la curiosidad de experimentar.
Nuestra aplicación de búsqueda multimodal es del tipo retrieve-and-rerank. Si está familiarizado con la recuperación-aumentada-generación (RAG) es muy similar, sólo que la salida final es una lista de imágenes que fueron reranked por un gran modelo de lenguaje-visión (LLVM). La consulta de búsqueda del usuario contiene texto e imagen, y el objetivo es un conjunto de imágenes indexadas en una base de datos vectorial. La arquitectura consta de tres pasos: indexación, recuperación y renumeración (algo así como "generación"), que resumimos a continuación.
Indexación
Nuestra aplicación de búsqueda debe tener algo que buscar. En nuestro caso, utilizamos un pequeño subconjunto del conjunto de datos "Amazon Reviews 2023", que contiene texto e imágenes de opiniones de clientes de Amazon sobre todo tipo de productos. Se puede imaginar que una búsqueda semántica como la que estamos construyendo sería un complemento útil para un sitio web de comercio electrónico. Utilizamos 900 imágenes y descartamos el texto, aunque observamos que este cuaderno puede escalar a tamaño de producción con la base de datos y los despliegues de inferencia adecuados.
El primer elemento "mágico" de nuestro proceso es la elección del modelo de incrustación. Utilizamos un modelo multimodal desarrollado recientemente, llamado Visualized BGE, capaz de incrustar texto e imágenes conjuntamente, o por separado, en el mismo espacio con un único modelo en el que los puntos cercanos son semánticamente similares. Recientemente se han desarrollado otros modelos de este tipo, por ejemplo MagicLens.
La figura anterior lo ilustra: la incrustación para [una imagen de un león de perfil] más el texto "vista frontal de esto", se aproxima a una incrustación para [una imagen de un león de frente] sin texto. Se utiliza el mismo modelo para entradas de texto e imagen y para entradas de sólo imagen (así como para entradas de sólo texto). De este modo, el modelo es capaz de comprender la intención del usuario en cuanto a la relación entre el texto y la imagen consultados.
Incrustamos nuestras 900 imágenes de productos sin el texto correspondiente y almacenamos las incrustaciones en una base de datos vectorial utilizando Milvus.
Recuperación
Una vez creada la base de datos, podemos realizar una consulta al usuario. Imaginemos que un usuario viene con la consulta "una funda de teléfono con esto" más [una imagen de un Leopardo]. Es decir, busca fundas de teléfono con estampados de leopardo.
Nótese que el texto de la consulta del usuario decía "esto" en lugar de "la piel de un Leopardo". Nuestro modelo de incrustación debe ser capaz de conectar "esto" con aquello a lo que se refiere, lo cual es una hazaña impresionante dado que la iteración anterior de modelos no era capaz de manejar instrucciones tan abiertas. El artículo MagicLens ofrece más ejemplos.
Integramos el texto y la imagen de la consulta y realizamos una búsqueda de similitudes en nuestra base de datos vectorial. Los resultados se muestran en la figura anterior, junto con la imagen del leopardo. Parece que el primer resultado no es el más pertinente para la consulta. El séptimo resultado parece ser el más relevante: se trata de una funda de teléfono con un estampado de piel de leopardo.
Generación
Parece que nuestra búsqueda ha fallado en el sentido de que el resultado superior no es el más relevante. Sin embargo, podemos solucionarlo con un paso de reordenación. Es posible que esté familiarizado con el reordenamiento de los elementos recuperados, ya que es un paso importante en muchos procesos RAG. Utilizamos Phi-3 Vision como modelo de reordenación.
Primero pedimos a un LLVM que genere un pie de foto de la imagen consultada. El LLVM genera:
"La imagen muestra un primer plano de la cara de un leopardo, centrándose en su pelaje moteado y sus ojos verdes".
A continuación, introducimos este pie de foto, una sola imagen con los nueve resultados y la imagen de consulta, y construimos un mensaje de texto en el que se pide al modelo que vuelva a clasificar los resultados, dando la respuesta en forma de lista y justificando la elección de la mejor coincidencia.
El resultado se visualiza en la figura anterior: el elemento más relevante es ahora el que más coincide, y la razón que se da es:
"El elemento más adecuado es el que tiene el tema del leopardo, que coincide con la instrucción de consulta del usuario para una funda de teléfono con un tema similar".
Nuestro re-ranker LLVM fue capaz de realizar la comprensión a través de imágenes y texto, y mejorar la relevancia de los resultados de búsqueda. Un artefacto interesante es que el re-ranker sólo dio ocho resultados y ha descartado uno, lo que pone de relieve la necesidad de guardrails y salida estructurada.
Resumen
En este post y en el vídeo (próximamente) y el cuaderno que lo acompañan, hemos construido una aplicación para la búsqueda semántica multimodal en texto e imágenes. El modelo de incrustación fue capaz de incrustar texto e imágenes conjunta o separadamente en el mismo espacio, y el modelo de fundamentación fue capaz de introducir texto e imagen mientras generaba texto como respuesta. Y lo que es más importante, el modelo de incrustación fue capaz de relacionar la intención del usuario de una instrucción abierta con la imagen de la consulta y, de ese modo, especificar cómo quería el usuario que se relacionaran los resultados con la imagen introducida.
Esto es sólo una muestra de lo que nos espera en un futuro próximo. Veremos muchas aplicaciones de búsqueda multimodal, comprensión y razonamiento multimodal, etc. en diversas modalidades: imagen, vídeo, audio, moléculas, redes sociales, datos tabulares, series temporales, el potencial es ilimitado.
Y en el núcleo de estos sistemas se encuentra una base de datos vectorial que contiene la "memoria" externa del sistema. Milvus es una opción excelente para este fin. Es de código abierto, cuenta con todas las funciones (véase este artículo sobre la búsqueda de texto completo en Milvus 2.5) y se escala eficientemente a miles de millones de vectores con tráfico a escala web y latencia inferior a 100 ms. Obtenga más información en la documentación de Milvus, únase a nuestra comunidad de Discord y esperamos verle en nuestro próximo encuentro sobre datos no estructurados. Hasta entonces.
Recursos
Cuaderno de notas: "Búsqueda multimodal con Amazon Reviews y LLVM Reranking"
Youtube AWS Developers video (próximamente)
Modelo de incrustación: Tarjeta de modelo BGE visualizada
Modelo de incrustación alt: MagicLens model repo
Ponencia: "MagicLens: Recuperación autosupervisada de imágenes con instrucciones abiertas"
Conjunto de datos: Reseñas de Amazon 2023
- Indexación
- Recuperación
- Generación
- Resumen
- Recursos
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word