De Google a ChatGPT: esta es la tecnología que hay detrás de las búsquedas más inteligentes.
La primera vez que escuché la expresión «base de datos vectorial», pensé: «Oh, no, aquí viene la matemática que nunca voy a usar». Casi la omito. Pero la verdad es que ya te beneficias de esta idea todos los días. Cuando buscas en Google, cuando Netflix te recomienda una película que realmente te gusta o cuando Spotify te sugiere una canción que se adapta a tu estado de ánimo, es la búsqueda vectorial la que funciona silenciosamente detrás de escena.
Así que, si eres nuevo en esto, no te asustes. Iremos paso a paso. Piensa en esto como una guía amigable, no como un libro de texto.
Por qué las bases de datos normales no dan la talla
La mayoría de nosotros empezamos con bases de datos relacionales como MySQL o PostgreSQL. Son geniales para tablas: clientes, productos, facturas, lo que sea. Son rápidas y fiables.
Pero aquí está el problema. Solo saben comparar valores exactos. Si guardo «coche» en una columna y buscas «automóvil», la base de datos se queda en blanco. Cero filas.
Los seres humanos no funcionamos así. Si te pido un coche, probablemente me recomendarías un sedán, un SUV o incluso un Tesla. No te quedas atascado en la palabra exacta. Las máquinas sí.
Por eso necesitamos una nueva forma de almacenar y buscar datos, no solo por coincidencia de texto, sino por significado. Ahí es donde entran en juego las bases de datos vectoriales.
¿Qué es un vector?
Olvídate de las clases de matemáticas del instituto. En este contexto, un vector es simplemente una lista de números. Esos números representan algún objeto: una palabra, una frase, una imagen o incluso un clip de audio.
Veamos un ejemplo:
- La palabra «rey» podría ser
[0,25; 0,88; -0,47; 0,91]. - La palabra «reina» podría ser
[0,28; 0,90; -0,45; 0,92].
¿Ve lo cerca que están? Eso se debe a que ambas tienen un significado similar. Por otro lado, el vector de «coche» será totalmente diferente, ya que se encuentra muy lejos en este «espacio de significado» invisible.
Pensemos en ello como ciudades en un mapa. Nueva Delhi y Noida están cerca una de otra. Nueva Delhi y Bombay no lo están. Del mismo modo, rey y reina están cerca, pero rey y coche no lo están.
¿De dónde proceden estos vectores?
No los escribimos a mano. Eso sería una locura. En su lugar, utilizamos modelos de aprendizaje automático para hacer el trabajo pesado. Estos modelos que generan los vectores se denominan modelos de incrustación. Se utilizan para traducir los datos sin procesar en números. Los datos sin procesar pueden ser de cualquier tipo, como texto, audio, imagen o vídeo.
Así que el proceso es el siguiente:
- Proporcionamos los datos como una fuente (por ejemplo, una frase como «Me encanta la pizza»).
- A continuación, el modelo de incrustación genera un vector, realizado por el modelo vectorial utilizado (tal vez
[0,12; -0,33; 0,95; ...]). - El vector generado se almacena en una base de datos vectorial.
Ahora, cada dato, ya sea texto, imagen o audio, tiene una «huella digital de significado» en números, y estos números son los vectores.
Búsqueda por palabra clave frente a búsqueda por significado
Imagina que estás creando una aplicación de recetas.
- Un usuario busca «pasta con queso».
- Una base de datos SQL normal solo encuentra recetas que contienen literalmente esas palabras.
Pero, ¿qué pasa con las recetas que dicen «espaguetis fritos» o «macarrones con queso cheddar»? Un humano reconocería esas recetas como coincidencias. La base de datos SQL no lo haría, ya que compara la entrada con los datos almacenados y solo recupera los resultados que coinciden perfectamente.
Una base de datos vectorial, por otro lado, ve el panorama general. Sabe que el parmesano es un queso, que los espaguetis son una pasta y que los macarrones pertenecen a la misma familia. Por lo tanto, la búsqueda funciona como tu cerebro: encuentra recetas que significan lo mismo, no solo aquellas que se escriben de la misma manera.
¿Cómo hace una base de datos vectorial para que las búsquedas sean rápidas?
Buena pregunta. Si solo tienes 100 vectores, puedes compararlos todos. Fácil. Pero, ¿y si tienes 10 millones?
Normalmente, en las bases de datos SQL utilizamos indexación como B-Tree o Hash para acelerar la búsqueda, y en las bases de datos NoSql utilizamos índices secundarios o compuestos.
Para las bases de datos vectoriales, la fuerza bruta es demasiado lenta. Por eso, las bases de datos vectoriales utilizan trucos inteligentes como la búsqueda Approximate Nearest Neighbor (ANN). No te pierdas en el nombre. La idea es la siguiente:
Imagina que estás en una fiesta tratando de encontrar a tu mejor amigo. En lugar de escanear cada rostro, te diriges directamente al grupo con el que suele estar. Así ahorras tiempo. ANN hace lo mismo: construye estructuras (gráficos o árboles) para poder saltar directamente a las coincidencias probables sin tener que comprobarlo todo.
¿Qué bases de datos vectoriales deberías conocer?
Si empiezas a buscar en Google, verás aparecer estos nombres:
- Pinecone: totalmente gestionada, no tienes que preocuparte por la infraestructura.
- Weaviate: código abierto, buena documentación, ideal para principiantes.
- Milvus: muy utilizada en sistemas de producción, diseñada para escalar.
- FAISS: una biblioteca de Meta, más básica, ideal para aprender la mecánica.
Para un proyecto paralelo, Pinecone o Weaviate parecen menos abrumadores. FAISS es buena si quieres jugar con las matemáticas que hay detrás y también es compatible con la CPU.
Un ejemplo con una película
Este siempre gusta a la gente. Supongamos que estás creando una aplicación de recomendaciones de películas.
- Incorporas descripciones de todas tus películas: resúmenes de la trama, géneros, quizá incluso críticas.
- Un usuario escribe «película de ciencia ficción sobre viajes espaciales y familia».
- Esa consulta se convierte en un vector.
- La base de datos busca vectores de películas similares.
- Los resultados: Interstellar, The Martian, Gravity.
¿Te das cuenta de algo? El usuario no ha escrito esos títulos exactos. El sistema los ha encontrado igual que las recomendaciones de Netflix o la búsqueda de vídeos de YouTube porque los vectores han captado la idea de «ciencia ficción + espacio + temas familiares».
¿Dónde vemos esto en el mundo real?
Ya lo has experimentado.
- Chatbots: cuando un bot responde a partir de los documentos de tu empresa, busca en una base de datos vectorial para encontrar secciones relevantes.
- Motores de búsqueda: Google ya no se limita a buscar palabras clave, sino que interpreta tu intención.
- Compras: Amazon recomienda artículos «similares» en significado a los que has visto.
- Streaming: Spotify sugiere canciones que se ajustan a tu estado de ánimo. YouTube pone en cola los vídeos que probablemente verás a continuación.
- Seguridad: los bancos comprueban si tu transacción es similar a otras «normales» anteriores o si es sospechosamente diferente.
Una vez que lo ves, no puedes dejar de verlo. La búsqueda vectorial está en todas partes.
Cómo probarlo si eres principiante
Aquí tienes una forma sencilla que ojalá alguien me hubiera enseñado antes:
- Juega con las incrustaciones: utiliza la API de incrustaciones de OpenAI (barata y fácil). Escribe frases y observa los vectores.
- Ejecuta FAISS localmente: almacena unos cientos de vectores, búscalos y observa los resultados.
- Prueba una opción alojada: Pinecone tiene un nivel gratuito. Weaviate también.
- Crea una pequeña aplicación: puede ser un buscador de notas, un buscador de recetas o incluso un chatbot personal. Los proyectos pequeños muestran la magia.
No intentes aprenderlo todo de una vez. Empieza poco a poco y luego ve creciendo.
Algunos consejos personales
- No te quedes atascado con las fórmulas matemáticas. Si tienes curiosidad, apréndelas más adelante.
- Incluso 50 ejemplos son suficientes para ver cómo funciona la búsqueda vectorial.
- Visualiza. Utiliza una herramienta para trazar vectores en 2D: verás cómo se forman grupos de forma natural.
- Si quieres profundizar más, lee sobre la similitud coseno. Esa es la «medida de distancia» que utiliza la mayoría de la gente.
Las bases de datos vectoriales dan miedo hasta que te das cuenta de que solo son una forma de almacenar significado. No sustituyen a tu base de datos SQL o NoSQL. Se sitúan junto a ellas, añadiendo un nuevo superpoder: la comprensión.
Si está empezando su andadura como desarrollador, aprenda esto desde el principio. No es una moda pasajera. Es lo que hace que las aplicaciones modernas parezcan inteligentes. Y una vez que haya visto una búsqueda que entiende el significado en lugar de las palabras, es difícil volver atrás...
Gracias por leer Código en Casa.
Si esto te a ayudado y te sumo algo Dale un 👏 , compártelo con tu red o dejame un comentario para saber tu opinión.