Dense vectors find meaning and miss exact words. Sparse vectors do the opposite. Running both and combining the results is the single biggest retrieval-quality improvement most systems can make — here is how, with Qdrant’s Query API.
One collection or many, how to isolate tenants without a collection each, and what named vectors, multivectors and sparse vectors are for. The design decisions you make once and live with.
Pre-filter and post-filter are both wrong, and understanding why is the most useful thing in vector search. What breaks when a filter and a graph disagree, what Qdrant does about it, and why a more selective filter can be either much faster or much slower.
Most real queries are not “find similar” but “find similar, where the tenant is this and the date is after that”. How payloads work, what a payload index is for, and the conditions Qdrant actually supports.
Vectors are the memory bill, and quantization is how you cut it — by 4×, 16× or 32×, in exchange for accuracy you get most of back through rescoring. What each method throws away, and the arithmetic for deciding before you pay for the RAM.
How to find out whether your index is actually returning the right answers — building ground truth, computing recall@k, and the four ways a benchmark quietly lies to you. The methodology part of the series, and the one the others depend on.
The index Qdrant actually uses, explained by building it up from one idea — link every vector to a few neighbours and walk downhill. Layers, m, ef_construct and ef, what each one costs, and why the search is allowed to be wrong.
Create a collection, put points in it, get answers out — and find out what the distance metric really decides. On unit vectors all three metrics return the identical ranking; the moment lengths mean nothing, two of them break.
What an embedding actually is, why similarity becomes arithmetic, and the exact corpus size at which exact search stops being an option — measured against a real Qdrant, including the two ways this part’s own lab was wrong while passing every check.
Range against hash, consistent hashing, virtual nodes and hot keys — measured by placing a million keys four ways and counting what moves, plus what partitioning costs a query inside one PostgreSQL 18 database.