Creación de una experiencia de compra con búsqueda por imagen con VOVA y Milvus
Saltar a:
- ¿Cómo funciona la búsqueda de imágenes?
- Detección de objetivos usando el modelo YOLO
- Extracción de vectores de características de imágenes con ResNet
- Búsqueda de similitud vectorial impulsada por Milvus
- Herramienta de compra por imagen de VOVA
Las compras en línea aumentaron en 2020, un 44% más en gran parte debido a la pandemia de coronavirus. A medida que las personas buscaban distanciarse socialmente y evitar el contacto con extraños, la entrega sin contacto se convirtió en una opción increíblemente deseable para muchos consumidores. Esta popularidad también ha llevado a las personas a comprar una mayor variedad de productos en línea, incluidos artículos de nicho que pueden ser difíciles de describir usando una búsqueda tradicional por palabras clave.
Para ayudar a los usuarios a superar las limitaciones de las consultas basadas en palabras clave, las empresas pueden crear motores de búsqueda de imágenes que permitan a los usuarios usar imágenes en lugar de palabras para buscar. Esto no solo permite a los usuarios encontrar artículos que son difíciles de describir, sino que también les ayuda a comprar cosas que encuentran en la vida real. Esta funcionalidad ayuda a crear una experiencia de usuario única y ofrece una comodidad general que los clientes valoran.
VOVA es una plataforma de comercio electrónico emergente que se centra en la asequibilidad y en ofrecer una experiencia de compra positiva a sus usuarios, con listados que abarcan millones de productos y soporte para 20 idiomas y 35 divisas principales. Para mejorar la experiencia de compra de sus usuarios, la empresa utilizó Milvus para incorporar funcionalidad de búsqueda de imágenes en su plataforma de comercio electrónico. El artículo explora cómo VOVA construyó con éxito un motor de búsqueda de imágenes con Milvus.
¿Cómo funciona la búsqueda de imágenes?
El sistema de compra por imagen de VOVA busca en el inventario de la empresa imágenes de productos que sean similares a las cargas de los usuarios. El siguiente gráfico muestra las dos etapas del proceso del sistema, la etapa de importación de datos (azul) y la etapa de consulta (naranja):
- Usar el modelo YOLO para detectar objetivos a partir de fotos cargadas;
- Usar ResNet para extraer vectores de características de los objetivos detectados;
- Usar Milvus para la búsqueda de similitud vectorial.
Proceso del sistema de la funcionalidad de búsqueda por imagen de VOVA.
Detección de objetivos usando el modelo YOLO
Las aplicaciones móviles de VOVA en Android e iOS actualmente admiten la búsqueda de imágenes. La empresa utiliza un sistema de detección de objetos en tiempo real de última generación llamado YOLO (You only look once) para detectar objetos en imágenes cargadas por los usuarios. El modelo YOLO se encuentra actualmente en su quinta iteración.
YOLO es un modelo de una sola etapa, que utiliza solo una red neuronal convolucional (CNN) para predecir categorías y posiciones de diferentes objetivos. Es pequeño, compacto y muy adecuado para uso móvil.
YOLO utiliza capas convolucionales para extraer características y capas totalmente conectadas para obtener valores predichos. Inspirándose en el modelo GooLeNet, la CNN de YOLO incluye 24 capas convolucionales y dos capas totalmente conectadas.
Como muestra la siguiente ilustración, una imagen de entrada de 448 × 448 es convertida por una serie de capas convolucionales y capas de agrupación en un tensor de 7 × 7 × 1024 dimensiones (representado en el tercer cubo desde el final a continuación), y luego convertida por dos capas totalmente conectadas en una salida de tensor de 7 × 7 × 30 dimensiones.
La salida predicha de YOLO P es un tensor bidimensional, cuya forma es [batch,7 ×7 ×30]. Usando slicing, P[:,0:7×7×20] es la probabilidad de categoría, P[:,7×7×20:7×7×(20+2)] es la confianza, y P[:,7×7×(20+2)]:] es el resultado predicho del cuadro delimitador.
Arquitectura de red YOLO.
Extracción de vectores de características de imágenes con ResNet
VOVA adoptó el modelo de red neuronal residual (ResNet) para extraer vectores de características de una extensa biblioteca de imágenes de productos y fotos subidas por usuarios. ResNet es limitado porque, a medida que aumenta la profundidad de una red de aprendizaje, la precisión de la red disminuye. La imagen a continuación muestra ResNet ejecutando el modelo VGG19 (una variante del modelo VGG) modificado para incluir una unidad residual mediante el mecanismo de cortocircuito. VGG fue propuesto en 2014 e incluye solo 14 capas, mientras que ResNet apareció un año después y puede tener hasta 152.
La estructura de ResNet es fácil de modificar y escalar. Al cambiar el número de canales en el bloque y el número de bloques apilados, el ancho y la profundidad de la red pueden ajustarse fácilmente para obtener redes con diferentes capacidades expresivas. Esto resuelve eficazmente el efecto de degeneración de la red, donde la precisión disminuye a medida que aumenta la profundidad del aprendizaje. Con suficientes datos de entrenamiento, se puede obtener un modelo con un rendimiento expresivo mejorado mientras se profundiza gradualmente la red. Mediante el entrenamiento del modelo, se extraen características de cada imagen y se convierten en vectores de punto flotante de 256 dimensiones.
Estructura de ResNet.
Búsqueda de similitud vectorial impulsada por Milvus
La base de datos de imágenes de productos de VOVA incluye 30 millones de imágenes y está creciendo rápidamente. Para recuperar rápidamente las imágenes de productos más similares de este enorme conjunto de datos, Milvus se utiliza para realizar búsquedas de similitud vectorial. Gracias a una serie de optimizaciones, Milvus ofrece un enfoque rápido y simplificado para gestionar datos vectoriales y crear aplicaciones de aprendizaje automático. Milvus ofrece integración con bibliotecas de índices populares (p. ej., Faiss, Annoy), admite múltiples tipos de índices y métricas de distancia, cuenta con SDKs en varios idiomas y proporciona APIs completas para gestionar datos vectoriales.
Milvus puede realizar búsquedas de similitud en conjuntos de datos de billones de vectores en milisegundos, con un tiempo de consulta inferior a 1,5 segundos cuando nq=1 y un tiempo promedio de consulta por lotes inferior a 0,08 segundos. Para crear su motor de búsqueda de imágenes, VOVA tomó como referencia el diseño de Mishards, la solución de middleware de sharding de Milvus (véase el gráfico a continuación para su diseño del sistema), para implementar un clúster de servidores de alta disponibilidad. Al aprovechar la escalabilidad horizontal de un clúster de Milvus, se cumplió el requisito del proyecto de alto rendimiento de consulta en conjuntos de datos masivos.
Arquitectura de Mishards en Milvus.
Herramienta de compra por imagen de VOVA
Las capturas de pantalla a continuación muestran la herramienta de compras de búsqueda por imagen de VOVA en la aplicación Android de la empresa.
Capturas de pantalla de la herramienta de compras de búsqueda por imagen de VOVA.
A medida que más usuarios busquen productos y suban fotos, VOVA continuará optimizando los modelos que impulsan el sistema. Además, la empresa incorporará nuevas funcionalidades de Milvus que pueden mejorar aún más la experiencia de compra en línea de sus usuarios.
Referencia
YOLO:
https://arxiv.org/pdf/1506.02640.pdf
https://arxiv.org/pdf/1612.08242.pdf
ResNet:
https://arxiv.org/abs/1512.03385
Milvus:
https://milvus.io/docs/overview.md
Sigue leyendo
Stop Building AI Data Infra for the Wrong Stage
Learn how AI data infrastructure should evolve from prototype to enterprise scale, and when Vector Lakebase becomes the right architecture for AI apps.

Introducing Loon: A New Storage Engine for Vector Data That Never Stops Changing
Loon is a new storage engine for Milvus 3.0 and Zilliz Vector Lakebase, built to manage evolving vector datasets with ColumnGroups, row ID alignment, and Manifests.

Zilliz Skills Breakdown: How AI Agents Master Vector Databases
Zilliz's Milvus Skill (pymilvus, 7 files) and Zilliz Cloud Skill (zilliz-cli, 14 modules) bring vector-DB dev and ops into one Claude Code session.



