Skip to main content
[ PIER ]

Qdrant

La base de datos vectorial de alto rendimiento para aplicaciones IA.

Service #vector#search#ai#embeddings#similarity

Qdrant es un motor de búsqueda por similitud vectorial escrito en Rust. Almacena embeddings (vectores densos de OpenAI, Cohere, Voyage, BGE, etc.) y sirve queries de vecinos más cercanos vía índices HNSW — lo bastante rápido para RAG en producción, búsqueda semántica, recomendaciones y detección de anomalías. Pier despliega la imagen Docker oficial con almacenamiento persistente y la UI de dashboard.

Desplegar con Pier

  1. 1 Abre el panel de Pier y haz clic en Add service.
  2. 2 Elige Qdrant en la lista de plantillas.
  3. 3 Elige la versión, asigna un nombre al servicio y Pier provisionará automáticamente el contenedor, el almacenamiento y los puertos.
  4. 4 Vincula un dominio si quieres HTTPS. Traefik genera el certificado de Let's Encrypt automáticamente.

¿Qué es Qdrant?

Qdrant es un motor open-source de búsqueda por similitud vectorial escrito en Rust. Existe para responder una pregunta muy, muy rápido: “dado este vector de consulta, encuentra los k vectores almacenados más cercanos”. Donde la mayoría de bases de datos generales luchan con cargas vectoriales de alta dimensión, Qdrant está construido específicamente para índices HNSW, filtrado por payload y tiempos de respuesta sub-50ms sobre millones de vectores.

El stack moderno de IA — RAG, búsqueda semántica, recomendaciones, detección de anomalías — todos necesitan este primitivo. Los embeddings vienen de modelos (OpenAI, Cohere, Voyage, BGE/MiniLM locales); los embeddings viven en Qdrant; las queries combinan similitud vectorial con filtros de payload (“encuentra similares a este, pero solo en inglés, publicados la última semana, por el usuario X”).

Cómo lo despliega Pier

Pier usa la imagen Docker oficial qdrant/qdrant. Puertos por defecto: 6333 (REST + UI Dashboard) y 6334 (gRPC). El volumen de datos se monta en /qdrant/storage. Pier autogenera una API key (seteada vía QDRANT__SERVICE__API_KEY) y la expone en la página de detalle del servicio.

La UI de Dashboard integrada es accesible en el puerto 6333 (path /dashboard). Adjunta un dominio en el tab Domains de Pier para HTTPS vía Traefik.

Cuándo NO usar Qdrant

Si ya tienes datos en Postgres y tu dataset es de menos de ~1M vectores, pgvector es más simple — una base de datos menos que operar. Para simplicidad pura de servicio gestionado a cualquier escala, Pinecone trade coste por zero-ops. Qdrant gana cuando quieres control autohospedado, escala de multimillones de vectores, filtrado de payload rico y búsqueda híbrida sparse+dense.

Características clave

Índice HNSW en disco

Grafo HNSW (Hierarchical Navigable Small World) mapeado en memoria — búsqueda en milisegundos sobre millones de vectores de alta dimensión sin tener todo en RAM.

Filtrado por payload

Adjunta metadata JSON (tags, fechas, IDs de usuario) a cada vector. Filtra en search time — "encuentra docs similares que me pertenecen, modificados los últimos 30 días" en una sola query.

REST + gRPC + clientes Python/JS/Rust/Go

Clientes de primera clase para Python, JS, Rust, Go, .NET, Java. REST y gRPC soportados; gRPC es más rápido para workloads de alto QPS.

Búsqueda híbrida (sparse + dense)

Combina vectores sparse estilo BM25 con embeddings densos. La híbrida supera frecuentemente a cualquiera por separado para RAG sobre documentos enterprise.

Cuantización

Cuantización escalar, producto y binaria reduce el tamaño del índice 4-32× con mínima pérdida de recall. Corre índices de miles de millones de vectores en VMs commodity.

Sharding y replicación

Escalado horizontal vía shards; réplicas para redundancia. Pier ships single-node; los clusters a escala de producción necesitan orquestación manual.

Casos de uso

Retrieval RAG / chatbot

La "R" en retrieval-augmented generation. Embed tus docs con OpenAI / BGE / Voyage; guarda en Qdrant; consulta en chat time por los top-k chunks relevantes.

Búsqueda semántica

Encuentra documentos por significado, no solo por keywords. "¿Quién tiene experiencia en state management de React?" devuelve matches incluso si escribieron "expertise en Redux/Zustand".

Sistemas de recomendación

Embeddings usuario → ítem → ítems similares. Amigable al cold-start cuando tienes embeddings de ítems pero ningún dato de comportamiento.

