Con el auge que han tenido los Grandes Modelos de Lenguaje (LLMs) en los últimos años, hemos comenzado a escuchar un término que se repite constantemente cuando hablamos de aplicaciones de Inteligencia Artificial: la base de datos vectorial.
Estas bases de datos vectoriales son uno de los elementos centrales en múltiples sistemas de Inteligencia Artificial modernos que hacen uso de LLMs. Nos permiten, por ejemplo, consultar nuestra propia documentación privada, generar agrupaciones de documentos que tienen contenidos o significados semánticos similares e incluso desarrollar sistemas de recomendación precisos basados en el lenguaje natural.
Así que en este artículo vamos a entender en detalle qué es una base de datos vectorial y por qué se ha convertido en la pieza fundamental de gran parte de las aplicaciones de Inteligencia Artificial en la actualidad.
El problema: limitaciones de los modelos de lenguaje con datos privados
Para entender la necesidad de una base de datos vectorial, supongamos una situación hipotética: existe un equipo de abogados que está desarrollando un caso legal centrado en cláusulas de confidencialidad. Y para apoyar este caso, cuentan con una extensa documentación: contratos, legislación vigente y sentencias previas.
El objetivo del equipo es tomar toda esta documentación y extraer la información más relevante para construir su caso. Como ingenieros de Inteligencia Artificial, nuestro reto es facilitar este proceso de recolección de información.
La solución ideal sería crear un asistente de Inteligencia Artificial donde el equipo de abogados pueda realizar consultas en lenguaje natural. Por ejemplo, podrían preguntar: «¿Hay casos similares al que estamos manejando actualmente donde se haya incumplido alguna cláusula de confidencialidad?»
Idealmente, esta Inteligencia Artificial debería entregar como respuesta un listado estructurado de casos, indicando las empresas involucradas y el tipo de incumplimiento dado. El resultado esperado sería algo como:
- Caso 1: empresa XYZ contra la Empresa ABC en el año 2018. Hubo un incumplimiento de confidencialidad en acuerdos de software.
- Caso 2: compañías no especificadas en el año 2020. Incumplimiento en términos de licenciamiento.
- Caso 3: empresas SecureSoft y Data Trust en el año 2019. Incumplimiento de confidencialidad en un contrato de asociación tecnológica.

Esta respuesta tan específica debería provenir directamente de los documentos de soporte que posee el equipo legal.
Pero, ¿qué es lo que ocurre con los sistemas tradicionales? Los modelos de lenguaje masivos, como los que utilizan ChatGPT o Gemini de Google, están entrenados con una cantidad colosal de datos públicos, pero no tienen la información específica y privada que permita dar una respuesta precisa a los abogados. Esa información confidencial reside únicamente en la documentación del equipo legal.
Así que acá podemos plantearnos la siguiente pregunta: ¿cómo desarrollamos un sistema o asistente capaz de responder preguntas específicas provenientes de nuestra propia base de conocimiento, aprovechando la capacidad de comprensión del lenguaje natural que tienen de los Grandes Modelos de Lenguaje?
La arquitectura del asistente: interacción con la base de conocimiento
En esta aplicación hipotética tenemos, por un lado, al usuario (el grupo de abogados) y, por otro, lo que se conoce en la industria como una Base de Conocimiento (una serie de documentos con la información de valor).
El problema de esta base de conocimiento es que es demasiado extensa o el equipo no cuenta con el tiempo suficiente para explorarla manualmente, por lo que se requiere un intermediario.
El Gran Modelo de Lenguaje sirve precisamente como este intermediario. El flujo ideal de información es el siguiente:

