• Blog
  • IA
  • ¿Qué es una base de datos vectorial y por qué es el motor de la Inteligencia Artificial?

¿Qué es una base de datos vectorial y por qué es el motor de la Inteligencia Artificial?

15min

En los últimos años hemos visto cómo han tomado un gran protagonismo las bases de datos vectoriales, básicamente por ser una pieza clave en los sistemas modernos de Inteligencia Artificial. Se usan principalmente para trabajar con información basada en significado, no sólo con datos de valores exactos. Vamos a ver por qué es importante esta tecnología, cómo funciona y en qué áreas y casos de uso de la IA tienen mayor incidencia.

Índice

¿Qué son las bases de datos vectoriales?

Una base de datos vectorial es un sistema diseñado para almacenar, indexar y consultar vectores o matrices, solo que está optimizada específicamente para vectores de alta dimensión. Estos vectores son el soporte de almacenamiento lo que llamamos «embeddings», una forma de convertir un dato en una lista de números que captura su significado, generados por modelos de machine learning. Gracias a los embeddings se transforman texto, imágenes, audio u otros datos en arrays numéricos que representan su significado.

En el contexto de la IA cualquier frase traducida a embeddings, o vectores de alta dimensión, captura su significado de una manera adecuada para el procesamiento informático. Esos embeddings serán más próximos o similares si las frases tienen significados cercanos. Por ejemplo, tomando dos frases como «comprar zapatillas deportivas» o «adquirir calzado deportivo», a pesar de estar compuestas por palabras distintas tendrán vectores bastante aproximados porque su significado es muy similar.

Por tanto, las bases de datos vectoriales capturan el significado de las cosas y son esenciales para permitir búsquedas eficientes de vectores similares, lo que habilita funcionalidades como búsqueda semántica, clustering o recomendación basada en contenido.

Bases de datos vectoriales frente a relacionales (SQL) y NoSQL

Las bases de datos vectoriales, a pesar de ser bases de datos como las relacionales o las bases de datos NoSQL, tienen unas funcionalidades bastante diferentes, así como usos totalmente distintos. En los próximos puntos vamos a explicar las diferencias más importantes.

Tablas y documentos frente a arrays numéricos multidimensionales

Las bases de datos tradicionales, especialmente las bases de datos relacionales, organizan la información en tablas con filas y columnas. Si bien las NoSQL suelen trabajar con lo que se llaman «documentos» claves-valor o grafos, en ambos casos los datos tienen una estructura explícita que sirve para organizar la información.

Sin embargo, las bases vectoriales almacenan arrays numéricos multidimensionales, donde cada dimensión no tiene un significado directo para los humanos. En su conjunto representan características del dato original, aunque están representadas para que las máquinas las puedan entender y procesar.

Coincidencia exacta y lógica booleana frente a similitud semántica aproximada

Otra cosa que distingue claramente a las bases de datos tradicionales, SQL y NoSQL, de las bases de datos vectoriales es que están diseñadas para consultas de naturaleza diferente.

Como ya sabrás, las bases de datos tradicionales están diseñadas para consultas exactas o basadas en condiciones lógicas: igualdad, rangos, flags, etc. En todo caso, el resultado depende siempre de coincidencias precisas.

Sin embargo, las bases vectoriales operan de manera bien distinta, ya que están diseñadas para consultas de similitud aproximada. Y aquí el término «aproximada» es muy importante porque las bases de datos vectoriales, en lugar de preguntar por un valor exacto, mayor, menor, etc. lo que hacen son búsquedas de elementos parecidos a un vector.

Estructuras B-Tree y LSM-Tree frente a grafos HNSW y cuantización vectorial

Ya si nos ponemos más técnicos, las bases tradicionales utilizan estructuras como B-Tree o LSM-Tree para optimizar búsquedas y escrituras, mientras que las bases vectoriales emplean estructuras específicas como grafos HNSW o técnicas de cuantización como IVF que están pensadas para recorrer el espacio vectorial de forma eficiente sin tener que comparar todos los vectores. Luego explicaremos mejor cómo funcionan esos mecanismos de las bases de datos vectoriales.

Consistencia transaccional frente a velocidad de búsqueda del vecino más cercano

