Bases de datos vectoriales explicadas en 3 niveles de dificultad

En este artículo, aprenderá cómo funcionan las bases de datos vectoriales, desde la idea básica de búsqueda por similitud hasta las estrategias de indexación que hacen práctica la recuperación a gran escala.

Los temas que cubriremos incluyen:

Cómo las incrustaciones convierten datos no estructurados en vectores que se pueden buscar por similitud. Cómo las bases de datos vectoriales admiten la búsqueda de vecinos más cercanos, el filtrado de metadatos y la recuperación híbrida. Cómo las técnicas de indexación como HNSW, IVF y PQ ayudan a escalar la búsqueda de vectores en la producción.

No perdamos más tiempo.

Bases de datos vectoriales explicadas en 3 niveles de dificultad
Imagen por autor

Introducción

Las bases de datos tradicionales responden a una pregunta bien definida: ¿existe el registro que cumple estos criterios? Las bases de datos vectoriales responden a una pregunta diferente: ¿qué registros se parecen más a este? Este cambio es importante porque una enorme clase de datos modernos (documentos, imágenes, comportamiento del usuario, audio) no se pueden buscar por coincidencia exacta. Por lo tanto, la consulta correcta no es “encontrar esto”, sino “encontrar algo cercano a esto”. Los modelos de incrustación hacen esto posible al convertir el contenido sin procesar en vectores, donde la proximidad geométrica corresponde a la similitud semántica.

El problema, sin embargo, es la escala. Comparar un vector de consulta con cada vector almacenado significa miles de millones de operaciones de punto flotante en tamaños de datos de producción, y esa matemática hace que la búsqueda en tiempo real no sea práctica. Las bases de datos vectoriales resuelven esto con algoritmos de vecino más cercano aproximado que omiten a la gran mayoría de los candidatos y aún arrojan resultados casi idénticos a una búsqueda exhaustiva, a una fracción del costo.

Este artículo explica cómo funciona eso en tres niveles: el problema central de similitud y qué vectores permiten, cómo los sistemas de producción almacenan y consultan incorporaciones con filtrado y búsqueda híbrida y, finalmente, los algoritmos de indexación y las decisiones de arquitectura que hacen que todo funcione a escala.

Nivel 1: Comprender el problema de la similitud

Las bases de datos tradicionales almacenan datos estructurados (filas, columnas, números enteros, cadenas) y los recuperan mediante búsquedas exactas o consultas de rango. SQL es rápido y preciso para esto. Pero muchos datos del mundo real no están estructurados. Los documentos de texto, imágenes, audio y registros de comportamiento del usuario no encajan perfectamente en las columnas y la “coincidencia exacta” es la consulta incorrecta para ellos.

La solución es representar estos datos como vectores: matrices de longitud fija de números de punto flotante. Un modelo de incrustación como text-embedding-3-small de OpenAI, o un modelo de visión para imágenes, convierte el contenido sin procesar en un vector que captura su significado semántico. Contenido similar produce vectores similares. Por ejemplo, la palabra “perro” y la palabra “cachorro” terminan geométricamente cerca en el espacio vectorial. Una foto de un gato y un dibujo de un gato también acaban de cerca.

Una base de datos de vectores almacena estas incrustaciones y le permite buscar por similitud: “encuéntreme los 10 vectores más cercanos a este vector de consulta”. Esto se llama búsqueda de vecino más cercano.

Nivel 2: Almacenamiento y consulta de vectores

Incrustaciones

Antes de que una base de datos vectorial pueda hacer algo, el contenido debe convertirse en vectores. Esto se hace incorporando modelos: redes neuronales que mapean la entrada en un espacio vectorial denso, generalmente con 256 a 4096 dimensiones según el modelo. Los números específicos del vector no tienen interpretaciones directas; lo que importa es la geometría: los vectores cercanos significan contenido similar.

Usted llama a una API de incrustación o ejecuta un modelo usted mismo, recupera una matriz de flotantes y almacena esa matriz junto con los metadatos de su documento.

Métricas de distancia

La similitud se mide como distancia geométrica entre vectores. Tres métricas son comunes:

La similitud del coseno mide el ángulo entre dos vectores, ignorando la magnitud. A menudo se utiliza para incrustaciones de texto, donde la dirección importa más que la longitud. La distancia euclidiana mide la distancia en línea recta en el espacio vectorial. Es útil cuando la magnitud conlleva significado. El producto escalar es rápido y funciona bien cuando los vectores están normalizados. Muchos modelos de incrustación están capacitados para usarlo.

