Las bases de datos vectoriales son el componente de almacenamiento en cualquier sistema RAG. La elección afecta la latencia de búsqueda, el coste operativo, la complejidad de infraestructura y las capacidades de filtrado.

Las opciones principales

Pinecone: la opción gestionada sin fricción

Pinecone es un servicio completamente gestionado. No hay infraestructura que gestionar: creas un índice, insertas vectores, buscas. Es la opción más rápida para llegar a producción.

Pros: setup de 5 minutos, alta disponibilidad garantizada, escalado automático, buena documentación.

Contras: coste elevado a escala (el plan gratuito es muy limitado), sin control sobre la infraestructura, vendor lock-in significativo.

Mejor para: startups que priorizan velocidad de desarrollo sobre coste, equipos sin experiencia en infraestructura de bases de datos.

Qdrant: la opción open-source más madura

Qdrant es open-source, tiene cliente en Rust (lo que lo hace muy rápido), y tiene un excelente soporte para filtrado combinado con búsqueda vectorial.

from qdrant_client import QdrantClient
from qdrant_client.models import Distance, VectorParams

client = QdrantClient(url="http://localhost:6333")

client.create_collection(
    collection_name="documentos",
    vectors_config=VectorParams(size=1536, distance=Distance.COSINE),
)

client.upsert(
    collection_name="documentos",
    points=[
        {"id": 1, "vector": embedding, "payload": {"texto": "...", "categoria": "legal"}}
    ]
)

resultados = client.search(
    collection_name="documentos",
    query_vector=query_embedding,
    query_filter={"must": [{"key": "categoria", "match": {"value": "legal"}}]},
    limit=5
)

Pros: open-source, muy rápido, excelente filtrado, SaaS gestionado disponible, buena documentación.

Contras: requiere gestionar el deployment si es self-hosted.

Mejor para: equipos que quieren control sobre la infraestructura y buen rendimiento.

pgvector: cuando ya tienes PostgreSQL

pgvector es una extensión de PostgreSQL que añade tipos de datos y operadores vectoriales. Si tu aplicación ya usa PostgreSQL, puedes tener búsqueda vectorial en la misma base de datos sin infraestructura adicional.

-- Instalar extensión
CREATE EXTENSION vector;

-- Crear tabla con columna vectorial
CREATE TABLE documentos (
  id SERIAL PRIMARY KEY,
  contenido TEXT,
  embedding vector(1536)
);

-- Buscar los 5 documentos más similares
SELECT id, contenido, 1 - (embedding <=> '[0.1, 0.2, ...]') AS similaridad
FROM documentos
ORDER BY embedding <=> '[0.1, 0.2, ...]'
LIMIT 5;

Pros: sin infraestructura adicional, transacciones ACID, datos y vectores en el mismo sistema, sin coste extra.

Contras: rendimiento vectorial inferior a bases de datos especializadas para colecciones muy grandes (>10M vectores), menos funciones de búsqueda avanzada.

Mejor para: proyectos con colecciones pequeñas-medianas (<1M vectores) que ya usan PostgreSQL.

Weaviate: para RAG con schema semántico

Weaviate tiene un enfoque distinto: define clases de objetos con propiedades, y la búsqueda vectorial se combina con queries sobre esas propiedades de forma nativa.

Mejor para: proyectos donde el modelo de datos es complejo y necesitas combinar búsqueda vectorial con queries estructuradas complejas.

La decisión rápida

SituaciónRecomendación
Prototipo rápido, sin gestionar infraPinecone o Weaviate Cloud
Ya uso PostgreSQL, colección <1M docspgvector
Producción con control total y buen rendimientoQdrant self-hosted
Búsqueda híbrida (semántica + keyword)Weaviate

Fuentes: Benchmarks publicados por los propios proyectos, ANN Benchmarks, experiencia de equipos en producción documentada en posts técnicos.