Búsqueda vectorial

Plataforma única, Couchbase multiuso: Búsqueda vectorial, geoespacial, SQL++ y mucho más

Hay casos de uso para los que lo mejor es utilizar varios tipos de acceso a datos, como SQL, búsqueda vectorial, consultas geoespaciales y acceso clave-valor. Un enfoque consiste en combinar o encadenar varios sistemas de datos para cada método de acceso. Sin embargo, la Enfoque Couchbase permite combinar estos distintos tipos de consultas para resolver problemas del mundo real.

Este artículo recorre aspectos de la aplicación de demostración "¿Qué es esta cosa?" (también conocida como "WITT"). Para más contexto y antecedentes, consulte:

Esta entrada del blog forma parte del 2024 C# Adviento. Sin embargo, no es necesario entender C# para leer este post: los conceptos son aplicables a cualquiera de los muchos SDK disponibles para Couchbase.

Búsqueda vectorial: Conceptos básicos

La búsqueda vectorial es útil para aplicaciones que necesitan encontrar elementos similares. Por ejemplo, las incrustaciones creadas por modelos de IA pueden indexarse y buscarse. Cada elemento de WITT se modela así:

Nota imagen del elemento se almacena como una cadena codificada en base64. En un proyecto de producción, recomendaría utilizar almacenamiento de archivos, S3, etc., en lugar de almacenarlo en la base de datos.

imageVector se recupera cargando la imagen en un modelo de imagen AI, como Azure Computer Vision.

Nota: Una de las características del recién anunciado Servicios de IA de Capella es el alojamiento de modelos, lo que reducirá la latencia de este paso y también aumentará la privacidad y la flexibilidad, además de reducir potencialmente los costes.

Incrustación de imágenes y búsqueda del vecino más próximo

Con un índice de búsqueda vectorial en el imageVector Couchbase puede realizar búsquedas de vecinos más cercanos. En este caso, esa búsqueda encontraría elementos que son visualmente similares (según el modelo de IA). Así, si un usuario tiene una imagen, y quiere encontrar un elemento en Couchbase que sea más similar a esa imagen, un índice de búsqueda vectorial puede hacerlo:

Aquí está el código en WITT que, para una imagen dada, solicita una incrustación vectorial de Azure Computer Vision:

Probablemente hay frameworks que pueden manejar esta llamada también, pero para esta sencilla demostración, que sólo requiere una única llamada REST, me pareció suficiente. Si quieres usar algo diferente a Azure con esta demo, necesitas implementar IEmbeddingService.

Consultas polivalentes con SQL

Muchas bases de datos con búsqueda vectorial pueden realizar una operación muy similar. Lo que Couchbase te permite es realizar múltiples tipos de operaciones de datos con una única plataforma, un único conjunto de datos. Por ejemplo, dada una localización geoespacial (que puede ser recuperada a través de un navegador web), no sólo puedes hacer una consulta para encontrar un elemento similar por imagen, sino también combinar eso con una búsqueda geoespacial, todo a través de una única consulta SQL++:

Nota: esta consulta ha sido editada en aras de la brevedad. Echa un vistazo DataLayer.cs para una visión más completa de las consultas.

El resultado de esta consulta es una "coincidencia más probable" para una imagen determinada. Por ejemplo, este es el primer resultado al cargar una imagen de un bolígrafo:

La calidad de los partidos dependerá de:

    • La calidad del modelo de IA
    • La calidad/cantidad de las imágenes de un artículo determinado

En mis pruebas limitadas, he comprobado que el modelo Azure Computer Vision es muy bueno a la hora de emparejar imágenes relevantes.

El resultado también contendrá las tiendas cercanas, donde el artículo está disponible para su compra.

Más allá de la búsqueda vectorial y geoespacial

Esta consulta mostraba la capacidad de Couchbase para combinar búsqueda vectorial Y búsqueda geoespacial en una única operación. También contenía una CTE, JOINs y una subconsulta.

Dentro de una misma consulta, también puedes realizar:

Aquí está la sección de marketing: Es posible que algunas bases de datos sólo puedan realizar un subconjunto de estas operaciones y le obliguen a recurrir a otras herramientas cuando necesite funciones adicionales. Esto aumenta tus costes, latencia y complejidad. Con Couchbase, puedes mantener tu aplicación más simple, más rápida y más barata. Se acabó la sección de marketing.

Aspectos técnicos destacados

La aplicación de demostración WITT a la que se hace referencia está construida con:

    • Interfaz de usuario React UI
    • ASP.NET Core backend
    • Azure Computer Vision
    • SDK .NET de Couchbase

También puede consultar ¿Qué es esta cosa? como demostración pública. (Tenga en cuenta que todo está construido con hosting de nivel libre (Azure y Capella Nivel gratuito), y que sigue desarrollándose activamente. Si nota cierta lentitud o tiempo de inactividad, podría deberse a un exceso de tráfico, ¡lo sentimos!)

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Matthew Groves

A Matthew D. Groves le encanta programar. No importa si se trata de C#, jQuery o PHP: enviará pull requests para cualquier cosa. Lleva codificando profesionalmente desde que escribió una aplicación de punto de venta en QuickBASIC para la pizzería de sus padres, allá por los años noventa. Actualmente trabaja como Director de Marketing de Producto para Couchbase. Su tiempo libre lo pasa con su familia, viendo a los Reds y participando en la comunidad de desarrolladores. Es autor de AOP in .NET, Pro Microservices in .NET, autor de Pluralsight y MVP de Microsoft.

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.