paint-brush
Una mirada a cinco casos de uso de búsqueda de vectores de las principales empresas tecnológicaspor@rocksetcloud
7,165 lecturas
7,165 lecturas

Una mirada a cinco casos de uso de búsqueda de vectores de las principales empresas tecnológicas

por Rockset12m2024/05/03
Read on Terminal Reader

Demasiado Largo; Para Leer

Una inmersión profunda en cinco de los primeros usuarios de la búsqueda vectorial (Pinterest, Spotify, eBay, Airbnb y Doordash) que han integrado la IA en sus aplicaciones.
featured image - Una mirada a cinco casos de uso de búsqueda de vectores de las principales empresas tecnológicas
Rockset HackerNoon profile picture


Muchas organizaciones con las que hemos hablado se encuentran en la fase de exploración del uso de la búsqueda vectorial para personalización, recomendaciones, búsqueda semántica y detección de anomalías impulsadas por IA. Las recientes y astronómicas mejoras en la precisión y accesibilidad de los grandes modelos de lenguaje (LLM), incluidos BERT y OpenAI, han hecho que las empresas reconsideren cómo crear experiencias de búsqueda y análisis relevantes.


En este blog, capturamos historias de ingeniería de cinco de los primeros usuarios de la búsqueda vectorial (Pinterest, Spotify, eBay, Airbnb y Doordash) que han integrado la IA en sus aplicaciones. Esperamos que estas historias sean útiles para los equipos de ingeniería que están pensando en el ciclo de vida completo de la búsqueda vectorial, desde la generación de incorporaciones hasta las implementaciones de producción.

¿Qué es la búsqueda vectorial?

La búsqueda vectorial es un método para encontrar y recuperar de manera eficiente elementos similares de un gran conjunto de datos basado en representaciones de los datos en un espacio de alta dimensión. En este contexto, los elementos pueden ser cualquier cosa, como documentos, imágenes o sonidos, y se representan como incrustaciones de vectores. La similitud entre elementos se calcula utilizando métricas de distancia, como la similitud del coseno o la distancia euclidiana , que cuantifican la cercanía de dos incrustaciones de vectores.


El proceso de búsqueda de vectores suele implicar:


  • Generación de incrustaciones : donde se extraen características relevantes de los datos sin procesar para crear representaciones vectoriales utilizando modelos como word2vec , BERT o Universal Sentence Encoder.
  • Indexación : las incrustaciones de vectores se organizan en una estructura de datos que permite una búsqueda eficiente utilizando algoritmos como FAISS o HNSW.
  • Búsqueda de vectores : donde los elementos más similares a un vector de consulta determinado se recuperan en función de una métrica de distancia elegida, como la similitud del coseno o la distancia euclidiana.


Para visualizar mejor la búsqueda vectorial, podemos imaginar un espacio 3D donde cada eje corresponde a una característica. El tiempo y la posición de un punto en el espacio están determinados por los valores de estas características. En este espacio, los elementos similares se ubican más cerca unos de otros y los elementos diferentes, más separados.


GITHUB JULIE-MILLS

 ^ | x Item 1 | / | / | /x Item 2 | / | / | /x Item 3 | / | / | / +------------------->


Dada una consulta, podemos encontrar los elementos más similares en el conjunto de datos. La consulta se representa como un vector incrustado en el mismo espacio que las incrustaciones de elementos, y se calcula la distancia entre la incrustación de la consulta y cada elemento incrustado. Las incrustaciones de elementos con la distancia más corta hasta la incrustación de la consulta se consideran las más similares.


 Query item: x | ^ | | x Item 1| | / | | / | | /x Item 2 | | / | | / | | /x Item 3 | | / | | / | | / | +------------------->


Obviamente, esta es una visualización simplificada, ya que la búsqueda de vectores opera en espacios de alta dimensión.


En las siguientes secciones, resumiremos cinco blogs de ingeniería sobre búsqueda de vectores y destacaremos consideraciones clave de implementación. Los blogs de ingeniería completos se pueden encontrar a continuación:



Pinterest: búsqueda y descubrimiento de intereses