Hay otra diferencia especialmente patente en las bases de datos relacionales, donde lo que prima es la consistencia de los datos, asegurando aspectos como atomicidad, aislamiento y durabilidad (propiedades ACID), aparte de la conocida integridad referencial.

Pues bien, todas estas características no tienen aplicación en bases vectoriales, donde el foco está en la velocidad y la eficiencia de la búsqueda del vecino más cercano (Nearest Neighbor). Además, en estas consultas se aceptan aproximaciones para ganar rendimiento, especialmente cuando hay que manejar grandes volúmenes de datos.

Rigidez relacional frente a la naturaleza dinámica de los espacios vectoriales

Por último, los esquemas relacionales requieren definir estructuras rígidas que suelen ser bastante estables, o cuyos cambios implicarían muchas veces migraciones complejas.

Por su parte, en las bases de datos vectoriales tenemos mucha flexibilidad. Esto quiere decir que se pueden generar nuevos embeddings con distintos modelos o características sin necesidad de redefinir estructuras rígidas.

¿Cómo se busca en el espacio vectorial?

Como hemos dicho antes, el tipo de búsqueda que se realiza en las bases de datos vectoriales es bastante diferente al que conocemos en las bases de datos tradicionales. Para entender este tipo de bases de datos es importante detenernos un poco en los procesos de búsqueda que se dan en el espacio vectorial. Vamos a analizarlos en los próximos puntos.

El proceso de indexación con algoritmos HNSW (Hierarchical Navigable Small World) y cuantización IVF

Lo primero que debemos saber es que las bases de datos temporales crean un grafo jerárquico en el que cada nodo está conectado con sus vecinos más cercanos. Esta estructura es esencial para el rendimiento de las búsquedas en las bases de datos vectoriales y hace las veces de lo que conocemos como índices en las bases de datos relacionales.

El algoritmo HNSW es el encargado de crear ese grafo jerárquico y permite realizar búsquedas de una manera sencilla y reduciendo drásticamente el número de comparaciones.

Luego tenemos otro proceso esencial, que es la cuantización IVF (Inverted File Index). Este proceso divide el espacio vectorial en regiones o clusters, de modo que primero se identifica el cluster más relevante y luego se buscan vecinos dentro de esa zona, lo que mejora todavía más la eficiencia.

Métricas de similitud matemática

Para calcular la similitud entre vectores se utilizan métricas matemáticas como: la distancia euclídea, que mide la distancia directa entre dos puntos, o la similitud de coseno, que evalúa el ángulo entre vectores. En algunos sistemas donde la magnitud también importa se usa el producto escalar.

Sin entrar en detallar esos procesos matemáticos, lo que debemos saber es que cada una de estas métricas nos ofrece resultados de distintos tipos que tienen distintas implicaciones e interpretaciones sobre la cercanía semántica.

El desafío de la búsqueda del vecino más cercano (KNN) a gran escala

Aunque a bote pronto pueda parecernos fácil encontrar el vector más cercano a uno dado, pues podríamos pensar que solo es cuestión de compararlos, este proceso resulta todo un reto. Piensa que los vectores tienen cientos o miles de dimensiones y que existen millones de vectores en la base de datos de un modelo.

Es por ello que en realidad este problema se vuelve muy costoso computacionalmente hablando. Para aligerarlo se utilizan técnicas de Approximate Nearest Neighbor (ANN), que sacrifican exactitud perfecta a cambio de un rendimiento mucho mayor, manteniendo resultados suficientemente buenos para aplicaciones prácticas.

Casos de uso de las bases de datos vectoriales en IA

Las bases de datos vectoriales se usan en muchos procesos dentro de la rama de la inteligencia artificial, siendo los siguientes algunos de los ejemplos más relevantes.

Implementación de sistemas RAG para dotar de memoria contextual externa a los LLM

En sistemas RAG las bases de datos vectoriales son esenciales para almacenar todos los datos que queremos que el modelo maneje y pueda utilizar de un modo eficiente. Si no sabes qué son sistemas Retrieval-Augmented Generation te recomendamos leer el post dedicado a RAG en nuestro blog. Pero en resumen, estas soluciones combinan modelos de lenguaje con bases vectoriales. Las bases de datos vectoriales se usan para recuperar información relevante y los LLM para facilitar la interacción con el usuario y presentar los datos que hayan encontrado de una manera adecuada y que haga sentido para las intenciones del usuario.