- El usuario presenta una pregunta al modelo de lenguaje.
- El modelo procesa la solicitud y consulta la información con la base de conocimiento.
- Se extrae la información pertinente de la base de conocimiento.
- El modelo genera o escribe una respuesta en lenguaje natural (el lenguaje que usamos los seres humanos).
- Se retorna la respuesta a través de una interfaz de usuario, como un chat.
Sin embargo, hay un detalle técnico crítico en este proceso: los Grandes Modelos de Lenguaje no interpretan directamente el lenguaje tal como nosotros lo escribimos. Procesan la información a través de números, aunque en última instancia generen una respuesta en lenguaje natural para que nosotros podamos interpretarla. Este paso intermedio de traducción numérica nos lleva al concepto de los embeddings.
El paso intermedio: ¿qué son los embeddings?
El concepto de embedding es fundamental para entender el funcionamiento de nuestro sistema. Cuando le presentamos a un modelo de Inteligencia Artificial una secuencia de texto (una frase, un conjunto de palabras, un párrafo o un documento completo), el gran modelo de lenguaje analiza cada una de las palabras y las relaciones sintácticas y semánticas que existen entre ellas.
Al finalizar este análisis, el modelo genera una codificación: el embedding. Un embedding es, matemáticamente hablando, un vector (un listado de cantidades numéricas) que es único para cada frase y representa de manera exacta esa secuencia de texto.
Este vector tiene una propiedad fascinante: cuando las frases tienen significados similares, su codificación (embedding) también es similar. Al analizar la relación entre cada palabra y su contexto general, esta representación vectorial es capaz de capturar el significado profundo del texto:

Esta es la idea básica de los embeddings y este es el lenguaje que utilizan internamente los LLMs para interpretar la información recibida y generar las respuestas esperadas.
Definiendo la Base de Datos Vectorial
Habiendo repasado el concepto de embeddings, resulta muy sencillo entender qué es una base de datos vectorial.
Volvamos al asistente de IA para el equipo legal. Para que el sistema funcione, la consulta realizada por el abogado debe convertirse en un embedding. De igual manera, toda la base de datos de conocimiento tiene que estar representada de manera vectorial a través de embeddings.
Cuando observamos la base de conocimiento, nosotros (como humanos) vemos cientos de documentos de texto con sentencias, artículos y contratos. Pero para que el gran modelo de lenguaje pueda extraer información eficiente de ellos, la base de conocimiento se le debe presentar de forma numérica.
El proceso es el siguiente:
- Se toman todos los documentos que sirven como soporte. En ocasiones, podremos codificar todo un documento en un solo embedding.
- Sin embargo, cuando los documentos son excesivamente grandes, tendremos que partirlos en pequeños trozos (chunks).
- Cada trozo de texto se codifica numéricamente, transformándose en un embedding o vector.
- Este conjunto masivo de embeddings, donde cada vector tiene una representación particular que guarda relación con el sentido humano del texto, se almacena de forma estructurada.
Esa estructura de almacenamiento masivo conformada por representaciones vectoriales del texto es lo que precisamente se conoce como Base de Datos Vectorial:

