Comparison Matrix
| Feature | Pinecone | Weaviate | Qdrant | Milvus | Chroma |
| Deployment | Cloud-only | Cloud + Self-hosted | Cloud + Self-hosted | Self-hosted (Zilliz Cloud) | Embedded + Client-Server |
| License | Proprietary | BSD-3 | Apache 2.0 | Apache 2.0 | Apache 2.0 |
| Index Algorithm | Custom (pod-based) | HNSW + Flat | HNSW | 11 index types (IVF, HNSW, etc.) | HNSW |
| Filtering | Metadata only | GraphQL + Vector hybrid | Payload filtering | Scalar filtering | Metadata filtering |
| Max Vectors | Billions | Billions | Billions | Billions | Millions |
| Pricing | $0.33/GB + pod fees | Free self-hosted, cloud per-query | Free self-hosted, cloud per-node | Free (Zilliz cloud per-CU) | Free |
| Best For | Managed, zero-ops, fast setup | Hybrid search (vector+keyword) | Performance, filtering, on-prem | Massive scale, 11 index options | Prototyping, local dev, simplicity |
When to Choose Each
| Item | Description |
Pinecone | Fastest time to production. No infrastructure management. Good free tier. Best for teams that don't want to manage infra. |
Weaviate | Best hybrid search (BM25+vector). GraphQL-native. Good when you need keyword+semantic search in one query. |
Qdrant | Best self-hosted performance. Excellent filtering. Rust-based — very fast. Best for latency-sensitive on-prem deployments. |
Milvus | Best for billion-scale. 11 index types for fine-tuning. GPU-accelerated. Best for research and extreme scale. |
Chroma | Simplest API. Embedded mode for prototyping. Best getting-started experience. Upgrade when you outgrow it. |
Key Concepts
| Item | Description |
HNSW | Hierarchical Navigable Small World — most common index. Fast queries, moderate memory. O(log N) search. |
ANN vs KNN | Approximate Nearest Neighbor (fast, ~95% accurate) vs K-Nearest Neighbors (slow, 100% accurate). |
Cosine Similarity | Most common distance metric for embeddings. Range: -1 to 1. 1 = identical direction. |
Euclidean Distance | Straight-line distance. Sensitive to magnitude. Use when vector magnitude matters. |
Dot Product | Sometimes used with normalized vectors. Faster than cosine. Range depends on vector norms. |
Payload/Filtering | Attach metadata to vectors — filter by category, date, user before vector search. |
Performance Tips
| Item | Description |
Dimension Matters | Higher dimensions = more memory, slower search. 768-1536 is sweet spot for most models. |
Batch Inserts | Upload vectors in batches of 100-1000 — dramatically faster than single inserts. |
Index Build Time | Build index after bulk insert, not during. Pinecone auto-indexes, self-hosted needs manual trigger. |
ef_construction / M | HNSW parameters: higher = better recall, more memory, slower build. Trade off for your use case. |
Pro Tip: For prototypes and small projects, start with Chroma (zero setup). For production at scale, Pinecone (managed, no-ops) or Qdrant (best self-hosted performance). Milvus wins on raw speed for billion-scale.