DALL·E 2024 03 18 10.56.20 Imagine a 1024x1024 pixels illustration that visualizes vector databases and their application in PostgreSQL. The image should depict a dynamic intera

Introducción a la Bases de Datos Vectoriales y su aplicación en PostgreSQL

En las bases de datos vectoriales, los datos se almacenan como vectores de alta dimensión. Estos vectores son representaciones de texto, imágenes, audios o vídeos que queremos conservar.

A diferencia de las bases de datos tradicionales, que se basan en relaciones estructuradas y búsquedas exactas gestionadas por SQL, las bases de datos vectoriales son capaces de almacenar y buscar cualquier formato de datos mediante representaciones conocidas como ‘embeddings‘, lo que permite no limitarse únicamente a coincidencias exactas.

En este artículo, nos adentraremos en el concepto de indexación vectorial y exploraremos algunas de las técnicas más populares que se utilizan en diversas bases de datos vectoriales.

También aprovecharemos para conocer las técnicas de indexación que soportan bases de datos vectoriales de código abierto como PostgreSQL.

¡Al turrón!

¿Qué es una base de datos vectorial?

Una base de datos vectorial está diseñada para almacenar datos en forma de vectores, es decir, representaciones numéricas que capturan la esencia de las características de los datos.

Este enfoque ayuda a resolver el reto de comprender las relaciones dentro de los datos en formato texto. Pero, ¿cómo?

Al convertir el texto en un embedding que refleja las relaciones semánticas, estas bases de datos ayudan a los modelos de aprendizaje automático a procesar, recordar e identificar relaciones de forma eficaz.

Las bases de datos vectoriales tienen muchos casos de uso en diferentes dominios y aplicaciones que implican el Procesamiento del Lenguaje Natural (PLN), la Visión por Ordenador (VC), los Sistemas de Recomendación (SR) y otras áreas que requieren la comprensión semántica y el emparejamiento de datos.

¿Qué son los vectores y los embeddings?

Volvamos por un momento a clase de matemáticas. Si recordáis, un vector es una entidad con magnitud y dirección.

Sin embargo, en el contexto de las bases de datos vectoriales, un vector es una lista de números reales que representan diferentes características.

image

Un vector de valores reales que codifica el significado de la palabra es lo que llamamos embedding. Esta técnica se realiza de tal forma que las palabras que están más cerca en el espacio vectorial son similares en significado.

Dicho de otra forma, el embedding consiste en traducir datos de mayor nivel de abstracción en vectores dentro de un espacio de abstracción relativamente baja.

Cómo funciona la búsqueda: Vectores de similitud

En una base de datos tradicional buscamos una coincidencia exacta y obtenemos los resultados.

En las bases de datos vectoriales utilizamos métricas de búsqueda de similitud que calculan la distancia entre los vectores en un espacio de mayor dimensión y obtienen los vectores más similares a nuestro vector de consulta.

Esta técnica se conoce como búsqueda por vecino más próximo aproximado o Approximate Nearest Neighbor (ANN) en Inglés.

image 1

Para calcular esta distancia se suelen utilizar funciones matemáticas como la similitud en el coseno, distancia euclidiana, etc.

Indexación en Bases de Datos Vectoriales

Los vectores no se buscan al azar, sino que se utiliza un índice para mejorar la velocidad de recuperación de los datos. Así organizamos los datos para encontrar rápidamente lo que buscamos.

Un índice no es necesariamente la totalidad de los datos, sino que contiene partes importantes de los mismos.

Existen diferentes métodos de indexación utilizados en las bases de datos vectoriales. En este post, examinaremos brevemente algunas de estas técnicas:

Indexado Plano o Flat Indexing

En este método, los vectores se almacenan sin ninguna modificación y se buscan exhaustivamente o en su totalidad.

Es decir, buscamos la similitud de cada vector con el vector de consulta y devolvemos K vectores con las puntuaciones de similitud más cercanas.

Aunque es fácil de aplicar, la indexación plana es intrínsecamente lenta y más adecuada para conjuntos de datos pequeños donde no nos vemos afectados por la velocidad.

Locality Sensitive Hashing (LSH)

Es una técnica de indexación que utiliza el hashing para optimizar la velocidad y encontrar vecinos aproximados a la consulta.

El hashing normal y el hashing sensible a la localización (LSH) tienen objetivos diferentes.

En LSH, el objetivo es asignar puntos de datos similares (vectores) en un espacio de alta dimensión al mismo hash bucket con alta probabilidad. Esto significa que incluso si dos puntos no son idénticos, siempre que estén cerca, es probable que coincidan en la tabla hash.

Durante la recuperación de datos mediante hashing sensible a la localidad (LSH), el vector de consulta se somete a hashing mediante una función especializada.

De este modo, reducimos significativamente la dimensionalidad del espacio de búsqueda, ya que sólo es necesario realizar comparaciones con los vectores que se encuentran dentro del cubo identificado.

Indexación de archivos invertida

En la indexación de archivos invertida, dividimos los vectores en grupos de vectores similares entre sí y hallamos sus respectivos centroides.

Al buscar el vector de consulta, lo comparamos con los centroides de los clusters y, a continuación, seguimos buscando en los clusters respectivos a los centroides más similares al vector de consulta.

«Nprobe» indica el número de centroides más cercanos que hay que considerar, que a su vez indica de forma similar el número de clusters con los que preferimos comparar nuestro vector de consulta.

PostgreSQL y pgvector

PostgreSQL es una base de datos avanzada de código abierto ampliamente adoptada por sus capacidades relacionales y NoSQL.

Por supuesto, PostgreSQL también soporta características de bases de datos vectoriales.

Gracias a los colaboradores de pgvector, una extensión que añade características de bases de datos vectoriales a PostgreSQL.

Conclusión

En resumen, la evolución y adopción de las bases de datos vectoriales marcan un avance significativo en la IA.

Las bases de datos vectoriales destacan en la comprensión y recuperación de datos basados en la similitud semántica, gracias a su uso de incrustaciones y técnicas avanzadas de indexación.

PostgreSQL también está aumentando su popularidad como base de datos vectorial a través de su extensión pgvector.

Si estás interesado en probar PostgreSQL y sus características vectoriales, no dudes en ponerte en contacto hoy mismo para que podamos ayudarte.

    ¿Tienes alguna consulta?

    Ya sea que necesites mejorar el rendimiento de consultas existentes, planificar y ejecutar migraciones de datos críticas, diseñar bases de datos desde cero o mantener un entorno de base de datos estable, estamos aquí para ayudarte.

    Trabajamos con una amplia variedad de sistemas de gestión de bases de datos (DBMS) y estamos comprometidos en proporcionar soluciones adaptadas a tus necesidades específicas. Puedes consultar nuestra lista completa de servicios aquí.

    Confía en nosotros para optimizar tus bases de datos y liberar tiempo y recursos para que puedas concentrarte en lo que realmente importa: hacer crecer tu negocio.

    ¡Contáctanos hoy mismo y descubre cómo podemos ayudarte a lograr un rendimiento óptimo en tu entorno de bases de datos!


    Comentarios

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *