Supported backends
Pinecone
Managed cloud with namespace-based multi-tenancy and serverless scale
Weaviate
Cloud or self-hosted with hybrid search and native BM25
Chroma
Local or HTTP for development and lightweight prototyping
Milvus
Self-hosted or managed with partition-key multi-tenancy
Qdrant
Self-hosted or cloud with named vectors and quantization
Backend comparison
| Backend | Client Type | Deployment | Best For |
|---|---|---|---|
| Pinecone | Managed cloud (GRPC) | Serverless / Pod-based | Namespace multi-tenancy, auto-scaling, minimal ops |
| Weaviate | Cloud or self-hosted | Managed / Docker / Kubernetes | Hybrid + generative search, native BM25, flexible schema |
| Chroma | Local or HTTP | In-process / Docker | Development, prototyping, local testing |
| Milvus / Zilliz | Self-hosted or managed | Docker / Kubernetes / Cloud | Partition-key multi-tenancy, large-scale infrastructure |
| Qdrant | Self-hosted or cloud | Docker / Kubernetes / Cloud | Named vectors, quantization, advanced payload filtering |
Pinecone
Architecture
Pinecone uses lazy client initialization with GRPC transport for production-grade performance. Key features:- Serverless and pod-based deployment models
- Namespace-based multi-tenancy (lightweight, per-query scoping)
- Automatic metadata flattening for nested dictionaries
- Batch processing with progress tracking
- Support for dense and sparse (hybrid) vectors
src/vectordb/databases/pinecone.py
Connection
Index creation
Multi-tenancy
Pinecone uses namespaces for logical data isolation:Metadata constraints
Pinecone requires scalar metadata values (str, int, float, bool) or lists of strings. Nested dictionaries are automatically flattened:Weaviate
Architecture
Weaviate uses eager connection initialization with collection-centric design. Key features:- Native hybrid search (vector + BM25)
- Generative search (RAG with OpenAI, Cohere, etc.)
- Tenant-based multi-tenancy (full isolation)
- Flexible schema with property types
- Query-time reranking
src/vectordb/databases/weaviate.py
Connection
Collection creation
Multi-tenancy
Weaviate uses tenants for strong data isolation:Hybrid search
Weaviate natively supports BM25 keyword ranking:Metadata filtering
Weaviate supports MongoDB-style filters:Chroma
Architecture
Chroma supports both in-process (ephemeral/persistent) and HTTP client modes. Key features:- Zero-setup local development
- In-memory or persistent storage
- HTTP server for remote access
- Native metadata filtering
- Embedding function integration
src/vectordb/databases/chroma.py
Connection
Collection management
Metadata filtering
Milvus
Architecture
Milvus is designed for large-scale deployments with partition-key based multi-tenancy. Key features:- Partition-key multi-tenancy (schema-level partitioning)
- Scalable infrastructure (horizontal scaling)
- Multiple index types (IVF, HNSW, DiskANN)
- Dynamic schema fields
- GPU acceleration support
src/vectordb/databases/milvus.py
Connection
Collection with partition key
Multi-tenancy
Milvus uses partition keys for tenant isolation:Qdrant
Architecture
Qdrant supports named vectors and advanced payload filtering. Key features:- Named vectors (multiple embeddings per document)
- Quantization for memory optimization
- Rich payload filtering (nested JSON support)
- Collection aliases
- Snapshot support
src/vectordb/databases/qdrant.py
Connection
Collection with named vectors
Payload filtering
Qdrant supports nested JSON payloads:Feature matrix
| Feature | Pinecone | Weaviate | Chroma | Milvus | Qdrant |
|---|---|---|---|---|---|
| Dense vectors | ✓ | ✓ | ✓ | ✓ | ✓ |
| Sparse vectors | ✓ | - | - | ✓ | ✓ |
| Hybrid search | ✓ | ✓ (BM25) | - | ✓ | ✓ |
| Metadata filtering | ✓ | ✓ | ✓ | ✓ | ✓ |
| Multi-tenancy | Namespaces | Tenants | Metadata | Partition keys | Collections |
| Generative search | - | ✓ | - | - | - |
| Reranking | - | ✓ | - | - | - |
| Named vectors | - | - | - | - | ✓ |
| Quantization | - | - | - | ✓ | ✓ |
| Serverless | ✓ | ✓ | - | - | ✓ |
Choosing a backend
When to use Pinecone
When to use Pinecone
- You want a fully managed serverless solution
- You need namespace-based multi-tenancy
- You prefer minimal operational overhead
- You need auto-scaling for variable workloads
When to use Weaviate
When to use Weaviate
- You need native hybrid search (vector + BM25)
- You want built-in generative AI capabilities
- You need flexible schema with strong typing
- You require tenant-based data isolation
When to use Chroma
When to use Chroma
- You’re in development/prototyping phase
- You need local testing without external dependencies
- You want simple setup with minimal configuration
- You have lightweight indexing requirements
When to use Milvus
When to use Milvus
- You need partition-key based multi-tenancy
- You have large-scale infrastructure requirements
- You want fine-grained index type control (IVF, HNSW)
- You need GPU acceleration for embedding generation
When to use Qdrant
When to use Qdrant
- You need named vectors (multiple embeddings per document)
- You want quantization for memory optimization
- You require rich nested payload filtering
- You need snapshot/backup capabilities