En resumen, una base de datos vectorial es una estructura de almacenamiento especializada que contiene las representaciones vectoriales de nuestro texto sirviendo como base de conocimiento. Su característica principal es que fácilmente puede ser consultada; así, cuando queramos hacer una búsqueda, el proceso será sumamente eficiente y rápido.
Modelos multimodales y datos vectoriales
Las capacidades de las bases de datos vectoriales no se limitan al texto. En la actualidad existen modelos que no son únicamente de lenguaje, sino que son modelos multimodales, es decir, que pueden analizar texto, imágenes, videos e incluso sonido.
Por consiguiente, una base de datos vectorial puede contener embeddings que no representen solo texto, sino imágenes, fragmentos de video o archivos de audio. Esto puede enriquecer enormemente el proceso de búsqueda, ya que toda esta información, independientemente de su formato original, comparte un formato uniforme: la representación vectorial.
Cuando tenemos toda esta información multimedia almacenada en formato vectorial, realizar una consulta a esa base de datos sigue siendo un proceso muy sencillo.
¿Cómo funcionan las consultas?: la similitud del coseno
Entender cómo se recupera la información de una base de datos vectorial es clave.
Por un lado, la consulta escrita por el usuario en lenguaje natural es representada numéricamente como un embedding. Por otro lado, la base de datos de conocimiento también contiene representaciones vectoriales. Así que cuando queremos realizar una consulta, simplemente tenemos que realizar una comparación de vectores. Tras esta comparación, se extraen únicamente los resultados que presenten un grado de similitud muy alto con la consulta.
Esta comparación se realiza usando una operación matemática conocida como la similitud del coseno.
Ejemplo de comparación de vectores y similitud del coseno
Entendamos de manera intuitiva en qué consisten estas comparaciones suponiendo que compararemos semánticamente tres frases:
- Frase 1: «Me gustaría conocer las tarifas de vuelos entre Madrid y Milán».
- Frase 2: «El costo de mantenimiento de este vehículo es muy elevado».
- Frase 3: «Quiero encontrar tiquetes de primera clase ida y vuelta de Nueva York a Miami».
Y para simplificar las cosas y poder interpretar gráficamente esta comparación, supondremos que cada frase se codifica con un embedding de tan sólo dos dimensiones. En la siguiente figura vemos la ubicación de estas frases/embeddings en un espacio bidimensional:

Dado que la Frase 1 habla de tarifas de vuelos y la Frase 2 habla del mantenimiento de un vehículo, son semánticamente muy distintas. Sus representaciones vectoriales apuntarán en direcciones muy diferentes. Si se calcula la similitud del coseno entre estos dos vectores, obtendremos un valor muy cercano a 0, indicando que no hay un alto grado de similitud.
Si observamos el lado derecho de la figura anterior, veremos que los embeddings de ambas frases están relativamente alejados, lo cual coincide precisamente con este bajo grado de similitud.
Por otra parte, si comparamos las frases 1 y 3 veremos que semánticamente son más cercanas (ambas tratan sobre búsqueda de vuelos). Al analizar su representación gráfica (a la derecha en la figura anterior) encontraremos que ambos embeddings están relativamente cerca. Y de hecho, si calculásemos la similitud del coseno correspondiente obtendríamos un valor relativamente alto, que corresponde precisamente a un alto grado de similitud.
Así que estas son precisamente las comparaciones vectoriales que se ejecutan al utilizar bases de datos vectoriales. Cuando el usuario hace la consulta, el modelo la vectoriza, la compara para encontrar coincidencias y extrae la información estrechamente relacionada con la pregunta planteada.
Y esta es la gran ventaja del uso de bases de datos vectoriales: que podemos realizar de forma eficiente búsquedas basadas en el significado de los textos procesados por los LLMs.
Conclusión
Acabamos de ver qué son las bases de datos vectoriales y por qué se han convertido en elementos esenciales para las aplicaciones y asistentes de Inteligencia Artificial actuales.
En esencia, una base de datos vectorial es una base de datos común y corriente, pero diseñada específicamente para almacenar información no estructurada (texto, imágenes, video, audio) en formato puramente vectorial utilizando embeddings. Y lo clave es que estos embeddings codifican la información semántica del texto (o de la imagen, audio o video) de entrada al modelo.
El almacenamiento de esta información semántica en una base de datos vectorial hace que los datos puedan ser consultados fácilmente usando lenguaje natural mediante grandes modelos de lenguaje y que, a su vez, estas consultas sean extremadamente rápidas.
Esto es precisamente lo que ha permitido desarrollar todas las potentes aplicaciones que venimos viendo en la actualidad. De hecho, en el curso de Búsqueda Semántica con LLMs, disponible acá en la Academia Online, vemos precisamente cómo implementar este tipo de aplicaciones de procesamiento del lenguaje natural usando bases de datos vectoriales.
Y también en la Academia Online podrás encontrar un proyecto donde implementamos un sistema RAG para construir un Chatbot que nos permite consultar nuestros propios documentos y que precisamente usa las bases de datos vectoriales como uno de sus elementos centrales.