La elección de la métrica debe coincidir con la forma en que se entrenó su modelo de incorporación. El uso de métricas incorrectas degrada la calidad de los resultados.

El problema del vecino más cercano

Encontrar vecinos más cercanos exactos es trivial en conjuntos de datos pequeños: calcule la distancia desde la consulta a cada vector, ordene los resultados y devuelva la K superior. Esto se llama búsqueda de fuerza bruta o plana y es 100% preciso. También escala linealmente con el tamaño del conjunto de datos. Con 10 millones de vectores con 1536 dimensiones cada uno, una búsqueda plana es demasiado lenta para consultas en tiempo real.

La solución son los algoritmos aproximados del vecino más cercano (ANN). Estos intercambian una pequeña cantidad de precisión por grandes ganancias en velocidad. Las bases de datos de vectores de producción ejecutan algoritmos ANN bajo el capó. Los algoritmos específicos, sus parámetros y sus compensaciones son lo que examinaremos en el siguiente nivel.

Filtrado de metadatos

La búsqueda vectorial pura devuelve los elementos semánticamente más similares a nivel mundial. En la práctica, normalmente querrás algo más cercano a: “buscar los documentos más similares que pertenecen a este usuario y fueron creados después de esta fecha”. Esa es la recuperación híbrida: similitud de vectores combinada con filtros de atributos.

Las implementaciones varían. El filtrado previo aplica primero el filtro de atributos y luego ejecuta ANN en el subconjunto restante. El posfiltrado ejecuta ANN primero y luego filtra los resultados. El filtrado previo es más preciso pero más costoso para consultas selectivas. La mayoría de las bases de datos de producción utilizan alguna variante de prefiltrado con indexación inteligente para mantenerlo rápido.

Búsqueda híbrida: densa + escasa

La búsqueda vectorial puramente densa puede perder la precisión a nivel de palabras clave. Una consulta de “fecha de lanzamiento de GPT-5” puede derivar semánticamente hacia temas generales de IA en lugar del documento específico que contiene la frase exacta. La búsqueda híbrida combina ANN densa con recuperación escasa (BM25 o TF-IDF) para obtener comprensión semántica y precisión de palabras clave juntas.

El enfoque estándar es ejecutar búsquedas densas y dispersas en paralelo y luego combinar puntuaciones mediante la fusión de rangos recíprocos (RRF), un algoritmo de fusión basado en rangos que no requiere normalización de puntuaciones. La mayoría de los sistemas de producción ahora admiten la búsqueda híbrida de forma nativa.

Nivel 3: Indexación de escala

Algoritmos aproximados del vecino más cercano

Los tres algoritmos de vecino más cercano aproximado más importantes ocupan cada uno un punto diferente en la superficie de compensación entre velocidad, uso de memoria y recuperación.

El mundo pequeño navegable jerárquico (HNSW) construye un gráfico de múltiples capas donde cada vector es un nodo, con bordes que conectan vecinos similares. Las capas superiores son escasas y permiten un recorrido rápido de largo alcance; las capas inferiores son más densas para una búsqueda local precisa. En el momento de la consulta, el algoritmo salta a través de este gráfico hacia los vecinos más cercanos. HNSW es ​​rápido, requiere mucha memoria y ofrece una recuperación excelente. Es el valor predeterminado en muchos sistemas modernos.

Cómo funciona el mundo pequeño navegable jerárquico

Cómo funciona el mundo pequeño navegable jerárquico

El índice de archivos invertido (IVF) agrupa los vectores en grupos utilizando k-medias, crea un índice invertido que asigna cada grupo a sus miembros y luego busca solo los grupos más cercanos en el momento de la consulta. La FIV utiliza menos memoria que la HNSW, pero suele ser algo más lenta y requiere un paso de entrenamiento para construir los grupos.

Cómo funciona el índice de archivos invertido

Cómo funciona el índice de archivos invertido

La cuantización del producto (PQ) comprime vectores dividiéndolos en subvectores y cuantificando cada uno en un libro de códigos. Esto puede reducir el uso de memoria entre 4 y 32 veces, lo que permite conjuntos de datos de miles de millones de escala. A menudo se utiliza en combinación con FIV como FIV-PQ en sistemas como Faiss.

Cómo funciona la cuantificación de productos

Cómo funciona la cuantificación de productos

Configuración del índice

HNSW tiene dos parámetros principales: ef_construction y M:

