Tech Economy

Weaviate vs Qdrant: Self-Hosted Vector DB Under 2GB RAM

Weaviate vs Qdrant: Self-Hosted Vector DB Under 2GB RAM

Running a vector database on a 2GB server used to be an edge case. In 2026, it’s the default starting point for solo developers, bootstrapped startups, and edge deployments that can’t justify a cloud bill for every prototype. And that’s exactly why the Weaviate vs Qdrant on under-2GB single-server self-hosted question keeps surfacing in every infrastructure Slack channel worth following.

The short answer: Qdrant wins the memory efficiency race. The longer answer explains why that’s not the whole story.

Key Takeaways

  • Qdrant’s Rust-based memory model consistently holds baseline RAM usage below 400MB on a fresh single-node deployment — making it the stronger default for under-2GB self-hosted environments.
  • Weaviate’s JVM-based stack anchors minimum heap allocation at roughly 800MB–1GB, consuming nearly half your budget before a single vector gets indexed.
  • The CallSphere AI Vector Database Benchmarks 2026 report shows Qdrant delivering p99 ANN query latency under 10ms on commodity hardware, outpacing Weaviate in raw single-node throughput at equivalent resource constraints.
  • Weaviate’s module ecosystem — text2vec, generative modules, hybrid BM25+vector search — delivers richer out-of-the-box functionality, but each module compounds memory overhead fast in constrained environments.
  • For pure performance under 2GB RAM on a single server, Qdrant is the pragmatic pick. Weaviate makes sense when you need its native search graph features and can actually spare the RAM.

Why Under-2GB Self-Hosting Matters Right Now

The vector database market exploded after late 2023. What started as infrastructure for billion-parameter LLM retrieval has trickled down to every RAG pipeline, semantic search widget, and recommendation engine running on a $6/month VPS.

Weaviate hit v1.24 in early 2025 with improved module architecture. Qdrant crossed v1.9 in Q1 2026, shipping scalar quantization improvements and a revamped on-disk payload index. Both are production-grade. Both are MIT/Apache licensed. Both support HNSW indexing.

The hardware reality, though, is brutal. According to RankSquire’s February 2026 self-hosted database rankings, the median hobbyist deployment target is a 1–2 vCPU instance with 2GB RAM — think Hetzner CAX11, DigitalOcean Basic, or a Raspberry Pi 5. That’s not a lab curiosity. That’s millions of actual deployments.

Cloud-managed offerings from Weaviate Cloud and Qdrant Cloud both push you toward their hosted tiers. Self-hosting flips the economics entirely. The question isn’t which is better in a vacuum — it’s which one survives on constrained iron.


Memory Footprint: The Core Constraint

Qdrant runs on Rust. That matters immediately. A bare Qdrant node with no collections loaded sits at roughly 200–350MB RSS, according to process-level measurements in the CallSphere 2026 benchmark suite. Index a 100K-vector collection at 384 dimensions with HNSW (m=16, ef_construct=100), and you’re looking at approximately 600–800MB total, depending on quantization settings.

Weaviate runs on Go for its server layer with a Java-based module runtime handling ML integrations. The base process without any modules starts around 500–700MB. Load a single text2vec-transformers module backed by a local model container and you’ve already crossed 1.5GB — before indexing anything. The PEC Collective 2026 comparison notes that Weaviate’s modular architecture is its strength for feature richness but its weakness for embedded or constrained deployments.

The math is unforgiving. At 2GB total system RAM, Weaviate with active modules leaves roughly 400–500MB for OS overhead, the application process, and vector data. Qdrant in the same environment leaves 1.2–1.4GB for actual workload. That gap isn’t marginal — it determines whether your deployment stays stable at 3am or pages you.


Query Performance on Single-Node Hardware

Raw query throughput tells a different story from memory alone. The CallSphere benchmarks (January 2026, using a 4-core/8GB reference node scaled down via cgroup limits to simulate 2GB environments) show:

MetricWeaviate v1.25Qdrant v1.9
p50 ANN latency (100K vectors, ef=64)~4ms~2ms
p99 ANN latency~22ms~8ms
Throughput (QPS, single thread)~180~420
Base RAM (no data loaded)~600MB~280MB
RAM at 100K × 384d vectors~1.4GB~750MB
Disk-based index supportPartialYes (mmap)

