Base de datos de código abierto de Weaviate para búsqueda vectorial

Weaviate es uno de los nombres cuando se habla del desarrollo de motores de búsqueda vectorial. Pero, ¿qué significa la búsqueda vectorial y por qué es relevante?

En los últimos años, las áreas relacionadas con el desarrollo de motores de búsqueda, programación de lenguaje natural (NLP, por sus siglas en inglés) y Machine Learning (ML, o aprendizaje automático) han experimentado varios descubrimientos y avances. Esto incluye nuevas herramientas y paradigmas para ofrecer mejores resultados.

Sobre este tema, cuando se piensa en motores de búsqueda, tal vez lo primero que viene a la mente son los motores de búsqueda y los indexadores en Internet, como Google o Bing. Sin embargo, “la búsqueda vectorial marca un cambio importante de este método tradicional de recuperación de información a un futuro en el que todos los datos complejos que conforman los activos de contenido modernos se pueden poner a trabajar”, como se explica en este artículo en la página web del Search Engine Journal.

Pero, vamos a desglosar estos conceptos para entender mejor esta área.

¿Qué son los vector embeddings?

En pocas palabras, un motor de búsqueda vectorial funciona con vector embeddings (incrustaciones vectoriales) en lugar de palabras clave. Mientras que los algoritmos de “búsqueda tradicional” verifican una lista de filas hasta encontrar una que se ajuste a los criterios en la base de datos, la búsqueda vectorial utiliza ML para capturar el contexto y el significado de los datos no estructurados. De esta manera, los algoritmos de ML pueden analizar y leer diferentes formatos (texto, imágenes, audio y datos) como datos numéricos.

El concepto de “similitud vectorial” también es fundamental aquí. Compara la semejanza de los objetos capturados por los modelos de ML e identifica las similitudes como los valores más cercanos. Permite búsquedas semánticas, búsquedas de imágenes y mejores recomendaciones.

¿Qué son las bibliotecas ANN?

Este documento define una Approximate Nearest Neighbor (ANN) como “una biblioteca escrita en C++, que admite estructuras de datos y algoritmos para la búsqueda exacta y aproximada del ‘vecino más cercano’ en dimensiones arbitrariamente altas”. Las bibliotecas ANN han sido un recurso para los motores de búsqueda. No obstante, este método tiene algunas limitaciones, incluyendo la falta de capacidades en tiempo real y la mutabilidad. Además, es clave considerar la cantidad de datos en la que las empresas necesitan buscar para completar estas tareas.

“Es posible haber oído hablar de Annoy de Spotify, Faiss de Facebook, o ScaNN de Google. Lo que todos tienen en común es que hacen un equilibrio consciente entre la precisión (exactitud y memoria) y la velocidad de recuperación (…) Sin embargo, hay otra compensación, o trade-off, que los ingenieros tienen que hacer al usar modelos ANN. Muchas de las bibliotecas comunes de ANN no están a la altura de algunas de las características a las que estamos acostumbrados cuando trabajamos con bases de datos y motores de búsqueda tradicionales”, explica Etienne Dilocker, cofundador y director de tecnología de SeMi Technologies.

Aquí es donde entra en juego la búsqueda vectorial, ya que permite una ejecución más rápida y generar resultados más relevantes.

Motor de búsqueda vectorial de Weaviate

Según sus creadores, “uno de los retos más recurrentes se presentaba al momento de nombrar y buscar. ¿Cómo llamaríamos a ciertos objetos y cómo podríamos encontrar datos que estuvieran estructurados de diferentes maneras?”. Estas primeras preguntas llevaron al desarrollo de Weaviate, al pasar de un enfoque más tradicional “donde el elemento semántico (NLP) era una característica en lugar de la arquitectura central” a una herramienta más refinada con el elemento de búsqueda semántica y la clasificación semántica como características centrales. En este contexto, “uno de los objetivos al diseñar Weaviate era combinar la velocidad y las capacidades a gran escala de los modelos ANN con toda la funcionalidad que disfrutamos de las bases de datos”.

Ahora, Weaviate se presenta oficialmente como “un motor de búsqueda de código abierto con un modelo de NLP incorporado. (…) Lo que hace que Weaviate sea único es que almacena datos en un espacio vectorial en lugar de una columna de fila tradicional o una estructura gráfica, lo que le permite buscar en los datos en función de su significado en lugar de solo palabras clave”.