ef_construction controla cuántos vecinos se consideran durante la construcción del índice. Los valores más altos generalmente mejoran la recuperación, pero tardan más en desarrollarse. M controla el número de enlaces bidireccionales por nodo. Una M más alta generalmente mejora la recuperación pero aumenta el uso de la memoria.

Los ajusta en función de su recuperación, latencia y presupuesto de memoria.

En el momento de la consulta, ef_search controla cuántos candidatos se exploran. Aumentarlo mejora la recuperación a costa de la latencia. Este es un parámetro de tiempo de ejecución que puede ajustar sin reconstruir el índice.

Para IVF, nlist establece la cantidad de clústeres y nprobe establece cuántos clústeres buscar en el momento de la consulta. Más clústeres pueden mejorar la precisión pero también requieren más memoria. Una nprobe más alta mejora la recuperación pero aumenta la latencia. Lea ¿Cómo se pueden ajustar los parámetros de un índice de FIV (como el número de grupos nlist y el número de sondas nprobe) para lograr una recuperación objetivo a la velocidad de consulta más rápida posible? para aprender más.

Recuperación versus latencia

ANN vive en una superficie de compensación. Siempre puede obtener una mejor recuperación buscando más en el índice, pero paga por ello en latencia y cálculo. Compare su conjunto de datos y patrones de consulta específicos. Un recuerdo@10 de 0,95 podría ser excelente para una aplicación de búsqueda; un sistema de recomendación podría necesitar 0,99.

Escala y fragmentación

Un único índice HNSW puede almacenar en la memoria de una máquina hasta aproximadamente 50 a 100 millones de vectores, según la dimensionalidad y la RAM disponible. Más allá de eso, fragmenta: divide el espacio vectorial entre nodos y distribuye las consultas entre fragmentos, luego fusiona los resultados. Esto introduce una sobrecarga de coordinación y requiere una cuidadosa selección de claves fragmentadas para evitar puntos calientes. Para obtener más información, lea ¿Cómo se escala la búsqueda vectorial con el tamaño de los datos?

Servicios de almacenamiento

Los vectores suelen almacenarse en la RAM para una búsqueda rápida de ANN. Los metadatos generalmente se almacenan por separado, a menudo en un almacén de clave-valor o en columnas. Algunos sistemas admiten archivos asignados en memoria para indexar conjuntos de datos que son más grandes que la RAM y se transfieren al disco cuando es necesario. Esto cambia algo de latencia por escala.

Los índices ANN en disco como DiskANN (desarrollado por Microsoft) están diseñados para ejecutarse desde SSD con una RAM mínima. Logran una buena recuperación y rendimiento para conjuntos de datos muy grandes donde la memoria es la limitación vinculante.

Opciones de bases de datos vectoriales

Las herramientas de búsqueda de vectores generalmente se dividen en tres categorías.

En primer lugar, puede elegir entre bases de datos vectoriales especialmente diseñadas, como:

Pinecone: una solución totalmente administrada y sin operaciones Qdrant: un sistema de código abierto basado en Rust con sólidas capacidades de filtrado Weaviate: una opción de código abierto con esquema integrado y características modulares Milvus: una base de datos vectorial de código abierto de alto rendimiento diseñada para búsqueda de similitudes a gran escala con soporte para implementaciones distribuidas y aceleración de GPU

En segundo lugar, existen extensiones de sistemas existentes, como pgvector para Postgres, que funciona bien a pequeña y mediana escala.

En tercer lugar, existen bibliotecas como:

Faiss desarrollado por Meta Annoy de Spotify, optimizado para cargas de trabajo con mucha lectura

Para nuevas aplicaciones de generación de recuperación aumentada (RAG) a escala moderada, pgvector suele ser un buen punto de partida si ya está utilizando Postgres porque minimiza la sobrecarga operativa. A medida que crecen sus necesidades (especialmente con conjuntos de datos más grandes o filtrado más complejo), Qdrant o Weaviate pueden convertirse en opciones más atractivas, mientras que Pinecone es ideal si prefiere una solución totalmente administrada sin infraestructura que mantener.

Concluyendo

Las bases de datos vectoriales resuelven un problema real: encontrar rápidamente qué es semánticamente similar a escala. La idea central es sencilla: insertar contenido como vectores y buscar por distancia. Los detalles de implementación (HNSW versus FIV, ajuste de recuperación, búsqueda híbrida y fragmentación) son muy importantes a escala de producción.

Aquí hay algunos recursos que puede explorar más a fondo:

¡Feliz aprendizaje!