Qué es una vector database
Una vector database es una base de datos especializada en almacenar y buscar embeddings vectoriales (vectores numéricos de cientos/miles de dimensiones).
A diferencia de BBDD tradicionales (MySQL, PostgreSQL) que están optimizadas para queries SQL exactas, las vector databases están optimizadas para búsqueda por similitud: “encuentra los 5 vectores más cercanos a este vector dado”.
Por qué son necesarias
Si tienes 1 millón de embeddings y quieres encontrar los 5 más cercanos a una query:
Sin vector DB
Calcular distancia con cada uno: 1M operaciones. Lento (segundos).
Con vector DB
Usan índices especializados (HNSW, IVF, LSH) que permiten encontrar en decenas de milisegundos.
Vector DBs populares 2026
Pinecone
SaaS gestionado. La más popular. Fácil de usar.
- Plan gratis: 1 índice, 100k vectores
- Pro: desde 70$/mes
- Pros: madurez, soporte, comunidad
- Contras: lock-in, caro a gran escala
Weaviate
Open source + cloud opcional. Muy potente.
- Self-hosted gratis
- Cloud: pricing on-demand
- Pros: flexible, multimodal
- Contras: curva de aprendizaje
Chroma
Simple, embebido. Ideal para empezar.
- Open source gratis
- Cloud opcional
- Pros: fácil, ligero
- Contras: limitado a gran escala
Qdrant
Open source + cloud. Performance excelente.
- Self-hosted gratis
- Cloud: desde 0$/mes (cluster pequeño)
- Pros: rápido, eficiente
- Contras: más técnico
pgvector (PostgreSQL extension)
Extensión de PostgreSQL para vectores.
- Gratis (parte de Postgres)
- Pros: reutilizar Postgres existente, transacciones ACID
- Contras: rendimiento menor que dedicadas
Cloudflare Vectorize
Vector DB en el edge (Cloudflare).
- Plan Workers Paid (5$/mes) lo incluye
- Pros: integración con stack Cloudflare, edge native
- Contras: relativamente nuevo
Operaciones típicas
Insert
db.upsert(
id="doc-123",
vector=[0.1, 0.5, ...], # 1536 floats
metadata={"source": "manual.pdf", "page": 5, "section": "instalación"}
)
Query (búsqueda por similitud)
results = db.query(
vector=query_embedding,
top_k=5,
filter={"source": "manual.pdf"}
)
# Devuelve los 5 vectores más cercanos
Filter
Combinar similitud vectorial con filtros tradicionales:
results = db.query(
vector=query_embedding,
top_k=10,
filter={"category": "legal", "date": {"$gte": "2024-01-01"}}
)
Métricas de distancia
Configurar al crear el índice:
- Cosine similarity: lo más común (ver Embedding)
- Euclidean distance: distancia geométrica
- Dot product: producto escalar
Para texto: cosine funciona mejor en la mayoría de casos.
Performance
Indexación
Crear el índice puede tardar segundos (1k vectores) a horas (millones).
Query
Una búsqueda típica: 10-100 ms sobre millones de vectores.
Escalabilidad
Vector DBs modernas escalan a billones de vectores con sharding y distribución.
Coste
Storage
Vectores de 1536 dim × 4 bytes ≈ 6KB cada uno. 1M vectores = 6GB.
A 0,025$ /GB/mes (S3 standard) ≈ 0,15$ /mes solo por storage.
Compute (queries)
Aquí es donde escala el coste:
- Pinecone Starter: 70$/mes para 100M operaciones
- Self-hosted: solo coste del servidor (5-50$/mes según volumen)
Cuándo usar cada una
Pyme empezando
Chroma o Pinecone Free. Simples, suficientes.
Producto en producción con tráfico medio
Pinecone Pro o Qdrant Cloud. Probadas, soporte.
Producto técnico con stack propio
Weaviate self-hosted o Qdrant. Más control.
Stack Cloudflare ya existente
Cloudflare Vectorize. Integración natural.
Stack PostgreSQL ya existente
pgvector. Aprovecha lo que tienes.
Caso típico de uso (RAG)
- Cargar 1000 documentos de la empresa
- Trocear en chunks de ~500 palabras
- Generar embedding por chunk (con OpenAI o similar)
- Almacenar en vector DB con metadata
- Cuando user pregunta: embedding de la pregunta + query a DB + top 5 chunks
- Pasar a LLM como contexto
- LLM responde con info real de los documentos
Las IAs de IMPERO usan Cloudflare Vectorize para mantener todo en edge y bajar latencia.