Analytics cookies only (Google Analytics, PostHog). No ad networks, no cross-site tracking. See our privacy policy.
Self-host Weaviate
updated Oct 2026deployed by usprices checked · Jul 2026Install verified on Ubuntu 26.04 · Oct 2026 · how we test
We earn commissions when you shop through the links below. Full disclosure →
A vector database that stores objects alongside their vectors and combines vector search with structured filtering, exposed over REST and gRPC. Optional modules call embedding, generative and reranker model providers for you, or you can import pre-vectorized data. Written in Go; everything outside the repository's wl directory is BSD-3-Clause, while the wl directory holds enterprise features unlocked by a licence key.
Key facts
CategoryVector database
LicenseBSD-3-Clause core with proprietary wl/ enterprise modules
Runs on a VPS from $6/mo (Kamatera 2GB, 2 GB RAM) · prices checked Sep 2026
Our recommendation
Pick Weaviate when you want a vector database that can also do the vectorizing: modules call API-based embedding, generative and reranker providers (OpenAI, Cohere, Google, Anthropic), a `text2vec-transformers` container can run a model locally, or you import pre-vectorized data, and vector search combines with structured filtering. It is written in Go; everything outside the repository's `wl` directory is BSD-3-Clause, and `wl` holds enterprise features unlocked by a licence key. The `cr.weaviate.io/semitechnologies/weaviate` image is one container exposing REST on 8080 and gRPC on 50051, with no web interface. Our snippet is the authenticated sample from upstream's Docker guide with a generated API key and an RBAC root user. Upstream publishes no RAM minimum, only advice to set `GOMEMLIMIT` to 80 to 90 percent of the memory you give it, so our 1 GB floor is an estimate. Qdrant, the catalog's other vector database, expects you to bring vectors and ships a web dashboard; Weaviate brings the model integrations.
What you need
Any VPS with at least 1024 MB of RAM
A domain you control — most self-hosted setups need HTTPS in front of them
Weaviate's Docker, backup and upgrade docs set out what you take on:
non-negotiableSource under the wl directory is Copyright Weaviate BV, all rights reserved, and available only under a separate enterprise licence; the LICENSE file says the BSD licence does not grant the right to use those features or to circumvent the licence key. Everything else is BSD-3-Clause.
non-negotiableUpstream says to run docker compose down when shutting down, because that writes everything still in memory to disk, and recommends a persistent volume to avoid data loss. Backups are a module you enable yourself (ENABLE_MODULES=backup-filesystem plus BACKUP_FILESYSTEM_PATH, or the S3, GCS or Azure backends); our compose does not set one, so there is no backup until you do.
non-negotiableUpgrade one minor version at a time, always to the latest patch of each minor, after a complete backup. In the current release line the default top-level vectorizer is always none and DEFAULT_VECTORIZER_MODULE is deprecated and ignored, so a collection definition that relied on it silently stops vectorizing: name the vectorizer in every collection that needs one before upgrading.
non-negotiableAnonymous access is strongly discouraged outside development, so our compose enables API-key authentication and RBAC with the key in .env; send it as a bearer token. Ports 8080 and 50051 are plain HTTP and h2c, so front both with a reverse proxy, upstream suggesting a grpc- subdomain for the gRPC side. Telemetry is on by default; set DISABLE_TELEMETRY=true to opt out.