# Diagnosis

## Symptom

Hybrid search (dense plus sparse) results are worse than dense-only, or sparse seems to contribute nothing.

## Likely cause

Common causes: records upserted without sparse values, the dense/sparse balance (alpha) set so one signal dominates, or mixing patterns (e.g. expecting server-side combination while only filtering).

## Confirm it

1. Fetch a few records and confirm `sparse_values` are present and nonzero.
2. Run dense-only and sparse-only queries separately; if sparse-only returns junk, the sparse vectors (or the sparse index config) are the problem.
3. Check how you combine: server-side combination needs both vectors on each record in one index; client-side fusion needs two queries plus RRF.

## Fix

1. Missing sparse values: re-ingest with sparse vectors (e.g. from a sparse embedding model like pinecone-sparse-english-v0 or BM25 weights).
2. Balance: scale query vectors to adjust the dense/sparse weight (alpha) and evaluate; do not leave it at a default nobody chose.
3. Wrong pattern: pick one documented pattern (filter-then-rank, client-side RRF fusion, or server-side combination) and implement exactly that.

## Verify the fix

Build a small eval set with keyword-heavy queries (product codes, names) and meaning-heavy queries; hybrid should beat each single signal on its home turf.