Por qué autoalojar Weaviate en un VPS
Weaviate no se limita a almacenar vectores: gracias a sus módulos (text2vec, reranker, generative), puede vectorizar sus datos automáticamente en la inserción e incluso orquestar consultas generativas, todo ello expuesto por GraphQL y REST. Es una plataforma de búsqueda semántica de extremo a extremo. Autoalojarla en un VPS le da la libertad de activar únicamente los módulos que necesita, de conectar sus propios modelos de embeddings y de mantener sus datos de IA en casa. Para los equipos que construyen un asistente documental o un motor de recomendación, esto evita la dependencia de un servicio vectorial gestionado y su facturación por volumen. Usted controla la latencia, la retención y el esquema de sus clases, y puede hacer evolucionar el VPS al ritmo de su corpus.
Las ventajas concretas del self-hosting de Weaviate
- Vectorización integrada mediante los módulos
text2vec: sus textos se transforman en vectores sin pipeline externo. - API GraphQL expresiva para consultas híbridas (vectorial + filtros + BM25) en una sola petición.
- Módulos generativos y de reranking para construir un pipeline RAG completo directamente en la base.
- Índice HNSW de alto rendimiento con compresión de producto (PQ) para controlar la memoria.
- Esquema orientado a clases y propiedades, cercano a un grafo, práctico para datos estructurados.
- Soberanía: sus embeddings y sus documentos de origen permanecen alojados en su VPS.
Requisitos de hardware y software
Weaviate es más exigente que Qdrant, sobre todo si activa módulos de vectorización locales. Para una instancia con la vectorización delegada a una API externa, 4 GB de RAM constituyen un mínimo cómodo. Si ejecuta un módulo text2vec-transformers en local, prevea más bien 8 GB e, idealmente, una GPU; de lo contrario, la vectorización será lenta en CPU. Cuente con 2 a 4 vCPU y de 30 a 60 GB de SSD según el volumen de vectores y de snapshots. Necesitará Docker Compose para orquestar Weaviate y sus contenedores de módulos, un dominio para la exposición HTTPS y la activación de la autenticación por clave API: como con cualquier base vectorial, nunca deje una instancia abierta en Internet.
Weaviate o Qdrant: qué elegir para su VPS
Desplace la tabla
| Criterio | Weaviate | Qdrant |
|---|---|---|
| Lenguaje y huella | Go, más exigente en RAM | Rust, muy ligero y frugal |
| Vectorización integrada | Sí, mediante módulos text2vec y generative | No, embeddings aportados por el cliente |
| API principal | GraphQL y REST | REST y gRPC |
| Búsqueda híbrida | Nativa (vectorial + BM25) | Nativa (vectorial + filtros de payload) |
| Compresión de memoria | Product Quantization (PQ) | Cuantificación escalar y binaria |
| Facilidad de despliegue | Compose multicontenedor (módulos) | Contenedor único, arranque inmediato |
| Ideal para | Pipeline RAG completo todo en uno | Búsqueda vectorial rápida y frugal |
Desplegar Weaviate paso a paso
Preparar el VPS y Docker Compose
Instale Docker y Docker Compose. Cree un registro DNS A para
search.mondomaine.com. Reserve suficiente RAM si prevé un módulo de vectorización local.Escribir el docker-compose.yml con los módulos
Declare el servicio
weaviate(cr.weaviate.io/semitechnologies/weaviate) y, si hace falta, un contenedor de módulo comotext2vec-transformers. Enlácelos medianteENABLE_MODULESyTRANSFORMERS_INFERENCE_API. Monte un volumen en/var/lib/weaviatepara la persistencia.Configurar la autenticación y los módulos
Active la autenticación por clave API con
AUTHENTICATION_APIKEY_ENABLED=truey definaAUTHENTICATION_APIKEY_ALLOWED_KEYSyAUTHENTICATION_APIKEY_USERS. Desactive el acceso anónimo (AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED=false) y elija elDEFAULT_VECTORIZER_MODULE.Arrancar el stack
Ejecute
docker compose up -dy compruebe el estado concurl http://localhost:8080/v1/.well-known/ready. Siga los logs de los contenedores para confirmar que los módulos se han cargado correctamente.Colocar el reverse proxy y el TLS
Ponga Caddy o Nginx delante del puerto
8080para gestionar Let's Encrypt y no exponga el puerto directamente. Transmita la cabeceraAuthorizationcon la clave API hasta Weaviate.Crear una clase y consultar en GraphQL
Defina una clase con sus propiedades y su vectorizer, importe sus objetos (vectorizados automáticamente si hay un módulo activo) y pruebe después una consulta
nearTexto híbrida en GraphQL. Programe copias de seguridad con el módulo de backup hacia un almacenamiento S3.
Si activa la vectorización local con text2vec-transformers sin GPU, la inferencia en CPU se convertirá rápidamente en un cuello de botella durante las importaciones masivas. Prefiera entonces delegar la vectorización en una API externa (text2vec-openai, text2vec-cohere o un endpoint compatible que usted mismo aloje), o active la Product Quantization para reducir la memoria del índice HNSW. Vigile el consumo de RAM mediante las métricas Prometheus que Weaviate expone en el puerto 2112.