Detección de duplicados / casi-duplicados

La deduplicación basada en hashing pierde paráfrasis. La basada en embeddings las atrapa. Vital para moderación de contenido, plagio, dedupe de tickets de soporte.

Búsqueda multimodal / de imágenes

Los embeddings CLIP te dejan buscar imágenes por texto y viceversa. Misma colección Qdrant, queries multimodales.

Ejemplos de código

Crear una colección python
from qdrant_client import QdrantClient
from qdrant_client.models import Distance, VectorParams

client = QdrantClient(url="http://qdrant:6333")
client.create_collection(
    collection_name="docs",
    vectors_config=VectorParams(size=1536, distance=Distance.COSINE),
)
Insertar vectores con payload python
from qdrant_client.models import PointStruct

client.upsert(
    collection_name="docs",
    points=[
        PointStruct(
            id=42,
            vector=[0.1, 0.2, ...],          # 1536-dim
            payload={"title": "Hello", "url": "/posts/hello", "lang": "es"},
        )
    ],
)
Búsqueda con filtro de payload python
from qdrant_client.models import Filter, FieldCondition, MatchValue

hits = client.search(
    collection_name="docs",
    query_vector=[0.1, 0.2, ...],
    query_filter=Filter(
        must=[FieldCondition(key="lang", match=MatchValue(value="es"))]
    ),
    limit=5,
)
Búsqueda híbrida (dense + sparse) python
from qdrant_client.models import Prefetch

results = client.query_points(
    collection_name="docs",
    prefetch=[
        Prefetch(query=dense_vector,  using="dense", limit=20),
        Prefetch(query=sparse_vector, using="sparse", limit=20),
    ],
    query={ "fusion": "rrf" },        # reciprocal rank fusion
    limit=5,
)

Comparativa

vs Pinecone (gestionado) Pinecone es hosted, pulido, caro. Qdrant es OSS, autohospedado, rendimiento comparable. Elige Qdrant cuando quieras control sobre datos, costes o necesites despliegue on-prem.
vs Weaviate Weaviate tiene módulos integrados para generación de embeddings (llama OpenAI/Cohere por ti). Qdrant es más fino — generas embeddings client-side. Ambos excelentes; Qdrant tiende a ser más rápido, Weaviate tiene mejores features híbridas.
vs pgvector (extensión PostgreSQL) pgvector es genial cuando ya tienes datos en Postgres y no quieres una segunda base de datos. Qdrant supera a pgvector a escala (10M+ vectores) y tiene filtrado de payload más rico.
vs Milvus Milvus es un proyecto OSS liderado por chinos con feature set similar. Más pesado de operar (más componentes). Qdrant es más simple — un binario, un contenedor.

Preguntas frecuentes

¿Puerto y protocolo por defecto?
6333/tcp para REST + Dashboard, 6334/tcp para gRPC. Pier expone ambos. gRPC es más rápido para alto QPS; REST está bien para la mayoría de apps.
¿De dónde vienen los embeddings?
Qdrant no genera embeddings — tú lo haces, client-side. OpenAI `text-embedding-3-small`, Voyage, Cohere o modelos locales (BGE, all-MiniLM) todos funcionan. Solo pasa el vector a Qdrant.
¿Persistencia?
Sí — Pier monta `/qdrant/storage` como volumen persistente. Sobrevive a reinicios y upgrades del contenedor.
¿Requisitos de memoria y disco?
Los índices HNSW están mapeados en memoria. Regla — 4 GB RAM maneja ~1M vectores a dim 1536. Con cuantización escalar, la misma RAM contiene ~4M vectores.
¿Autenticación?
Qdrant soporta auth por API key. Pier autogenera la key y la expone vía env var. Envía el header `api-key` en cada request.
¿Backups?
Usa la API de snapshots de Qdrant para crear snapshots por colección. Guarda snapshots en el volumen de datos o pushea a S3.
¿Qué versión despliega Pier?
Default `latest`. Qdrant se mueve rápido — versiones fijadas como `v1.12.0` están en el selector de versión.

Servicios relacionados

Desplegar en tu VPS

Qdrant es un motor de búsqueda por similitud vectorial escrito en Rust. Almacena embeddings (vectores densos de OpenAI, Cohere, Voyage, BGE, etc.) y sirve queries de vecinos más cercanos vía índices HNSW — lo bastante rápido para RAG en producción, búsqueda semántica, recomendaciones y detección de anomalías. Pier despliega la imagen Docker oficial con almacenamiento persistente y la UI de dashboard.

Desplegar este servicio →