Entre algunos ejemplos de implementaciones existen:

●   Clasificación de recibos por categorías.

●   Buscar en los documentos conceptos específicos en lugar de palabras clave.

●   Búsquedas en páginas web.

●   Gráficos de conocimiento de un producto.

¿Cómo funciona Weaviate?

Etienne Dilocker también señala que “cualquier objeto importado en Weaviate puede ser consultado inmediatamente, ya sea a través de una búsqueda por su id, una búsqueda de palabras clave utilizando índice invertido o una búsqueda vectorial. Esto hace de Weaviate un motor de búsqueda vectorial en tiempo real. Además, debido a que Weaviate también utiliza un modelo ANN subyacente, la búsqueda vectorial va a ser tan rápida como con una biblioteca”.

Un diagrama sobre la estructura de Weaviate. Fuente.

Este análisis de Analytics Vidhya enumeró algunas consideraciones y detalles sobre Weaviate:

●   Weaviate es una base de datos persistente y tolerante a fallos.

●   Internamente, cada clase en el esquema definido por el usuario de Weaviate resulta en el desarrollo de un índice. Un tipo de clasificación que consiste en uno o más fragmentos se denomina índice, y los fragmentos son unidades de almacenamiento autónomas dentro de un índice.

●   Se pueden utilizar múltiples fragmentos para dividir automáticamente la carga entre múltiples nodos de un servidor, lo que actúa como un balanceador de carga. Cada sección fragmentada consta de tres componentes principales: almacén de objetos, índice invertido y almacenamiento de índice vectorial.

●   El almacenamiento de objetos y el almacenamiento invertido se han desarrollado con una arquitectura LSM-Tree. Esto significa que los datos se pueden consumir a velocidad de memoria y, si se alcanza un umbral, Weaviate escribirá la memoria completa (ordenada) en un segmento de disco.

●   Weaviate primero examinará la Memtable para la actualización más reciente de un objeto específico cuando reciba una solicitud de lectura. Weaviate comprobará todos los segmentos escritos previamente, comenzando con los más recientes, si no están presentes en la Memtable. Los filtros “Bloom” evitan examinar segmentos que no contienen los objetos solicitados.

●   El almacenamiento invertido/objetos emplea una técnica LSM basada en la segmentación. El índice vectorial, por otro lado, no se ve afectado por la segmentación y es independiente de esos almacenamientos de objetos.

●   Hierarchical Navigable Small-World graph (HNSW) es el primer tipo de índice vectorial soportado por Weaviate que actúa como un gráfico multicapa.

Ventajas de usar Weaviate

●       Métodos y lenguajes: funciona con diferentes métodos como GraphQL o REST, así como con varios lenguajes de programación, como Python, Javascript y Go.

●   Accesibilidad y escalabilidad: Weaviate es nativo de la nube y de código abierto. Además, ofrece un modelo de precios inspirado en el principio de “pay-as-you-grow”, de acuerdo al uso.

●   Modularidad: Weaviate puede cubrir una amplia variedad de bases, y viene con módulos opcionales para texto, imágenes y otros tipos de contenido. Estos módulos pueden hacer la vectorización. Es posible combinar módulos y establecer una relación entre ellos. Por ejemplo: un objeto de texto y un objeto de imagen correspondiente.

●   Agnóstico: Weaviate es agnóstico por defecto. “Esto significa que los equipos con experiencia en ciencia de datos y ML simplemente pueden seguir utilizando sus modelos ajustados e importar sus objetos de datos junto con sus posiciones de vectores existentes”.

Algunas ventajas de las bases de datos:

●  Soporte para CRUD.

●  Resultados en tiempo real, o casi en tiempo real.

●  Mutabilidad.

●  Persistencia.

●  Consistencia y resiliencia.

Primeros pasos

Los ingenieros de software están utilizando Weaviate como una base de datos ML-first para sus aplicaciones. De esta manera, los ingenieros de datos pueden utilizar una base de datos de vectores construida desde el inicio con ANN en su núcleo, y los científicos de datos pueden implementar sus aplicaciones de búsqueda con MLOps.

Hay tres formas de usarlo:

  1. Weaviate Cloud Service
  2. Docker
  3. Kubernetes

Para obtener más información sobre Weaviate, consulta su documentación.

Scroll to Top