Pinterest utiliza la búsqueda vectorial para buscar y descubrir imágenes en múltiples áreas de su plataforma, incluido el contenido recomendado en el feed de inicio, pines relacionados y búsqueda mediante un modelo de aprendizaje multitarea.


Diferentes interacciones de usuario y puntos de datos que se utilizan para formar incrustaciones de vectores en Pinterest.


Un modelo multitarea está entrenado para realizar múltiples tareas simultáneamente, a menudo compartiendo representaciones o características subyacentes, lo que puede mejorar la generalización y la eficiencia en tareas relacionadas. En el caso de Pinterest, el equipo entrenó y utilizó el mismo modelo para impulsar el contenido recomendado en el feed de inicio, los pines relacionados y la búsqueda.


Pinterest entrena el modelo emparejando la consulta de búsqueda de un usuario (q) con el contenido en el que hicieron clic o los pines que guardaron (p). Así es como Pinterest creó los pares (q,p) para cada tarea:


  • Pines relacionados : las incrustaciones de Word se derivan del tema seleccionado (q) y el pin en el que hizo clic o guardó el usuario (p).

  • Búsqueda : las incrustaciones de palabras se crean a partir del texto de la consulta de búsqueda (q) y el pin en el que el usuario hizo clic o guardó (p).

  • Homefeed : las incrustaciones de Word se generan en función del interés del usuario (q) y el pin en el que el usuario hizo clic o guardó (p).


Para obtener una incrustación de entidad general, Pinterest promedia las incrustaciones de palabras asociadas para los pines relacionados, la búsqueda y el feed de inicio.


Pinterest creó y evaluó su propio Pintext-MTL (aprendizaje multitarea) supervisado frente a modelos de aprendizaje no supervisados, incluidos GloVe, word2vec, así como un modelo de aprendizaje de tarea única, PinText-SR, en precisión. PinText-MTL tenía mayor precisión que los otros modelos de incrustación, lo que significa que tenía una mayor proporción de predicciones positivas verdaderas entre todas las predicciones positivas.

La precisión de diferentes modelos de incrustación evaluados por Pinterest. Esta tabla de resultados está tomada del blog PinText: un sistema de incrustación de texto multitarea en Pinterest.



Pinterest también descubrió que los modelos de aprendizaje multitarea tenían un mayor recuerdo o una mayor proporción de instancias relevantes identificadas correctamente por el modelo, lo que los hacía más adecuados para la búsqueda y el descubrimiento.


Para poner todo esto junto en producción, Pinterest tiene un modelo multitarea entrenado en la transmisión de datos desde el feed de inicio, la búsqueda y los pines relacionados. Una vez que se entrena ese modelo, las incrustaciones de vectores se crean en un trabajo por lotes grande utilizando Kubernetes+Docker o un sistema de reducción de mapas. La plataforma crea un índice de búsqueda de incrustaciones de vectores y ejecuta una búsqueda de K vecinos más cercanos (KNN) para encontrar el contenido más relevante para los usuarios. Los resultados se almacenan en caché para cumplir con los requisitos de rendimiento de la plataforma Pinterest.


La pila de datos para la búsqueda de vectores en Pinterest.



Spotify: búsqueda de podcasts

Spotify combina búsqueda semántica y de palabras clave para recuperar resultados de episodios de podcasts relevantes para los usuarios. Como ejemplo, el equipo destacó las limitaciones de la búsqueda de palabras clave para la consulta “impacto climático de los autos eléctricos”, una consulta que arrojó 0 resultados a pesar de que existen episodios de podcasts relevantes en la biblioteca de Spotify. Para mejorar la recuperación, el equipo de Spotify utilizó el vecino más cercano aproximado (ANN) para una búsqueda de podcasts rápida y relevante.


Una búsqueda actual de “impacto climático de los coches eléctricos” en Spotify.


