Machine learning

¿Qué es la búsqueda vectorial?

La búsqueda por similitud vectorial utiliza el 'machine learning' para traducir la similitud de textos, imágenes o audio a un espacio vectorial, lo que hace que este proceso sea más rápido, preciso y escalable.

Deep Learning e Inteligencia Artificial

Supongamos que queremos implementar un servicio de música que se comporte como Spotify, encontrando canciones similares a las que nos gustan. ¿Cómo lo harías? Una forma sería clasificar cada canción por una serie de características, guardar esos "vectores" en una base de datos indexada y buscar en la base de datos los vectores de descripción de la canción "cercanos" a tus favoritos. En otras palabras, podrías realizar una búsqueda por similitud vectorial.

¿Qué es la búsqueda de similitud vectorial?

La búsqueda de similitudes vectoriales suele tener cuatro componentes: incrustaciones vectoriales que capturan las características clave del objeto original, como una canción, una imagen o un texto; métricas de distancia que representan la "cercanía" entre los vectores; algoritmos de búsqueda; y una base de datos que contiene los vectores y apoya la búsqueda vectorial con índices.

¿Qué son los vectores embebidos?

Los vectores embebidos son esencialmente vectores de características, tal y como se entienden en el contexto del machine learning y el deep learning. Pueden definirse realizando manualmente la ingeniería de características o utilizando la salida de los modelos.

Por ejemplo, las cadenas de texto pueden convertirse en incrustaciones de palabras (vectores de características) utilizando redes neuronales, reducción de la dimensionalidad en la matriz de coocurrencia de palabras, modelos probabilísticos, métodos de bases de conocimiento explicables y representación explícita en términos del contexto en el que aparecen las palabras. Entre los modelos más habituales para entrenar y utilizar la incrustación de palabras se encuentran word2vec (Google), GloVe (Stanford), ELMo (Allen Institute/Universidad de Washington), BERT (Google) y fastText (Facebook).

Las imágenes se suelen incrustar capturando la salida de modelos de redes neuronales convolucionales (CNN) o modelos transformadores. Estos modelos reducen automáticamente la dimensionalidad de los vectores de características enrollando ("convolucionando") parches de píxeles en características, y reduciendo el muestreo con capas de agrupación.

Las recomendaciones de productos pueden basarse en la incrustación de las palabras y frases de la descripción del producto, en la incrustación de las imágenes del producto o en ambas. La incrustación de audio podría basarse en las transformadas de Fourier del audio (que dan el espectro), en las descripciones del compositor, el género, el artista, el tempo, el ritmo y el volumen, o en el espectro y las palabras clave. El campo avanza rápidamente, así que espero que haya nuevas técnicas de incrustación para muchas áreas de aplicación.

¿Qué son las métricas de distancia?

Normalmente pensamos en la distancia en términos de líneas rectas en dos o tres dimensiones. Las incrustaciones vectoriales suelen tener más de 10 dimensiones, y no es raro que tengan 1.000. La fórmula general de las distancias lleva el nombre de Hermann Minkowski, más conocido (al menos para los físicos) por su formulación de la relatividad especial de Einstein como un espacio-tiempo de cuatro dimensiones con el tiempo como cuarta dimensión. La métrica (o distancia) de Minkowski es una generalización tanto de las distancias euclidianas (líneas rectas directas) como de las distancias de Manhattan (líneas irregulares).

La distancia euclidiana, también conocida como distancia L2 o norma L2, es la métrica más utilizada en los algoritmos de agrupación. Otra métrica, la similitud del coseno, se utiliza a menudo para el procesamiento de textos, donde la dirección de los vectores embebidos es importante, pero la distancia entre ellos no.

 

¿Qué algoritmos realizan la búsqueda de similitud vectorial?

En general, un algoritmo K-nearest neighbor (KNN) puede dar buenas respuestas a los problemas de búsqueda de vectores. El principal problema de KNN es que es costoso desde el punto de vista computacional, tanto en el uso del procesador como de la memoria.

Entre las alternativas a KNN se encuentran los algoritmos de búsqueda más cercanos aproximados (RNA) y una variación de RNA, el árbol de partición espacial y gráfico (SPTAG). SPTAG fue publicado en código abierto por Microsoft Research y Bing. Una variación similar de la RNA, publicada en código abierto por Facebook, es la búsqueda de similitudes de Facebook AI (Faiss). Los cuantificadores de productos y el índice IndexIVFPQ ayudan a acelerar Faiss y algunas otras variantes de RNA. Como he mencionado antes, las bases de datos vectoriales suelen construir índices vectoriales para mejorar la velocidad de búsqueda.

Faiss se creó para buscar documentos multimedia similares a un documento de consulta en una base de datos de mil millones de vectores. Para la evaluación, los desarrolladores utilizaron Deep1B, una colección de mil millones de imágenes. Faiss permite personalizar el preprocesamiento de los vectores, la partición de la base de datos y la codificación de los vectores (cuantificación del producto) para que el conjunto de datos quepa en la memoria RAM disponible. Faiss se implementa por separado para CPU y GPU. En las CPU, Faiss puede alcanzar una puntuación de recuperación del 40% en el conjunto de datos de mil millones de imágenes en 2 ms, lo que se traduce en 500 consultas por segundo por núcleo. En una GPU Nvidia de clase Pascal, Faiss busca más de 20 veces más rápido que en una CPU.

SPTAG se creó con fines similares, aunque utilizando métodos ligeramente diferentes. Bing vectorizó más de 150.000 millones de datos indexados por el motor de búsqueda para mejorar los resultados con respecto a la búsqueda tradicional de palabras clave. Los datos vectorizados incluyen palabras sueltas, caracteres, fragmentos de páginas web, consultas completas y otros medios. Los autores de SPTAG se basaron en sus investigaciones anteriores sobre RNA en Microsoft Research Asia, utilizando la búsqueda de grafos de vecindad iterada basada en consultas, e implementaron los algoritmos kd-tree (mejor para la creación de índices) y balanced k-means tree (mejor para la precisión de la búsqueda).

Pinecone es una base de datos vectorial totalmente gestionada con una API que facilita la incorporación de la búsqueda vectorial a las aplicaciones de producción. Los servicios de búsqueda de similitudes de Pinecone son distribuidos, sin servidor, persistentes, consistentes, fragmentados y replicados en muchos nodos. Pinecone puede manejar miles de millones de incrustaciones vectoriales, y se puede ejecutar la búsqueda de similitudes en aplicaciones y cuadernos Python o Java. Pinecone constata una latencia de < 50 ms, incluso con miles de millones de elementos y miles de consultas por segundo. Se ejecuta en la infraestructura reforzada de AWS. Los datos se almacenan en contenedores aislados y se cifran en tránsito.

¿Cuáles son las aplicaciones de la búsqueda vectorial?

Además de la búsqueda de imágenes demostrada por Facebook y la búsqueda semántica de texto implementada por Microsoft Bing, la búsqueda vectorial por similitud puede servir para muchos casos de uso. Algunos ejemplos son las recomendaciones de productos, las respuestas a preguntas frecuentes, la personalización, la búsqueda de audio, la deduplicación y la detección de amenazas en los registros de incidencias de los departamentos de TI.

 


Contenido Patrocinado

Fernando Rubio Román, CTO de Microsoft España. TECNOLOGÍA
Forma parte de nuestra comunidad

 

¿Te interesan nuestras conferencias?

 

 
Cobertura de nuestros encuentros
 
 
 
 
Lee aquí nuestra revista de canal

DealerWorld Digital