Explains hybrid search in Qdrant. Use when someone asks 'how do I setup hybrid search?', 'how to combine keyword and semantic search?', 'sparse plus dense vectors?', 'missing keyword matches', 'how to combine results from multiple searches?' and 'combining multiple representations'
Hybrid search means running two or more different searches in parallel and combining their results into one.
In Qdrant this is powered by the Query API via prefetch: each prefetch runs exactly one type of search independently, and the outer query combines results from parallel prefetches.
Prefetches can be nested and searches can be multi-stage, all pipeline happening in one request through Query API. See Universal Query API for examples.
Identify the user's problem and pick building blocks:
The most common hybrid search pattern is dense + sparse → RRF fusion. For this: create a collection with two named vectors (one dense, one sparse), construct a Query API request with two prefetches (one per vector type using using), and fuse with RRF as the outer query. See Hybrid Queries documentation.
Based on what you've picked, test your approach:
prefetch + using, like shown in examples in Hybrid Queries documentation.limit generously -- each prefetch must return enough candidates for the outer fusion to work. A prefetch limit of 20-100 is typical when the final limit is 10. Undersized prefetch limits silently degrade result quality.Use when: different tenants share one collection and you need to understand hybrid search isolation guarantees.
If user wants to isolate/share hybrid search pipelines between tenants, consider that:
params.idf.corpus to a payload filter (e.g. group_id = tenant) so IDF is computed over that tenant's documents only. The corpus filter is separate from the retrieval filter and is usually broader. Index the corpus field. If the corpus filter matches nothing, ranking degrades to plain TF. On 1.20 or newer it applies to BM25 text queries on a full-text index too, where it scopes the average document length as well Per-tenant scoring statistics.limit too low (e.g. equal to outer limit). The fusion step needs a surplus of candidates to produce good results.score_threshold on an outer fusion query expecting it to filter by individual prefetch scores -- it filters by the fused score only.skillbazaar install qdrant-hybrid-search --agent claudeSign in (free) to install skills with the CLI.
Author
@qdrant
on GitHub
Published by