El equipo genera incrustaciones de vectores utilizando el modelo CMLM de Universal Sentence Encoder, ya que es multilingüe, admite una biblioteca global de podcasts y produce incrustaciones de vectores de alta calidad. También se evaluaron otros modelos, incluido BERT , un modelo entrenado con un gran corpus de datos de texto, pero se descubrió que BERT era más adecuado para incrustaciones de palabras que de oraciones y estaba preentrenado solo en inglés.


Spotify crea incrustaciones de vectores con el texto de la consulta como incrustación de entrada y una concatenación de campos de metadatos textuales que incluyen el título y la descripción de las incrustaciones de episodios del podcast. Para determinar la similitud, Spotify midió la distancia del coseno entre la consulta y las incrustaciones del episodio.


Para entrenar el modelo CMLM básico de Universal Sentence Encoder, Spotify utilizó pares positivos de búsquedas y episodios de podcasts exitosos. Incorporaron negativos en lotes, una técnica destacada en artículos que incluyen Dense Passage Retrieval for Open-Domain Question Answering (DPR) y Que2Search: Fast and Accurate Query and Document Understanding for Search at Facebook , para generar pares negativos aleatorios. También se realizaron pruebas utilizando consultas sintéticas y consultas escritas manualmente.


Para incorporar la búsqueda vectorial en la entrega de recomendaciones de podcasts en producción, Spotify utilizó los siguientes pasos y tecnologías:


  • Indexar vectores de episodios : Spotify indexa los vectores de episodios fuera de línea por lotes utilizando Vespa , un motor de búsqueda con soporte nativo para ANN. Una de las razones por las que se eligió Vespa es que también puede incorporar filtrado de metadatos después de la búsqueda de características como la popularidad de los episodios.

  • Inferencia en línea : Spotify utiliza Google Cloud Vertex AI para generar un vector de consulta. Se eligió Vertex AI por su soporte para la inferencia de GPU, que es más rentable cuando se utilizan modelos de transformadores grandes para generar incrustaciones, y por su caché de consultas. Una vez generada la incrustación del vector de consulta, se utiliza para recuperar los 30 episodios principales del podcast de Vespa.


La búsqueda semántica contribuye a la identificación de episodios de podcasts pertinentes, pero no puede suplantar por completo la búsqueda por palabras clave. Esto se debe al hecho de que la búsqueda semántica no alcanza la coincidencia exacta de términos cuando los usuarios buscan un episodio o nombre de podcast exacto. Spotify emplea un enfoque de búsqueda híbrido, fusionando la búsqueda semántica en Vespa con la búsqueda de palabras clave en Elasticsearch , seguida de una etapa de reclasificación concluyente para establecer los episodios que se muestran a los usuarios.


El flujo de trabajo para la búsqueda de vectores en Spotify.


eBay: búsqueda de imágenes

Tradicionalmente, los motores de búsqueda han mostrado resultados alineando el texto de la consulta de búsqueda con descripciones textuales de elementos o documentos. Este método se basa en gran medida en el lenguaje para inferir preferencias y no es tan eficaz para capturar elementos de estilo o estética. eBay introduce la búsqueda de imágenes para ayudar a los usuarios a encontrar artículos relevantes y similares que coincidan con el estilo que buscan.


eBay utiliza un modelo multimodal diseñado para procesar e integrar datos de múltiples modalidades o tipos de entrada, como texto, imágenes, audio o video, para hacer predicciones o realizar tareas. eBay incorpora texto e imágenes en su modelo, produciendo incrustaciones de imágenes utilizando un modelo de red neuronal convolucional (CNN), específicamente Resnet-50 , e incrustaciones de títulos utilizando un modelo basado en texto como BERT . Cada listado está representado por una incrustación de vector que combina la incrustación de imagen y título.


Una representación del modelo de incrustación multimodal utilizado en eBay.



Una vez que el modelo multimodal se entrena utilizando un gran conjunto de datos de pares de listados de imagen y título y listados vendidos recientemente, es hora de ponerlo en producción en la experiencia de búsqueda del sitio. Debido a la gran cantidad de anuncios en eBay, los datos se cargan en lotes en HDFS, el almacén de datos de eBay. eBay utiliza Apache Spark para recuperar y almacenar la imagen y los campos relevantes necesarios para el procesamiento posterior de los anuncios, incluida la generación de incrustaciones de anuncios. Las incorporaciones de listados se publican en un almacén de columnas como HBase, que es bueno para agregar datos a gran escala. Desde HBase, la inserción del listado se indexa y se publica en Cassini, un motor de búsqueda creado en eBay.