Qdrant’s memory-mapped file support is the decisive feature. When RAM fills up, Qdrant transparently serves vectors from disk via mmap with acceptable latency degradation. Weaviate’s comparable feature — an LSM-based object store — is less aggressive about evicting hot vectors from RAM, which means it hits swap harder under pressure. That’s the kind of difference that doesn’t show up in benchmarks but absolutely shows up in production.


Weaviate’s Hybrid Search Advantage

Qdrant doesn’t win every dimension. Weaviate’s native BM25 + vector hybrid search is genuinely better out of the box. No external Elasticsearch dependency, no manual sparse vector construction — it handles the fusion internally. For a self-hosted RAG pipeline that needs both keyword recall and semantic similarity, Weaviate’s architecture is cleaner to operate.

Qdrant added sparse vector support in v1.7, enabling BM25-style retrieval when you pre-compute SPLADE or BM25 sparse vectors externally. It works, but it shifts complexity to your ingestion pipeline. Not a dealbreaker. A real operational difference.

This isn’t always the answer, either. If your use case is pure semantic similarity — embeddings in, nearest neighbors out — Weaviate’s hybrid search advantage is irrelevant, and you’re paying its memory tax for nothing.


What Actually Breaks in Production

On a 2GB single server, the failure modes differ in important ways.

Weaviate tends to OOM during bulk ingestion when module inference runs inline. Separating the inference container to a different process helps, but it defeats the single-server constraint. This approach can fail badly if your ingestion spikes are unpredictable.

Qdrant handles bulk ingestion more gracefully via its async WAL (write-ahead log) and configurable optimizer threads. RAM pressure during indexing is controllable through max_optimization_threads and segment size caps. The knobs are there. You can actually tune it.

Qdrant is designed for exactly this environment. Weaviate is designed for Kubernetes clusters that happen to run in Docker Compose when you need a quick start. That’s not a criticism — it’s an architectural reality that should inform your decision before you commit.


Three Deployment Scenarios

Scenario 1 — RAG chatbot on a $6 VPS. Pick Qdrant. Load your pre-chunked embeddings, enable scalar quantization (cuts memory roughly 4x with modest recall loss), and you’re serving semantic search on 500K documents from a 2GB Hetzner box with headroom to spare.

Scenario 2 — Internal semantic document search with mixed keyword and vector queries. Weaviate earns its overhead here. Dedicate at least 3–4GB RAM, disable all ML modules, and point Weaviate at a remote inference API — Cohere, OpenAI, or a separate GPU instance. The hybrid search quality justifies the complexity at that scale.

Scenario 3 — Edge inference on a Raspberry Pi 5 or similar ARM board. Qdrant’s ARM binary support and low baseline memory make it the only viable option. Weaviate’s Java runtime doesn’t behave well on low-clock ARM cores under memory pressure. That combination produces the kind of instability that’s hard to debug at 2am.

What to watch next: Qdrant’s v1.10 roadmap includes native sparse-dense fusion, which would close Weaviate’s hybrid search advantage. If that ships in H2 2026, the remaining case for Weaviate on constrained hardware weakens considerably.


The Bottom Line

The data is consistent across the CallSphere 2026 benchmarks, RankSquire’s self-hosted rankings, and the PEC Collective comparison: Qdrant is the right default for under-2GB single-server self-hosted deployments.

  • Qdrant’s Rust runtime holds under 350MB baseline vs. Weaviate’s 600MB+ minimum
  • p99 query latency favors Qdrant by roughly 2.7x at equivalent constrained resources
  • Weaviate’s hybrid search and module ecosystem are genuine advantages — but only when you can allocate 3GB+ RAM
  • Qdrant’s mmap-based disk offloading makes it far more resilient when you brush against memory limits

Over the next 6–12 months, watch for Qdrant v1.10’s native sparse-dense fusion and Weaviate’s ongoing work on lighter-weight module hosting. Weaviate’s team knows the memory problem exists — their GitHub shows active work on reduced-footprint deployments targeting exactly this segment. The gap will narrow. It just hasn’t yet.

One concrete action before you decide: run docker stats during peak ingestion load, not just at idle. The idle memory number is marketing. The ingestion peak is the real constraint.

Your deployment target — cloud VPS, bare metal, or edge hardware — should drive this decision more than any benchmark table. Start there.

References

  1. Weaviate vs Qdrant 2026: Open Source Vector DB Showdown
  2. Vector Database Benchmarks 2026: pgvector 0.9, Qdrant, Weaviate, Milvus, LanceDB | CallSphere Blog
  3. Best Self-Hosted Vector Database 2026: Ranked - RankSquire

Photo by Bernd 📷 Dittrich on Unsplash