qdrant-hybrid-search-prefetches

Constructs prefetch queries for hybrid dense and sparse retrieval in Qdrant.

3|1|Updated Nov 30, 2025
One-click install
npx skills add https://github.com/PALabs-v1/AI_friend --skill qdrant-hybrid-search-prefetches-palabs-v1
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: qdrant-hybrid-search-prefetches
Source: https://github.com/PALabs-v1/AI_friend/tree/main/.claude/skills/qdrant-search-quality/search-strategies/hybrid-search/search-types
Command: npx skills add https://github.com/PALabs-v1/AI_friend --skill qdrant-hybrid-search-prefetches-palabs-v1

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Pure dense vector search often misses exact keyword matches, and combining multiple representations of the same item (title, abstract, chunks, languages) in one query is hard to design correctly. This Skill guides the construction of prefetch queries in Qdrant's Query API so hybrid retrieval works as intended. ## Core Features & Use Cases - Sparse Vector Selection: Compares BM25, BM42, miniCOIL, SPLADE++, and external learned sparse embeddings (e.g. BGE-M3) with configuration guidance on tokenization, stemming, stopwords, and avg_len calibration. - Multi-Representation Search: Designs multiple named-vector prefetches for items embedded in several ways, with rules for when a representation earns its own prefetch and when to prefer sparse vectors for lexical fields. - Grouping and Multivector Guidance: Covers grouped search with per-prefetch limit sizing, lookup-in-groups to avoid payload duplication, and the tradeoffs of multivectors in prefetch stages. - Use Case: A search engineer building a document search system needs to combine a dense chunk embedding, a BM25 sparse vector over titles, and document-level grouping in a single Qdrant Query API request with correct prefetch limits. ## Quick Start Ask how to combine dense and sparse vectors in one Qdrant search request for a collection with title and chunk fields.

Frequently Asked Questions about qdrant-hybrid-search-prefetches

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I combine dense and sparse vectors in one Qdrant search?

Use multiple prefetch queries in Qdrant's Query API, one per vector representation, then fuse results with a method like RRF. Store the representations as named vectors, which must be configured at collection creation time.

Which sparse embedding model should I use for hybrid search in Qdrant?

BM25 is built into Qdrant core and works out-of-domain as a baseline. SPLADE++ offers term expansion at higher inference cost, while miniCOIL and BM42 are English-only and need fine-tuning. External models like BGE-M3 are also supported.

BM25 vs SPLADE for lexical search, which is better?

BM25 is a statistical method computed server-side in Qdrant, good for long texts and multilingual content with per-language configuration. SPLADE++ is a learned sparse model with term expansion that performs better but needs heavier inference and fine-tuning for domain-specific retrieval.

Why does BM25 scoring look wrong on short fields like titles?

The avg_len parameter is not computed server-side and defaults assume document-length text. For short fields like titles or tags, pass a much smaller avg_len value, otherwise term frequency is overweighted and scoring is skewed.

Can I use payload filtering instead of sparse vectors for keyword search?

Payload filtering does not provide any ranking score, so it cannot replace lexical retrieval. Qdrant uses sparse vectors for text search because they produce ranked results based on term statistics.

When should I avoid multivectors in a prefetch query?

Multivectors use the max similarity metric, which is not symmetric and problematic for HNSW indexing, and they are heavy to store and search. They were designed for late interaction models, so cheaper alternatives like MUVERA or pooling should be considered first.