Vector Database Comparison

Choose the right vector database for your AI applications on Clore.ai GPU servers.

circle-info

Vector databases store and retrieve high-dimensional embeddings efficiently — the core infrastructure for RAG systems, semantic search, and recommendation engines. This guide compares the four most popular open-source options.


Quick Decision Matrix

ChromaDB
Qdrant
Milvus
Weaviate

Best for

Prototyping, local dev

Production RAG

Billion-scale search

Knowledge graphs

Deployment

Embedded/Server

Server/Cloud

Server/Cloud

Server/Cloud

Scalability

Single-node

Multi-node

Distributed

Distributed

GitHub stars

17K+

21K+

31K+

12K+

License

Apache 2.0

Apache 2.0

Apache 2.0

BSD 3-Clause

Managed cloud

No

Yes (Qdrant Cloud)

Yes (Zilliz)

Yes (Weaviate Cloud)

Language

Python

Rust

Go

Go


Overview

ChromaDB

ChromaDB is the simplest vector database — designed for rapid prototyping and small-to-medium scale applications. It can run entirely in-memory or persist to disk.

Philosophy: Zero configuration, maximum developer experience.

Qdrant

Qdrant is a production-ready vector search engine written in Rust. It focuses on performance, filtering, and operational simplicity.

Philosophy: Production performance without operational complexity.

Milvus

Milvus is the most scalable open-source vector database, designed for billion-scale deployments. It has a distributed architecture with Kubernetes support.

Philosophy: Massive scale, cloud-native.

Weaviate

Weaviate combines vector search with knowledge graphs and a GraphQL API. It supports multi-modal search (text, images, audio) out of the box.

Philosophy: Schema-rich, multi-modal, knowledge graph capabilities.


Performance Benchmarks

ANN Benchmarks (ann-benchmarks.com, 2024)

1M vectors, 768 dimensions, Cosine similarity

Database
QPS (1 thread)
Recall@10
Build Time
Index Size

ChromaDB (HNSW)

~2,000

98.5%

45s

2.1GB

Qdrant (HNSW)

~8,500

99.1%

32s

1.8GB

Milvus (HNSW)

~12,000

98.9%

28s

1.9GB

Weaviate (HNSW)

~6,000

98.7%

38s

2.0GB

10M vectors (scalability test)

Database
QPS
RAM Usage
Notes

ChromaDB

~800

22GB

Struggles at scale

Qdrant

~5,200

18GB

Good with quantization

Milvus

~9,800

15GB (indexed)

Best at scale

Weaviate

~3,500

21GB

Moderate

circle-info

Benchmarks are guides, not gospel. Performance varies greatly based on index type, hardware, vector dimensions, and query patterns. Always benchmark with your own data.

Filtered search (vector similarity + metadata filter) is crucial for production RAG:

Database
Filtered QPS
Pre-filter
Post-filter

ChromaDB

~500

Qdrant

~6,000

✅ (HNSW + payload index)

Milvus

~8,000

Weaviate

~3,000

✅ (inverted index)

Winner for filtered search: Qdrant and Milvus, which support true pre-filtering without post-filtering performance degradation.


Feature Comparison

Storage and Indexing

Feature
ChromaDB
Qdrant
Milvus
Weaviate

HNSW index

IVF index

DiskANN

Scalar quantization

Product quantization

Binary quantization

On-disk storage

Mmap

Query Capabilities

Feature
ChromaDB
Qdrant
Milvus
Weaviate

Vector similarity

Hybrid search (BM25+vector)

Metadata filtering

✅ (basic)

✅ (rich)

✅ (rich)

✅ (GraphQL)

Keyword search

Multi-vector search

Sparse vectors (SPLADE)

Named vectors

Operational Features

Feature
ChromaDB
Qdrant
Milvus
Weaviate

REST API

gRPC API

GraphQL API

Authentication

Basic

RBAC

Horizontal scaling

Kubernetes support

Snapshots/Backup

Monitoring (Prometheus)


ChromaDB: Deep Dive

Strengths

Simplest setuppip install chromadb and you're done ✅ Embedded mode — no separate server process ✅ Auto-embedding — built-in embedding models ✅ LangChain/LlamaIndex native integration ✅ Zero config — great for prototyping

Weaknesses

Limited scale — struggles beyond 1-2M vectors ❌ No distributed mode — single node only ❌ Limited filtering — no pre-filtering ❌ No quantization — higher memory usage ❌ Slow at scale — Python-based operations