El flujo de trabajo para la búsqueda de vectores en eBay.


El pipeline se gestiona mediante Apache Airflow, que es capaz de escalar incluso cuando hay una gran cantidad y complejidad de tareas. También brinda soporte para Spark, Hadoop y Python, lo que lo hace conveniente para que el equipo de aprendizaje automático lo adopte y utilice.


La búsqueda visual permite a los usuarios encontrar estilos y preferencias similares en las categorías de muebles y decoración del hogar, donde el estilo y la estética son clave para las decisiones de compra. En el futuro, eBay planea expandir la búsqueda visual en todas las categorías y también ayudar a los usuarios a descubrir artículos relacionados para que puedan establecer la misma apariencia en toda su casa.

AirBnb: listados personalizados en tiempo real

Las funciones de búsqueda y listados similares generan el 99% de las reservas en el sitio de AirBnb. AirBnb creó una técnica de inserción de listados para mejorar las recomendaciones de listados similares y brindar personalización en tiempo real en las clasificaciones de búsqueda.


AirBnb se dio cuenta desde el principio de que podían ampliar la aplicación de incrustaciones más allá de las representaciones de palabras, abarcando también los comportamientos de los usuarios, incluidos los clics y las reservas.


Para entrenar los modelos de integración, AirBnb incorporó más de 4,5 millones de listados activos y 800 millones de sesiones de búsqueda para determinar la similitud en función de los listados en los que un usuario hace clic y se salta en una sesión. Los listados en los que el mismo usuario hizo clic durante una sesión se acercan entre sí; los listados que el usuario omitió se alejan más. El equipo se decidió por la dimensionalidad de una inclusión de listado de d=32 dada la compensación entre el rendimiento fuera de línea y la memoria necesaria para el servicio en línea.


AirBnb descubrió que ciertas características de los listados no requieren aprendizaje, ya que pueden obtenerse directamente de metadatos, como el precio. Sin embargo, atributos como la arquitectura, el estilo y el ambiente son considerablemente más difíciles de derivar de los metadatos.


Antes de pasar a producción, AirBnb validó su modelo probando qué tan bien recomendaba los listados que un usuario realmente reservaba. El equipo también realizó una prueba A/B comparando el algoritmo de listados existente con el algoritmo basado en incrustación de vectores. Descubrieron que el algoritmo con incrustaciones de vectores dio como resultado un aumento del 21 % en el CTR y un aumento del 4,9 % en el número de usuarios que descubrieron un anuncio que habían reservado.


El equipo también se dio cuenta de que las incrustaciones de vectores podrían usarse como parte del modelo para la personalización en tiempo real en la búsqueda. Para cada usuario, recopilaron y mantuvieron en tiempo real, utilizando Kafka, un historial a corto plazo de los clics y omisiones del usuario en las últimas dos semanas. Para cada búsqueda realizada por el usuario, realizó dos búsquedas de similitud:


  • basado en los mercados geográficos que se buscaron recientemente y luego

  • la similitud entre las listas de candidatos y aquellas en las que el usuario hizo clic/omitió


Las incrustaciones se evaluaron en experimentos en línea y fuera de línea y se convirtieron en parte de las funciones de personalización en tiempo real.


Doordash: feeds de tienda personalizados

Doordash tiene una amplia variedad de tiendas entre las que los usuarios pueden elegir para realizar pedidos y poder mostrar las tiendas más relevantes utilizando preferencias personalizadas mejora la búsqueda y el descubrimiento.


Doordash quería aplicar información latente a los algoritmos de alimentación de su tienda mediante incrustaciones de vectores. Esto permitiría a Doordash descubrir similitudes entre tiendas que no estaban bien documentadas, incluso si una tienda tiene artículos dulces, se considera moderna o ofrece opciones vegetarianas.


