Bases de Datos Vectoriales
Sistemas de almacenamiento especializados en indexar y buscar vectores de alta dimensión de forma eficiente, habilitando búsqueda semántica y aplicaciones de RAG a escala.
¿Qué es?
Una base de datos vectorial es un sistema de almacenamiento optimizado para guardar, indexar y buscar vectores de alta dimensión — típicamente embeddings generados por modelos de IA. A diferencia de las bases de datos tradicionales que buscan por coincidencia exacta, las bases vectoriales encuentran los vectores más similares a una consulta.
Son la infraestructura fundamental para búsqueda semántica y RAG a escala.
¿Por qué no usar una base de datos tradicional?
Buscar el vector más cercano entre millones requiere comparar distancias con cada uno — O(n) por consulta. Las bases vectoriales usan índices aproximados (ANN — Approximate Nearest Neighbors) que reducen esto a O(log n) o mejor, sacrificando precisión perfecta por velocidad práctica.
Algoritmos de indexación
- HNSW (Hierarchical Navigable Small World): grafos navegables que permiten búsqueda eficiente. El más popular por su balance velocidad/precisión
- IVF (Inverted File Index): particiona el espacio en clusters y busca solo en los más cercanos
- PQ (Product Quantization): comprime vectores para reducir memoria, útil para datasets masivos
- Flat: búsqueda exacta sin índice — preciso pero lento, solo para datasets pequeños
Opciones de bases vectoriales
Bases dedicadas
| Base | Características |
|---|---|
| Pinecone | Serverless, managed, fácil de empezar |
| Weaviate | Open-source, GraphQL, módulos de ML integrados |
| Qdrant | Open-source, Rust, filtros avanzados |
| Milvus | Open-source, escalable, CNCF project |
| Chroma | Open-source, embebible, ideal para prototipos |
Extensiones de bases existentes
| Base | Extensión |
|---|---|
| PostgreSQL | pgvector |
| Elasticsearch | Dense vector field |
| Redis | Redis Stack (RediSearch) |
| MongoDB | Atlas Vector Search |
Consideraciones de diseño
- Dimensionalidad: más dimensiones = más almacenamiento y cómputo. 1536 (OpenAI) vs 384 (MiniLM) hace diferencia a escala
- Filtrado híbrido: combinar búsqueda vectorial con filtros de metadatos (fecha, categoría, usuario)
- Actualizaciones: algunos índices son costosos de actualizar — considerar estrategias de batch
- Consistencia: muchas bases vectoriales priorizan disponibilidad sobre consistencia estricta
Patrón típico de uso
1. Documento → Chunking → Embedding model → Vector
2. Vector + metadata → Vector DB (insert)
3. Query → Embedding model → Vector
4. Vector → Vector DB (search) → Top-K results
5. Results → LLM context → Response
¿Por qué importa?
Las bases de datos vectoriales son la infraestructura que hace posible la búsqueda semántica y RAG a escala. Elegir entre pgvector, Pinecone, Weaviate o Qdrant depende del volumen de datos, los requisitos de latencia y si ya tienes PostgreSQL en tu stack.
Referencias
- Efficient and robust approximate nearest neighbor search using HNSW — Malkov & Yashunin, 2016. El paper de HNSW.
- pgvector: Open-source vector similarity search for Postgres — Extensión de PostgreSQL para vectores.
- Qdrant Documentation — Qdrant, 2024. Base de datos vectorial de alto rendimiento.