Motores de recomendación semántica basados en el comportamiento profundo del usuario

Podemos usar bases de datos vectoriales con sus embeddings para capturar patrones complejos de comportamiento. De este modo, en lugar de recomendar por coincidencias simples, se pueden sugerir contenidos o productos basados en similitud semántica, lo que ofrece una experiencia mucho más inteligente de cara al usuario.

Sistemas de búsqueda inversa de imágenes y reconocimiento de patrones multimedia sin metadatos

Gracias a las bases de datos vectoriales podemos hacer sistemas de búsqueda inversa de imágenes. Para ello, una imagen puede transformarse en un vector y compararse con millones de otras imágenes sin necesidad de etiquetas u otro tipo de metadatos.

Detección proactiva de anomalías y prevención de fraude mediante agrupamiento vectorial

Otro tema muy relevante en el mundo de la seguridad es la detección proactiva de anomalías y prevención de fraude, donde los vectores permiten modelar comportamientos normales. Luego, se pueden analizar las desviaciones con respecto a los comportamientos detectados y cuando hay diferencias significativas pueden asumirse como anomalías, lanzando alertas de seguridad o de fraude. O al revés, guardar comportamientos anómalos para compararlos con los observados durante el uso del sistema, de modo que estaríamos detectando actividades sospechosas.

Automatización del servicio al cliente mediante chatbots corporativos con acceso a documentación interna

Si se indexa documentación en forma de embeddings, los chatbots pueden recuperar respuestas relevantes de forma semántica, lo que hace que sean mucho más útiles y relevantes para las costumbres o usos de las empresas, haciendo mucho más certeros los sistemas, ya que se basan en el conocimiento interno de una organización.

Bases de datos vectoriales open source

A pesar de que las bases de datos vectoriales han empezado a popularizarse de manera más reciente ya existe un nutrido ecosistema de alternativas open source. Ahora vamos a nombrar las más populares, junto con sus distintos enfoques.

  • Milvus es una base de datos muy popular, diseñada para entornos que necesitan escalar, desde un portátil hasta arquitecturas distribuidas, manteniendo búsquedas de similitud rápidas sobre grandes volúmenes de vectores. Su propuesta encaja muy bien en escenarios de IA generativa donde el volumen de embeddings puede crecer hasta miles de millones de vectores.
  • Qdrant es una opción también muy conocida que se suele usar mucho cuando los vectores se integran con metadatos. Al estar escrita en Rust se la considera una de las más rápidas.
  • Weaviate es otra de las soluciones open source más conocidas en el mundo vectorial, especialmente popular por su orientación a aplicaciones semánticas y por integrar búsqueda vectorial con esquema y metadatos. Suele ser elegida, junto con las dos anteriores, para realizar sistemas RAG.
  • Chroma es más popular por su sencillez y por estar muy orientada a prototipado y aplicaciones de IA generativa. No requiere una infraestructura compleja, por lo que suele encajar muy bien en proyectos donde se quiere empezar rápido.
  • pgvector es en realidad una extensión de PostgreSQL para almacenar y consultar vectores dentro de una base de datos relacional. Su gran ventaja es que permite mantener datos estructurados y embeddings en el mismo sistema, lo que simplifica arquitectura, para usarla en aplicaciones que requieran ambos modelos de almacenamiento de datos.

Preparando la información para tu base de datos vectorial

Trabajar con bases de datos vectoriales requiere preparar adecuadamente los datos que se van a indexar mediante un proceso que incluye varios pasos.

Durante este proceso no solo se generan los vectores sino que se necesita diseñar cómo se van a estructurar, enriquecer o incluso actualizar. Vamos a describir todos estos pasos para que te hagas una idea más exacta del proceso.

Estrategias de fragmentación (Chunking)

Todo comienza por la fragmentación de los datos en un proceso que habitualmente conocemos con el término Chunking. La fragmentación nos permite dividir la información en bloques más pequeños y manejables. Esto se hace no solo porque sea más viable su tratamiento, sino por su utilidad. Piensa que cada pequeño pedazo puede albergar un significado propio que queremos poder localizar.

