Búsqueda vectorial

Búsqueda ANN filtrada con índices vectoriales compuestos (Parte 3)

Esta publicación es la tercera parte de una serie de varias entregas que exploran la indexación vectorial compuesta en Couchbase. Si te perdiste las publicaciones anteriores, asegúrate de ponerte al día en Parte 1 y Parte 2.

La serie tratará los siguientes temas:

  1. Por qué son importantes los índices vectoriales compuestos, incluyendo conceptos, terminología y motivación de los desarrolladores. Se utilizará un sistema inteligente de recomendación de productos alimenticios como ejemplo práctico.
  2. Cómo se implementan los índices vectoriales compuestos dentro del servicio de indexación de Couchbase.
  3. Cómo funciona ORDER BY pushdown para consultas vectoriales compuestas.
  4. Comportamiento real y resultados de pruebas comparativas.

 

Ordenar por Pushdown: índices vectoriales compuestos

Imaginemos una función en tu aplicación de comida o comestibles:

“Recomienda cremas de chocolate para untar con un sabor similar al de Nutella, ordenadas por calidad nutricional, es decir, primero las que tienen más proteínas y luego las que tienen menos azúcar.”

Esto es más que un simple filtrado.

Requiere combinar:

  • Similitud semántica (sabor/textura)
  • Filtrado nutricional (azúcares y proteínas)
  • Una estrategia de pedidos personalizada

La consulta SQL++ correspondiente podría tener el siguiente aspecto:

Esta única consulta expresa todo lo que queremos:

  • Solo cremas de chocolate más saludables
  • El más parecido en sabor a Nutella.
  • Se prefiere un mayor contenido de proteínas.
  • Menos azúcar a continuación
  • Mostrar al usuario solo los 10 primeros

Ahora veamos cómo Couchbase ejecuta esto de manera extremadamente eficiente.

  1. Los filtros escalares se desplazan hacia abajo
    1. Los predicados escalares se evalúan en línea utilizando el índice vectorial compuesto.
      1. azúcares_100 g < 20
      2. proteínas_100 g > 10
    2. DISTANCIA_VECTORIAL_APROXIMADA(...) activa el canal de exploración ANN (vecino más cercano aproximado) de Couchbase.
    3. El índice vectorial localiza los elementos cuyas incrustaciones son más cercanas a la incrustación de la consulta (Nutella en nuestro ejemplo).
    4. Consulte la parte 2 de esta serie de blogs para conocer el funcionamiento interno.
  2. LIMIT y ORDER BY Pushdown
    1. Aquí es donde Couchbase se vuelve excepcionalmente eficiente.
    2. Cuando la consulta incluye:
      1. LÍMITE
    3. Couchbase puede enviar ambos LÍMITE y ORDENAR POR en el servicio de índice.
    4. Esto evita enviar grandes conjuntos de resultados intermedios al servicio de consulta.

Así es como funciona ORDER BY Pushdown con escalares y ANN

  1. El indexador crea una clave de ordenación concatenada.
    1. Al realizar el escaneo del índice vectorial compuesto, el indexador construye una clave de ordenación compuesta para cada elemento candidato.
    2. La clave de clasificación compuesta concatenada consta de:
      1. Distancia ANN en lugar de la clave vectorial
      2. El escalar ORDENAR POR campos en el exacto ORDENAR POR secuencia:
        1. proteínas_100 g (DESC)
          1. Negado o codificado para orden descendente
        2. azúcares_100 g (ASC)
    3. Esto da como resultado una clave comparada lexicográficamente como:
      1. (distancia, -proteínas_100 g, azúcares_100 g)
    4. ¿Por qué reemplazar el campo vectorial?
      1. Porque para ordenar, la distancia se convierte en el valor escalar real de interés y no el vector en sí mismo.
      2. Esto permite al indexador clasificar a los candidatos.
  2. El indexador solo conserva los K elementos principales
    1. A medida que el indexador escanea los candidatos ANN, mantiene un montón de prioridad de tamaño K (K = LÍMITE).
    2. Cada candidato se evalúa utilizando la clave concatenada.
    3. Si el montón excede el tamaño K, se elimina el elemento peor.
    4. Al final, solo los mejores LÍMITE quedan artículos.

 

Esto significa:

  • No se producen conjuntos de resultados grandes.
  • No se realiza una clasificación completa en el nodo de consulta.
  • ANN + clasificación escalar + LIMIT se producen en un solo lugar.
  • El indexador solo transmite los 10 elementos principales al servicio de consulta.

Cuando los resultados llegan al nodo de consulta, ya son:

  • Filtrado
  • Ordenado semánticamente
  • Ordenado escalar
  • Recortado a LÍMITE

El nodo de consulta ya casi no tiene nada que hacer.
Esta es la ruta de ejecución más rápida posible en Couchbase para la clasificación híbrida semántica + escalar.

La flexibilidad de mezclar escalares y vectores en ORDER BY

  • Uno de los aspectos más potentes del índice vectorial compuesto de Couchbase es que los desarrolladores no están limitados a una única estrategia de clasificación. 
  • A diferencia de muchas bases de datos vectoriales que obligan a ordenar “solo por distancia vectorial”, Couchbase permite mezclar, reordenar y permutar libremente campos escalares y medidas de similitud vectorial dentro de una sola cláusula ORDER BY.

A continuación se muestran cuatro permutaciones significativas para nuestra búsqueda de alimentos similares a Nutella.

  1. Primero lo semántico (predomina la similitud de sabores)

    1. Caso de uso: quieres que el sabor “similar al de la Nutella” domine la clasificación.

  1. Las proteínas primero (predominan las opciones más saludables)

    1. Caso de uso: Para aplicaciones enfocadas en el fitness, donde la nutrición es más importante que el sabor.

      1. Caso de uso: Búsqueda de alimentos aptos para diabéticos o dietas bajas en azúcar.Azúcar primero (el usuario quiere menos azúcar por encima de todo lo demás)

    1. Clasificación híbrida compleja
      1. Caso de uso: Búsqueda centrada en la salud con respaldo semántico y criterios de desempate.

 

Conclusión final para desarrolladores

      • Couchbase combina la similitud ANN, el filtrado escalar, el ORDER BY personalizado y el pushdown LIMIT directamente dentro del índice vectorial compuesto.
      • Esto le permite crear funciones de búsqueda inteligente del mundo real, como recomendaciones de sabores de Nutella optimizadas para la nutrición, utilizando una única consulta SQL++ rápida y elegante.
      • Couchbase no solo almacena vectores en el índice. Te permite consultarlos de manera eficiente y combinarlos con datos estructurados, todo a gran escala.
Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Sai Kommaraju

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.