Qdrant is a high-performance vector database with advanced filtering and sparse vector support. These exercises cover collection creation requirements, payload filtering during HNSW search, index tuning parameters (m, ef_construct), sparse vectors for keyword retrieval, and the upsert operation semantics.
0 / 5 completed
1 / 5
In Qdrant, what is a Collection and what must you specify when creating one?
A Qdrant Collection is the primary storage unit (analogous to a table) for vectors and their payloads. When creating one, you must specify the vector dimension and the distance metric (Cosine, Dot, Euclidean, or Manhattan) which determines how similarity is calculated during search.
2 / 5
What is payload filtering in Qdrant and how does it interact with vector search?
Qdrant payload filtering allows attaching JSON metadata to points and filtering on it during search. With the HNSW index, Qdrant uses a filtered HNSW strategy to combine vector similarity with payload conditions efficiently. Filters can check exact matches, ranges, geo-bounding boxes, and nested fields.
3 / 5
A developer indexes vectors in Qdrant with hnsw_config: { m: 16, ef_construct: 100 }. What do these parameters control?
In HNSW: m controls the number of bidirectional links each node has in the graph (higher = better recall but more memory). ef_construct is the size of the candidate list during index construction (higher = better recall but slower indexing). Both trade off index quality vs. resource usage.
4 / 5
What are sparse vectors in Qdrant and which use case do they enable?
Qdrant sparse vectors store only non-zero indices and values, enabling efficient keyword-based retrieval with sparse models like SPLADE or BM25. Combined with dense vectors in Qdrant's hybrid search, sparse vectors handle exact keyword matching while dense vectors handle semantic similarity.
5 / 5
What does Qdrant's upsert operation do?
Qdrant's upsert (update + insert) operation inserts a new point if the ID doesn't exist, or replaces the entire point (both vector and payload) if the ID already exists. To update only the payload without changing the vector, use the separate set_payload or overwrite_payload operations.