Doordash utilizó un derivado de word2vec, un modelo de incrustación utilizado en el procesamiento del lenguaje natural, llamado store2vec que adaptó en función de los datos existentes. El equipo trató cada tienda como una palabra y formó oraciones usando la lista de tiendas vistas durante una única sesión de usuario, con un límite máximo de 5 tiendas por oración. Para crear incrustaciones de vectores de usuario, Doordash sumó los vectores de las tiendas en las que los usuarios realizaron pedidos en los últimos 6 meses o hasta 100 pedidos.


Como ejemplo, Doordash utilizó la búsqueda vectorial para encontrar restaurantes similares para un usuario en función de sus compras recientes en los populares y modernos locales 4505 Burgers y New Nagano Sushi en San Francisco. Doordash generó una lista de restaurantes similares que miden la distancia del coseno desde la inserción del usuario hasta la inserción de tiendas en el área. Puede ver que las tiendas que estaban más cercanas en distancia coseno incluyen Kezar Pub y Wooden Charcoal Korean Village BBQ.


Un ejemplo de búsqueda de vectores en Doordash tomado del blog Feed de tienda personalizado con incrustaciones de vectores.


Doordash incorporó la función de distancia store2vec como una de las funciones de su modelo más amplio de recomendación y personalización. Con la búsqueda vectorial, Doordash pudo ver un aumento del 5% en la tasa de clics. El equipo también está experimentando con nuevos modelos como seq2seq , optimizaciones de modelos e incorporando datos de actividad de los usuarios en el sitio en tiempo real.


Consideraciones clave para la búsqueda de vectores

Pinterest, Spotify, eBay, Airbnb y Doordash crean mejores experiencias de búsqueda y descubrimiento con la búsqueda vectorial. Muchos de estos equipos comenzaron usando la búsqueda de texto y encontraron limitaciones con la búsqueda difusa o con búsquedas de estilos o estéticas específicas. En estos escenarios, agregar la búsqueda vectorial a la experiencia hizo que fuera más fácil encontrar podcasts, almohadas, alquileres, pins y restaurantes relevantes y, a menudo, personalizados.


Hay algunas decisiones que tomaron estas empresas que vale la pena destacar al implementar la búsqueda vectorial:


  • Incorporación de modelos : muchos comenzaron usando un modelo disponible en el mercado y luego lo entrenaron con sus propios datos. También reconocieron que se podían utilizar modelos de lenguaje como word2vec intercambiando palabras y sus descripciones con elementos y elementos similares en los que se hizo clic recientemente. Equipos como AirBnb descubrieron que el uso de derivados de modelos de lenguaje, en lugar de modelos de imágenes, aún podría funcionar bien para capturar similitudes y diferencias visuales.
  • Capacitación : muchas de estas empresas optaron por entrenar sus modelos en base a compras anteriores y datos de clics, haciendo uso de conjuntos de datos a gran escala existentes.
  • Indexación : si bien muchas empresas adoptaron la búsqueda ANN, vimos que Pinterest pudo combinar el filtrado de metadatos con la búsqueda KNN para lograr eficiencia a escala.
  • Búsqueda híbrida : la búsqueda vectorial rara vez reemplaza la búsqueda de texto. Muchas veces, como en el ejemplo de Spotify, se utiliza un algoritmo de clasificación final para determinar si la búsqueda vectorial o la búsqueda de texto generaron el resultado más relevante.
  • Producción : estamos viendo que muchos equipos utilizan sistemas basados en lotes para crear incrustaciones de vectores, dado que estas incrustaciones rara vez se actualizan. Emplean un sistema diferente, frecuentemente Elasticsearch, para calcular el vector de consulta incrustado en vivo e incorporar metadatos en tiempo real en su búsqueda.


Rockset, una base de datos de análisis y búsqueda en tiempo real, agregó recientemente soporte para búsqueda vectorial . Pruebe la búsqueda vectorial en Rockset para personalización en tiempo real, recomendaciones, detección de anomalías y más iniciando una prueba gratuita con $300 en créditos hoy.