Esto es especialmente importante en textos largos, como documentación o artículos donde, si genera un vector de un artículo completo, no nos serviría de mucho para buscar por parecidos. Lo ideal es tener segmentos del artículo para poder encontrar referencias más específicas que se ajusten bien a las búsquedas típicas que realizan los usuarios

Como entenderás, un fragmento demasiado grande puede diluir el significado pero también uno demasiado pequeño puede perder contexto. Es por ello que realizar la fragmentación requiere un buen equilibrio entre granularidad y coherencia semántica. Además, el proceso de chunking también se hace en combinación técnicas de overlapping, que consisten en crear fragmentos que se solapan parcialmente los unos a los otros.

Selección del modelo de embeddings

Un segundo paso consiste en seleccionar el modelo de embeddings, ya que está elección determina cómo se representará la información en el espacio vectorial. Esto es importante porque no es lo mismo indexar textos legales que descripciones de productos o imágenes.

Existen diversos modelos de embeddings que afectan al dominio, el idioma, la dimensionalidad del vector, el equilibrio entre calidad y coste computacional, etc.

Ingesta en tiempo real (Real-Time Ingestion) frente a procesamiento por lotes (Batch Processing)

También es importante definir el modo de ingesta que se realizará para construir los embeddings. Este modo define la forma en que los datos se incorporan a la base vectorial.

Por un lado, tenemos la ingesta en tiempo real que permite que los nuevos datos estén disponibles inmediatamente para búsqueda. Este modo puede ser interesante en aplicaciones dinámicas como sistemas de soporte o monitorización. Pero la mayor parte de las veces el procesamiento se da por lotes, pues resulta más eficiente cuando se manejan grandes volúmenes de datos y no se requiere tanta inmediatez.

Enriquecimiento de vectores

Aparte del vector muchas bases de datos funcionan también con metadatos asociados. Esto hace que los vectores todavía cobren mayor valor.

Es habitual añadir información contextual como categorías, fechas, identificadores o etiquetas, lo que nos permite combinar búsqueda semántica con filtros estructurados, mejorando la precisión de los resultados.

Seguridad, privacidad y gobernanza en el almacenamiento de vectores

Antes de terminar sería importante abordar algunos aspectos sobre seguridad y privacidad de la información que almacenamos en las bases de datos vectoriales. Esto es especialmente crítico cuando se trabaja con datos sensibles o personales.

Control de acceso basado en roles (RBAC) a nivel de documento y metadatos vectoriales

Se debe incorporar un control de acceso a las bases de datos vectoriales, pero no solo a los vectores sino también a los metadatos. El control de acceso basado en roles (RBAC) permite definir qué usuarios o sistemas pueden consultar, insertar o modificar determinados vectores, ya sean personas o departamentos.

El riesgo del Embedding Inversion

El Embedding Inversion consiste en intentar reconstruir información original a partir de su representación vectorial. En realidad esta tarea no es trivial pero ya existen ataques que se basan en aproximar datos sensibles. Es por ello que se debe limitar el tipo de información que se vectoriza, aplicar técnicas de anonimización y controlar el acceso a los vectores.

Cumplimiento normativo (RGPD y CCPA) al almacenar datos personales en espacios vectoriales multidimensionales

Los embeddings, aunque sean solamente vectores matemáticos, pueden considerarse también datos personales, si es que permiten identificar aunque sea indirectamente a un individuo. Esto implica que deben cumplir normativas como el RGPD en Europa o la ley equivalente en Estados Unidos, CCPA.

Estrategias de cifrado de vectores tanto en tránsito como en reposo en la infraestructura de IA

Lo bueno de las soluciones como RAG es que se pueden hacer en unas situaciones en las que los vectores queden completamente dentro de la gobernanza de las empresas dueñas de los datos. Sin embargo, si se van a usar en tránsito es importante aplicar técnicas de cifrado. Así mismo, existe también el cifrado en reposo, que resulta también importante para proteger los datos almacenados en discos o sistemas persistentes.

Fernando Fuentes

Productos relacionados: