Bases de datos vectoriales y su importancia en IA generativa
Introducción
¿Cuántas veces has oído hablar de las bases de datos vectoriales?
¿Quieres conocer en mayor profundidad uno de los tipos de base de datos más recientes?
¿Deseas entender por qué la mayoría de los proveedores de servicios de inteligencia artificial (IA) han creado productos basados en bases de datos vectoriales?
En este artículo respondemos a todas estas preguntas y te ayudamos a entender por qué son tan importantes las bases de datos vectoriales.
Qué son las bases de datos vectoriales
Las bases de datos vectoriales son un tipo de base de datos diseñada para almacenar datos vectoriales de alta dimensión. Este tipo de base de datos permite administrar e indexar un gran volumen de este tipo de datos, facilitando la búsqueda rápida de vectores similares y permitiendo a los sistemas informáticos establecer comparaciones, identificar relaciones y comprender los datos en función de su contexto.
AWS, CloudFlare, Microsoft y Meta son cuatro ejemplos de grandes apuestas que han sacado al mercado uno o más productos basados en bases de datos vectoriales.
Esto es así porque este tipo de base de datos es omnipresente en el ecosistema de productos que emplean inteligencia artificial, no importa que trabajes con problemas de visión por computador o con tareas de procesamiento del lenguaje natural, las bases de datos vectoriales son una herramienta que vas a utilizar.
Si quieres conocer en mayor profundidad te recomendamos nuestro curso de bases de datos vectoriales en la IA Generativa..
Diferencias con las bases de datos tradicionales
Las bases de datos tradicionales y las bases de datos vectoriales presentan dos enfoques diferentes para almacenar y gestionar datos. Las bases de datos tradicionales están diseñadas para almacenar y gestionar datos estructurados, como texto, números o fechas en una estructura fija y predefinida. Mientras tanto, las bases de datos vectoriales están diseñadas para almacenar y gestionar datos vectoriales de alta dimensión, como pueden ser imágenes, audio y texto.
Las bases de datos tradicionales utilizan técnicas de indexación y búsqueda para recuperar datos, pero resultan muy poco adecuadas a la hora de almacenar datos sin una estructura fija. Las bases de datos vectoriales superan este reto utilizando técnicas de procesamiento de lenguaje natural y aprendizaje automático para indexar y buscar datos, lo que les permite manejar grandes cantidades de datos no estructurados y de alta dimensión de manera eficiente.
Representación de datos
Los modelos actuales de inteligencia artificial nos permiten convertir tanto el texto como las imágenes o los audios en representaciones vectoriales. Estas representaciones vectoriales tiene la ventaja de permitir representar de forma compacta, eficiente y con el mismo formato datos multimodales, es decir, datos que provienen de diferentes fuentes.
Pero esta no es la única ventaja, gracias a arquitecturas neuronales cómo los modelos transformers o los modelos de embeddings podemos generar embeddings que contengan información semántica, es decir, podemos convertir nuestros datos a vectores manteniendo el significado presente en los datos. Gracias a esto podemos determinar que similitud existe entre dos vectores.
Cómo funcionan las bases de datos vectoriales
Para conocer el funcionamiento de las bases de datos vectoriales es necesario saber responder a tres preguntas claves:
- ¿Cómo se crean los vectores?
- ¿Cómo se determina que dos vectores son similares?
- ¿Cómo se llevan a cabo las búsquedas dentro de este tipo de bases vectoriales?
Conversión de datos a vectores
El primer paso para poder utilizar bases de datos vectoriales consiste en crear los vectores a partir de los datos disponibles. A lo largo del tiempo se han utilizado múltiples técnicas para convertir los datos a vectores.
Algunas de las técnicas tradicionales son Word2Vec, vectores de frecuencia o vectores de Fourier, sin embargo, actualmente estas técnicas se encuentran en desuso y los vectores se crean mediante modelos neuronales.
Estos modelos permiten crear vectores contextuales, es decir, los vectores creados dependen del contexto del dato original. Además, los modelos neuronales son más eficientes a la hora de crear vectores de tamaño reducido.
Algunos de los modelos de aprendizaje automático más utilizados son:
- All-MiniLM: Es un modelo que permite convertir textos en vectores. Este modelo fue creado por Meta AI y es accesible a través de oLlama y Hugging Face. Este modelo solamente funciona con datos de texto. Su principal punto fuerte es la creación de vectores de manera muy rápida gracias a su número de parámetros reducido.
- Ada: Es el modelo creado y utilizado por OpenAI para crear vectores. OpenAI continúa mejorando dicho modelo (al igual que hace con los modelos GPT) y la forma más sencilla de utilizar este modelo a través de la API de OpenAI.
- Resnet: Resnet es un modelo creado por Microsoft para convertir imágenes en vectores. Originalmente se utilizó para resolver tareas de reconocimiento de imagen. Históricamente ha sido uno de los modelos más utilizados junto a VGG16 y es accesible a través de la mayoría de las librerías de inteligencia artificial, entre las que destaca Tensorflow, Keras y Pytorch.
- ViT: Los modelos Vision Transformer fueron creado por Google Research Brain Team. Estos modelos se inspiran en la arquitectura Transformer ampliamente utilizada en las tareas de NLP y se encuentran accesibles a través de PyTorch.
Medición de similitud
Para poder evaluar cómo de parecidos son dos vectores se han utilizado diversas métricas a lo largo del tiempo. Esto es debido a que una métrica de similitud que funciona muy bien para resolver tareas de NLP puede no funcionar tan bien cuando se trabajan con datos multimodales.
Algunas de las métricas de similitud más utilizadas lo largo del tiempo son:
- L2: También conocida como distancia euclídea. Es la métrica más intuitiva y se utiliza principalmente para tareas de clasificación. Esta distancia mide cómo de cerca o lejos se encuentran en el plano los vectores.
- Similitud coseno: La similitud coseno es la métrica por excelencia para tareas de recuperación de datos, es decir, para aquellas tareas en las que el objetivo es recuperar un conjunto de vectores a partir de un vector inicial.
- Producto escalar: El producto escalar tiene en cuenta tanto la distancia entre vectores como el ángulo que estos forman. Es una distancia que es muy barata de calcular y es especialmente útil cuando se trabaja con conjuntos de datos extremadamente grandes.
De estas tres métricas queremos destacar la similitud coseno, ya que es la métrica por excelencia utilizada en tareas de NLP.
Búsquedas rápidas y precisas
Las bases de datos vectoriales disponen de funcionalidades avanzadas para permitir búsquedas eficientes en grandes bases de datos de vectores de alta dimensionalidad. Generalmente esto se consigue gracias al uso de técnicas de indexación avanzadas y el uso de algoritmos eficientes como:
- Índices basados en k vecinos más cercanos: Los índices basados en los k vecinos más cercanos calculan en la indexación de los datos los k-vecinos más cercanos y a continuación almacena los vectores dentro de un árbol de búsqueda, el cual permite realizar búsquedas muy rápidas.
- Algoritmos avanzados:
- Hierarchical Navigable Small World (HNSW): Es un algoritmo basado en grafos, de manera que elimina la necesidad de calcular distancia entre sensores para indexarlos, reduciendo el coste computacional.
- Inverted File Index (IVF): Es un algoritmo que reduce el espacio de búsqueda permitiendo encontrar los vectores requeridos de manera más eficiente. Reduce el espacio de búsqueda reorganizando los datos en particiones, de manera que para buscar un vector solamente es necesario buscar en una partición de los datos en lugar de en el total de los datos.
- Índices basados en espacios de Hilbert: Una forma de agilizar la búsqueda de datos en espacios indexados es modificar el espacio de representación de los datos. Los espacios de Hilbert son espacios matemáticos que permiten calcular distancias entre puntos de manera más rápida.
Relación entre bases de datos vectoriales e IA generativa
Las bases de datos vectoriales permiten mejorar el rendimiento de las aplicaciones de inteligencia artificial generativa y habilitan nuevas funcionalidades.
Mejora del rendimiento en IA generativa
El uso de bases de datos vectoriales permite almacenar de forma eficaz información en forma de vectores, permitiendo así usar vectores precalculados.
Un ejemplo de esto son los sistemas RAG (Retrieved Augmented Generation). Un sistema RAG es un sistema de recuperación de la información que combina la búsqueda de información con la generación de información. La búsqueda de información utiliza bases de datos vectoriales y la generación mediante grandes modelos de lenguaje (LLM). El uso de bases de datos vectoriales para almacenar información permite compartir contextos de mayor calidad mejorando así las respuestas generadas por los modelos de lenguaje.
Optimización del entrenamiento
Las bases de datos vectoriales permiten llevar a cabo entrenamientos más rápidos y más eficaces, permitiendo obtener modelos finales de mayor calidad.
Algunas de las técnicas utilizadas para optimizar el proceso de entrenamiento son:
- Selección de ejemplos: Cuando entrenamos redes neuronales podemos encontrar la problemática de que nuestra red funcione generalmente bien, pero para un tipo de datos concreto presente un rendimiento deficiente. Si tenemos los datos almacenados en bases de datos vectoriales podemos buscar ejemplos que sean similares a los ejemplos problemáticos para mejorar el rendimiento final de nuestra red.
- Realizar muestreos de datos: En ocasiones disponemos de más datos de los que computacionalmente podemos tratar, es decir, tenemos la capacidad de entrenar un modelo con 100.000 muestras, pero tenemos más de un millón de datos. En estas situaciones podemos utilizar una base de datos vectorial para muestrear los datos y elegir los 100.000 datos de mayor calidad.
Aplicaciones en NLP e imágenes
Utilizar bases de datos vectoriales permite ampliar la cantidad de tareas abordables mediante el uso de inteligencia artificial generativa.
Las bases de datos vectoriales permiten a los modelos de GenAI (inteligencia artificial generativa) acceder de forma dinámica a documentos, imágenes y videos. Esto permite desarrollar aplicaciones más eficaces de recomendación, búsqueda de información y extracción de información en documentos, reconocimiento de objetos y caras.
Aplicaciones reales de las bases de datos vectoriales en IA generativa
Existe un gran número de casos de uso y aplicaciones de la inteligencia artificial generativa que son posibles gracias a las bases de datos vectoriales, de todos ellos queremos destacar tres.
Búsqueda semántica avanzada
La búsqueda semántica avanzada es la tarea de NLP por la cual buscamos cierta información en un conjunto de documentos de textos no estructurados. La búsqueda semántica tradicional permitía buscar palabras claves en documentos, pero la combinación de bases de datos e inteligencia artificial generativa nos permite buscar a través de preguntas expresadas en lenguaje natural y sin la necesidad de saber qué palabras están presentes en el texto que queremos recuperar.
Este servicio se ha popularizado recientemente, hasta el punto en el que grandes empresas como Microsoft ya comienzan a ofrecer estos servicios.
Reconocimiento de imágenes y generación visual
La tarea de reconocimiento de imagen consiste en clasificar imágenes sobre un conjunto de categorías predefinidas. En las bases de datos vectoriales podemos almacenar las representaciones de objetos, de manera que al analizar imágenes nuevas podemos compararlas y ver qué imagen es más parecida, mejorando así los sistemas de reconocimiento de imágenes.
Disponer de imágenes no solo ayuda a reconocerlas, también ayuda a generarlas, ya que gracias a los vectores se dispone de información relativa a cómo son los objetos que se quieren generar y esta información puede ser utilizada como una base para comenzar a generar las nuevas imágenes.
Recomendaciones personalizadas
Un sistema de recomendación es una solución de inteligencia artificial que permite detectar las necesidades y preferencias de cada cliente de forma personalizada gracias a los modelos predictivos.
Disponer de información en bases de datos nos permite buscar los productos más parecidos a los productos que busca, y por lo tanto conocer las características de los objetos que compra una persona y poder hacer recomendaciones en función de esto.
Conclusiones
Las bases de datos vectoriales son un potenciador de la inteligencia artificial generativa que permite abordar con éxitos nuevas tareas. Gracias a las bases de datos generativas podemos buscar en miles de documentos utilizando lenguaje natural y apenas tardaremos unos segundos.
Este hecho ya ha sido detectado por las grandes empresas tecnológicas como Microsoft o AWS, las cuales ofrecen productos basados en esta tecnología, pero estoy seguro de que todavía existen nuevas aplicaciones que surgirán poco a poco y que nos sorprenderán.
¡Tenemos bases de datos vectoriales para rato!
Lo que deberías recordar de las bases de datos vectoriales
- Las bases de datos vectoriales nos permiten almacenar eficientemente datos de alta dimensionalidad.
- Las bases de datos vectoriales generalmente se usan en combinación con LLMs.
- Las tareas de NLP son las tareas que aprovechan en mayor medida las bases de datos vectoriales.
- La similitud coseno es la medida de similitud más usada en tareas de NLP.
- Las bases de datos vectoriales permiten abordar nuevas tareas como la búsqueda semántica avanzada.