Analytics cookies only (Google Analytics, PostHog). No ad networks, no cross-site tracking. See our privacy policy.
upstream: github.com/qdrant/qdrant (opens in new tab) · github.com/weaviate/weaviate (opens in new tab)
Pick Qdrant
If you compute embeddings in your own code and want a small Apache-2.0 engine with a web dashboard, indexable payload filters, per-collection snapshots and scalar, binary or product quantization; it idled at ~17 MB in our check.
Pick Weaviate
If you want the database to call the embedding provider for you (OpenAI, Cohere, Ollama, local transformers and more), keyword and vector search fused in one query, and RBAC roles on the instance, under BSD-3-Clause with a licence key for the proprietary wl directory; it idled at ~43 MB.
Qdrant and Weaviate are the two vector databases in our catalog, and on a VPS they look alike: one container each, REST and gRPC APIs, a volume for the data, and almost nothing in use until you load vectors into them. The split is in what each expects you to bring. Qdrant stores and searches vectors you computed elsewhere, and gives you a dashboard, payload filters and three kinds of quantization to do it well. Weaviate can compute the vectors for you by calling a model provider at import time, and layers hybrid search and role-based access on top. The licences differ too, in a way that matters only if you want the enterprise parts.
Qdrant is a search engine for vectors you already have. Its Quickstart
creates a collection with a vector size and a distance metric and then
upserts points; every example passes the arrays in. FastEmbed, the embedding
library Qdrant maintains, is "a lightweight Python library built for embedding
generation" that runs on the ONNX runtime, which means it runs in your
application, not in the Qdrant server. Hybrid search is there, but it is also
vector-in: the Query API takes dense and sparse vectors as prefetch
sub-requests and fuses them with RRF, which "considers the positions of
results within each query", or DBSF, which "keeps the raw scores from each
query but normalizes their distributions before combining".
Weaviate will do the embedding step for you. With a vectorizer module
configured, "Weaviate automatically generates embeddings for objects that are
added to the database", which it does "by providing the source data to the
integration provider, which then returns the embeddings to Weaviate". The
provider list is long: OpenAI, Cohere, Google, Mistral and Hugging Face among
the API-based ones (Anthropic is a generative provider only), and Ollama and
text2vec-transformers among the locally hosted; the Docker guide runs the
transformers case as a second container, slower without a GPU. Generative and
reranker modules sit beside the
vectorizers for RAG. Hybrid search here is keyword plus vector from one input:
it "combines the results of a vector search and a keyword (BM25F) search by
fusing the two result sets", balanced by alpha, where "An alpha of 1 is a
pure vector search".
If your pipeline already calls an embedding model, Qdrant fits it without asking anything else of you. If you would rather hand the database raw text and an API key, Weaviate removes a service from your stack.
Both filter on structured data alongside the vector search. Qdrant's payload
filters combine must, should and must_not clauses over match, range, geo
and full-text conditions. Weaviate stores objects beside their vectors and
filters on their properties.
Both compress vectors to save memory. Qdrant documents scalar quantization, "achieving 4x compression", binary quantization "for up to 32x compression", and product quantization for "up to 64x compression". Weaviate lists rotational quantization as recommended, plus product, binary and scalar.
Qdrant has a web UI. The dashboard at /dashboard is "an intuitive and
efficient graphic interface for your Qdrant Collections, REST API and data
points", with a console to "Run HTTP-based calls". Weaviate ships no web
interface; you talk to it through a client library or curl.
Neither is safe on a public port as shipped. Qdrant is blunt about it:
"Self-hosted open source deployments are not secure by default and are not
production-ready." You set QDRANT__SERVICE__API_KEY and clients send it in
the api-key header; a read_only_api_key gives read-only access; and
granular JWT-based keys with per-collection read or write permissions need
jwt_rbac: true. "TLS must be used to prevent leaking the API key over an
unencrypted connection." Weaviate says anonymous access is "strongly
discouraged except for development or evaluation purposes" and offers API keys
through AUTHENTICATION_APIKEY_ENABLED and its sibling variables, or any
"OpenID Connect" issuer with discovery. On top sits RBAC: root has "full
access to all resources", viewer "read-only access to all resources", and
you define further roles as bundles of permissions. Our snippets set an API
key on both and turn Weaviate's RBAC on with a root user.
Backups differ in shape. Qdrant takes per-collection snapshots. Weaviate backs
up "at instance or collection granularity" through a module you enable:
backup-s3, backup-gcs and backup-azure are the ones recommended for
production, and backup-filesystem is single-node only.
Qdrant is Apache-2.0, the whole repository.
Weaviate's LICENSE says code "is licensed under the BSD-3-Clause License"
except that "Within the "wl" directory and all its sub-directories, source
code is Copyright Weaviate BV" and "is only available under a separate
enterprise license". "Enterprise features are enabled via license key", and
"The BSD license does not grant the right to use these features or circumvent
any license key." Everything a self-hoster reaches in this comparison is in
the BSD part; the wl directory is the line to know about before you rely on
an enterprise feature.
Both are one container, one volume. Qdrant publishes REST on 6333 and gRPC on
6334 and keeps data under /qdrant/storage; Weaviate publishes REST on 8080
and gRPC on 50051 and keeps data at /var/lib/weaviate. Neither publishes a
RAM minimum, because sizing depends on how many vectors you store and at what
dimension, so our 1 GB floors are estimates for a small collection. In our
install check (GCP e2-standard-2, Ubuntu 26.04, October 2026), Qdrant idled at
~17 MB of RAM and ~278 MB of disk; Weaviate idled at ~43 MB of RAM
and ~292 MB of disk. Those are empty-database numbers; your vectors, not
the engine, will decide the server. We rate both 2 out of 5 to deploy.
Choose Qdrant if you compute embeddings in your own code and want a small Apache-2.0 engine with a dashboard to look at the collections, payload filters you can index, and quantization you can dial from 4x to 64x.
Choose Weaviate if you want the database to call the embedding model for
you, keyword and vector search fused in one query, and roles for more than one
team on the same instance, and you are content with BSD-3-Clause for the core
and a licence key for the wl extras.
Both installs are verified on Ubuntu 26.04; the pinned compose files with API keys set are on the Qdrant and Weaviate pages. Both speak plain HTTP and h2c, so put a reverse proxy with TLS in front of every port you expose, and firewall the gRPC port to the clients that need it. If what you are really sizing is an LLM app that uses one of these underneath, Dify ships Weaviate in its default compose and carries a Qdrant profile; see Dify vs Langflow for that layer.
Qdrant if your code already computes embeddings and you want a small Apache-2.0 engine with a dashboard, payload filters and quantization. Weaviate if you want the database to call an embedding provider for you, keyword plus vector search in one query, and RBAC roles. Both run as one container and both idled under 50 MB in our install check on Ubuntu 26.04.
Not inside the server. Its Quickstart creates a collection with a vector size and distance metric and then upserts vectors you pass in; FastEmbed, Qdrant's embedding library, is a Python package that runs in your application. Weaviate's vectorizer modules send source data to the provider at import time and store the returned vectors.
Its core is BSD-3-Clause. The LICENSE file carves out the wl directory, whose code is Copyright Weaviate BV and available only under a separate enterprise licence, with features enabled via licence key that the BSD licence does not grant the right to use. Qdrant is Apache-2.0 throughout.
Neither publishes a minimum, because it depends on how many vectors you store and at what dimension; our 1 GB floors are estimates for a small collection. Empty, on our GCP e2-standard-2 box, Qdrant idled at ~17 MB and Weaviate at ~43 MB.
Paid link — we earn a commission if you shop through it.
A fully GPL PHP ERP with the books in the download, or a bigger Python suite whose accounting sits behind Enterprise.
A status page that runs its own checks, or a monitor that also publishes a status page.
A YAML-declared pipeline orchestrator on Java and PostgreSQL vs. a visual integration builder with a source-available license.