Deployment on Clore.ai

Best for: Jupyter notebooks, rapid RAG prototypes, <1M vectors


Qdrant: Deep Dive

Strengths

Best filtering — true pre-filtered vector search ✅ Rust performance — extremely fast, low latency ✅ Quantization — binary/scalar reduces memory 4-32× ✅ Sparse vectors — hybrid dense+sparse search ✅ Simple ops — single binary, no dependencies ✅ Good documentation — excellent guides and examples

Weaknesses

Single-writer in free tier (no distributed writes) ❌ Smaller ecosystem than Milvus ❌ No GraphQL — REST/gRPC only

Deployment on Clore.ai

Best for: Production RAG, filtered search, 1-100M vectors


Milvus: Deep Dive

Strengths

Massive scale — tested to 10B+ vectors ✅ Distributed — cloud-native Kubernetes architecture ✅ Most index types — IVF, HNSW, DiskANN, ScaNN ✅ GPU acceleration — GPU-powered index building ✅ Enterprise features — RBAC, audit logs, encryption ✅ Zilliz Cloud — fully managed option

Weaknesses

Complex deployment — requires etcd, MinIO, and Pulsar/Kafka ❌ Resource heavy — minimum 3 nodes recommended ❌ Steeper learning curve — more concepts to understand ❌ Overkill for small scale — don't use for <1M vectors

Deployment on Clore.ai (Standalone)

Best for: Large-scale production, 100M+ vectors, enterprise deployments


Weaviate: Deep Dive

Strengths

Multi-modal — text, images, audio, video ✅ Auto-vectorization — built-in model integrations ✅ GraphQL API — rich querying with graph traversal ✅ Module system — pluggable vectorizers and readers ✅ Hybrid search — BM25 + vector out of the box ✅ Generative search — built-in RAG with generate module

Weaknesses

Higher memory — schema-aware storage is larger ❌ No gRPC — GraphQL only (slower for high QPS) ❌ Complex schema — requires upfront class definition ❌ Slower at extreme scale than Milvus

Deployment on Clore.ai

Best for: Multi-modal search, knowledge graphs, generative search


When to Use Which

Scale-Based Decision

Use-Case-Based Decision

Use Case
Best Choice
Why

RAG prototype

ChromaDB

Zero setup, simple API

Production RAG

Qdrant

Fast filtering, simple ops

Semantic search

Qdrant or Milvus

Best performance

Multi-modal

Weaviate

Built-in image/audio support

Knowledge graph

Weaviate

Graph traversal queries

Billion-scale

Milvus

Distributed architecture

Hybrid search

Qdrant or Weaviate

BM25 + vector

Enterprise

Milvus or Weaviate

RBAC, audit logs


Memory Requirements on Clore.ai

RAM Estimation Formula

Dataset Size
ChromaDB
Qdrant
Milvus
Weaviate

1M vectors

16GB RAM

8GB RAM

32GB RAM

16GB RAM

10M vectors

32GB RAM

64GB RAM

48GB RAM

100M vectors

128GB+

256GB+

256GB+


Quick Comparison: Docker Setup Time

Database

docker run to ready

Dependencies

ChromaDB

~5 seconds

None

Qdrant

~3 seconds

None

Milvus

~60 seconds

etcd + MinIO

Weaviate

~15 seconds

None (standalone)


Pricing (Self-Hosted on Clore.ai)

All four databases are free to self-host. Cost is just Clore.ai server rental:



Summary

Start with...
If you need...

ChromaDB

Quick prototype, <1M vectors, minimal setup

Qdrant

Production RAG, great filtering, operational simplicity

Milvus

Billion-scale, enterprise, distributed architecture

Weaviate

Multi-modal, knowledge graphs, GraphQL querying

For most production RAG applications on Clore.ai, Qdrant offers the best balance of performance, features, and operational simplicity. For large-scale or enterprise needs, Milvus is the industry standard.


Clore.ai GPU Recommendations

Use Case
Recommended GPU
Est. Cost on Clore.ai

Development/Testing

RTX 3090 (24GB)

~$0.12/gpu/hr

Production

RTX 4090 (24GB)

~$0.70/gpu/hr

Large Scale

A100 80GB

~$1.20/gpu/hr

💡 All examples in this guide can be deployed on Clore.aiarrow-up-right GPU servers. Browse available GPUs and rent by the hour — no commitments, full root access.

Last updated

Was this helpful?