{"slug": "vector-database-showroom-part-3-qdrant-the-hot-hatchback-that-carries-more-than", "title": "Vector database showroom. Part 3 Qdrant — The Hot Hatchback That Carries More Than It Looks", "summary": "A developer's hands-on review of the Qdrant vector database details its filterable HNSW index, which builds payload filters into graph traversal rather than applying them after search, along with out-of-the-box hybrid dense-plus-sparse queries via the Query API and int8/binary quantization that shrinks vectors 4x and 32x respectively. The writeup warns that the distance function is locked at collection creation, that missing payload indexes degrade filtered search to scans, and that segments below the optimizer's indexing_threshold skip HNSW entirely, so small-collection benchmarks measure brute-force exact search rather than HNSW. It concludes Qdrant suits filter-heavy RAG at millions to hundreds of millions of vectors on self-hosted nodes, while noting manual snapshots, no point-in-time recovery, and real operational work for distributed mode.", "body_md": "## \n  \n  \n  🏎️ Qdrant — The Hot Hatchback That Carries More Than It Looks\n\n*Sharp acceleration, precise handling — and a trunk noticeably bigger than it looks from the outside.*\n\n**Under the hood:** a Rust core shipped as a single binary or container (the Python client even has an embedded/local mode for experiments). Apache 2.0. The signature feature — **filterable HNSW**: the graph is built with payload indexes in mind, so filters participate in graph traversal instead of being glued on top.\n\n### \n  \n  \n  Where it shines:\n\n- Remember pgvector's three filter tools? Here filtering is part of the index itself: \"similar, but only year=2024\" is this car's home turf\n- \n**Hybrid out of the box:** sparse vectors since v1.7, the Query API with prefetch and fusion (RRF/DBSF) since v1.10 — dense + sparse in a single request\n- \n**Quantization** is our \"lightweight alloys\": int8 shrinks vectors 4×, binary 32×. Originals can live on disk while only compressed copies stay in RAM. Hundreds of millions of vectors on a single node is a real setup, not marketing\n- \n**Multivectors (ColBERT-style):** * several vectors per point, late interaction — something very few databases in this showroom offer\nOperations: Prometheus metrics, snapshots, API keys + JWT RBAC\n\n### \n  \n  \n  Where it stalls:\n\n- \n**Bring your own embeddings** — it's a database, not an embedder (contrast with last issue's scooter). Clients for Python/JS/Go/Rust, LangChain/LlamaIndex integrations included\n- Distributed mode (sharding, replication, Raft) is real ops work — simpler than the freight train arriving later in this series, heavier than Postgres\n- Backups are manual snapshots. No WAL, no point-in-time recovery like the one you're used to in Postgres\n- Tuning is part of the contract: m, ef_construct, hnsw_ef, quantization with rescoring. Defaults are decent, but a hot hatch likes to be tuned\n\n### \n  \n  \n  What breaks if you skip the manual:\n\n- \n**The distance function (COSINE/DOT/EUCLID/MANHATTAN) is locked at collection creation.** Wrong pick = full reindex — there is no \"alter on the fly\"\n- \n**Payload indexes:** forget to create them and filtered search degrades to scans. The right order: collection → payload indexes → bulk upload. Adding an index afterwards rebuilds the HNSW graph in the background to wire up the filterable edges\n- \n**Benchmark trap #1:** while a segment stays below the optimizer's`indexing_threshold` , no HNSW index is built for it — search falls back to brute force, fast and with perfect recall. A naive benchmark on a small collection measures exact search, not HNSW. Honest numbers require production-like volume — or explicitly lowering`indexing_threshold`\n- \n**Quantization without rescoring eats recall** — and binary quantization is model-sensitive: brilliant on some embeddings, poor on others. Ground truth for comparison: search with exact=true. Showroom thesis: vendor benchmarks are ads — verify on your own data\n- \n**Named vectors:** if the collection was created with named vectors, queries must pass the vector name via the using parameter — otherwise a`400`\n\n**Cost of ownership:** free under Apache 2.0; Qdrant Cloud (managed & hybrid) exists. RAM appetite is flexible — quantization + on-disk originals instead of \"6 GB per million.\"\n\n**Mechanics & parts:** Qdrant GmbH (Berlin) behind it; the docs are among the best in the industry. \"Qdrant engineers\" are rare on the market, but this is a database a backend developer can drive — not a twenty-pod zoo.\n\n✅ **Take it if:** millions to hundreds of millions of vectors, filter-heavy RAG, self-hosting, and you want speed without building railroads\n\n❌ **Pass if:** your logic lives in SQL and you need joins (the station wagon does those better), or you're counting billions with GPUs — the train arrives later in this series\n\n**Test drive:**\n\nA hatchback doesn't pretend to be a station wagon and doesn't build railroads — it just carries fast. And when your data outgrows the trunk, the API doesn't change: you move to a cluster via snapshots, and the application never notices.", "url": "https://wpnews.pro/news/vector-database-showroom-part-3-qdrant-the-hot-hatchback-that-carries-more-than", "canonical_source": "https://dev.to/silver_dev/vector-database-showroom-part-3-qdrant-the-hot-hatchback-that-carries-more-than-it-looks-2ocm", "published_at": "2026-10-08 20:32:21+00:00", "updated_at": "2026-10-08 20:49:03.250571+00:00", "lang": "en", "topics": ["ai-infrastructure", "ai-tools", "mlops", "large-language-models"], "entities": ["Qdrant", "Qdrant GmbH", "pgvector", "LangChain", "LlamaIndex", "Prometheus", "Rust", "Apache 2.0"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/vector-database-showroom-part-3-qdrant-the-hot-hatchback-that-carries-more-than", "markdown": "https://wpnews.pro/news/vector-database-showroom-part-3-qdrant-the-hot-hatchback-that-carries-more-than.md", "text": "https://wpnews.pro/news/vector-database-showroom-part-3-qdrant-the-hot-hatchback-that-carries-more-than.txt", "jsonld": "https://wpnews.pro/news/vector-database-showroom-part-3-qdrant-the-hot-hatchback-that-carries-more-than.jsonld"}}