Por qué autoalojar Qdrant en un VPS
Qdrant almacena y consulta vectores de embeddings para encontrar los elementos semánticamente más cercanos: es la pieza de búsqueda en el corazón de los chatbots RAG, de los motores de recomendación y de la búsqueda en lenguaje natural. Escrita en Rust, es rápida y frugal en recursos, lo que la hace ideal para alojar en un VPS en lugar de pagar un servicio vectorial gestionado facturado por vector almacenado. El autoalojamiento es crucial para las aplicaciones de IA que tratan datos sensibles: sus embeddings, a menudo derivados de documentos internos confidenciales, nunca salen de su infraestructura. También domina la latencia, determinante cuando cada consulta de usuario dispara una búsqueda vectorial, y evita los límites de tasa de las API de terceros en los picos de carga.
Las ventajas concretas del self-hosting de Qdrant
- Búsqueda de vecinos más cercanos (ANN) rápida gracias al índice HNSW, incluso con millones de vectores.
- Filtrado por payload combinado con la búsqueda vectorial para consultas híbridas precisas.
- Cuantificación escalar y binaria para reducir con fuerza la memoria que ocupan los vectores.
- API REST y gRPC, además de SDK oficiales de Python, JavaScript y Rust listos para usar.
- Confidencialidad: sus embeddings procedentes de documentos internos permanecen en su VPS.
- Sin facturación por vector ni por volumen de consultas, a diferencia de los servicios gestionados.
Requisitos de hardware y software
El dimensionamiento de Qdrant depende del número de vectores y de su dimensión. Para empezar con unos cientos de miles de vectores, 2 GB de RAM bastan; por encima del millón de vectores en alta dimensión, apunte a entre 4 y 8 GB, ya que el índice HNSW vive en memoria para mantenerse rápido. La cuantificación permite reducir esa huella. Uno o dos vCPU son suficientes para un tráfico moderado. Prevea de 20 a 50 GB de SSD para la persistencia de las colecciones y de los snapshots. Necesitará Docker, un dominio si expone la API al público y, de forma imperativa, una clave API: Qdrant no activa ninguna autenticación por defecto, y exponer una instancia abierta sería una brecha grave.
Desplegar Qdrant paso a paso
Aprovisionar el VPS y Docker
Instale Docker y configure el firewall para dejar pasar únicamente los puertos 80 y 443. Cree un registro DNS A para
vectors.mondomaine.comhacia la IP del VPS si piensa exponer la API en HTTPS.Lanzar Qdrant con persistencia
Utilice la imagen
qdrant/qdrant. Monte un volumen en/qdrant/storagepara persistir sus colecciones:volumes: - ./qdrant_storage:/qdrant/storage. Qdrant expone el REST en6333y el gRPC en6334.Activar la autenticación por clave API
Defina la variable de entorno
QDRANT__SERVICE__API_KEYcon una clave larga y aleatoria (openssl rand -hex 32). Sin esa clave, cualquiera que alcance el puerto podría leer y borrar sus colecciones.Implantar el reverse proxy y el TLS
Coloque Caddy delante del puerto
6333:vectors.mondomaine.com { reverse_proxy localhost:6333 }. Caddy gestiona el certificado Let's Encrypt. Si utiliza gRPC desde sus clientes, configure también el enrutado del puerto6334con el protocolo adecuado.Crear una colección e insertar vectores
A través de la API o del SDK de Python, cree una colección indicando la dimensión de sus embeddings y la distancia (
Cosine,DotoEuclid). Active la cuantificación escalar desde la creación si la RAM es limitada y, después, haga upsert de sus puntos con su payload.Configurar los snapshots y la copia de seguridad
Dispare snapshots periódicos a través de la API (
POST /collections/{name}/snapshots) y cópielos hacia un almacenamiento externo. Junto con la persistencia del volumen, esto garantiza la restauración en caso de incidente.
Cuando la memoria se convierte en el factor limitante, active la cuantificación escalar (int8) o binaria: puede dividir entre 4 y 32 la huella de RAM de los vectores, con un ligero sobremuestreo (oversampling) en el momento de la consulta para preservar la precisión. Combínela con el parámetro on_disk para los vectores originales, de modo que solo el índice cuantificado quede en memoria. Es lo que permite servir millones de vectores en un VPS de unos pocos gigabytes de RAM.
Asociar Qdrant con Ollama para un stack RAG totalmente autónomo
Ejecute Ollama en el mismo VPS para la generación de los embeddings (ollama pull mxbai-embed-large) y la inferencia (ollama pull llama3.1:8b). Su pipeline RAG funciona entonces de extremo a extremo sin ninguna llamada a una API externa: pregunta del usuario → embedding con Ollama → búsqueda en Qdrant → fragmentos top-k → generación con Ollama → respuesta fundada en los hechos. Añada LiteLLM por delante para exponer a su aplicación un endpoint unificado compatible con la API de OpenAI, y cambie de modelo sin modificar una sola línea de código.