Kognita
All posts
Engineering2026-08-28·8 min read

Sparse vs. dense embeddings: why SPLADE still matters

Dense vectors capture meaning; sparse vectors capture exact terms. Learned sparse models like SPLADE sit between keyword search and dense retrieval — and they're why hybrid search works so well.

The story people tell about retrieval is that dense embeddings replaced keyword search — meaning beat matching, and we all moved on. It's a tidy story and it's incomplete. Sparse representations never went away, and learned sparse models like SPLADE are a big reason modern hybrid search is so effective. To understand why hybrid retrieval beats either method alone, you have to understand what sparse and dense embeddings each actually encode — and why the gap between them is exactly the gap hybrid search fills.

sparse vs dense embeddings and SPLADE

Two ways to turn text into a vector

Dense embeddings are what most people mean by "embeddings": a few hundred to a few thousand continuous numbers, every dimension filled, encoding the meaning of the text. Their strength is semantic matching — "car" and "automobile" land near each other, and a query can match a passage that shares no words. Their weakness is exact terms: a specific error code, product SKU, or rare proper noun carries little semantic signal, so dense vectors handle it poorly. Meaning is captured; precision on literal tokens is lost.

Sparse embeddings are the opposite shape: a vector as long as your vocabulary, almost entirely zeros, with non-zero weights only for the terms that matter. Classic keyword search (BM25) is essentially a sparse method — it represents text by its terms and their importance. Sparse vectors excel at exact term matching (the error code lights up its exact dimension) and are interpretable (you can see which terms drove a match). Their weakness is the mirror image: no notion that "car" and "automobile" are related. Different words, different dimensions, no match.

Where SPLADE fits

Classic sparse search (BM25) matches only the literal terms present. SPLADE is a learned sparse model that keeps the sparse, term-based, interpretable structure but adds something crucial: term expansion. It's trained to assign weights not just to the words in the text, but to related terms that should also match. A passage about "automobiles" might get non-zero weight on "car" even if the word never appears.

This is the clever part. SPLADE lives between BM25 and dense retrieval:

  • Like BM25, it's sparse, term-based, exact-match-friendly, and interpretable.
  • Like dense embeddings, it captures some semantic relatedness through learned expansion — it bridges some of the vocabulary gap BM25 can't.

So it recovers much of BM25's precision on exact terms and softens BM25's brittleness on synonyms, without becoming a fully opaque dense vector.

Why this explains hybrid search

Here's the payoff. Hybrid search works because sparse and dense embeddings fail on opposite inputs, so combining them covers both:

  • Dense handles the semantic, paraphrase-heavy part of a query.
  • Sparse (BM25 or SPLADE) handles the exact-term, keyword-heavy part.

A real query — "how do I fix ERR_CONN_4021 on the VPN" — has both: an exact code the sparse side nails, and a fuzzy intent the dense side nails. Fuse them and you get passages that match the code and the intent. This is exactly why serious retrieval systems, Kognita included, run hybrid search rather than betting everything on dense vectors: the sparse half catches what dense retrieval systematically misses.

When sparse still outperforms dense outright

Beyond hybrid, there are corpora where sparse methods win on their own:

  • Keyword-heavy, jargon-dense domains — legal, medical, technical — where exact terminology carries the meaning and paraphrase is rare. Here dense embeddings can over-smooth distinctions that a term-based method preserves.
  • Exact-identifier retrieval — codes, part numbers, function names — where the literal string is the query. Dense vectors are the wrong tool; sparse is native to it.
  • Interpretability requirements — when you need to explain why a passage matched, sparse methods show you the terms; dense vectors are a black box.

The takeaway

Dense embeddings didn't make sparse retrieval obsolete — they made it half of a better system. Dense captures meaning; sparse captures exactness; learned sparse models like SPLADE narrow the gap between them while keeping sparse's strengths. The reason to care isn't nostalgia for keyword search. It's that understanding this split explains why hybrid search — dense + sparse, fused — reliably beats either alone, and why any retrieval system that quietly dropped the sparse half is leaving exact-term recall on the table. If your retrieval struggles with codes, names, and jargon, the missing ingredient isn't a bigger dense model. It's the sparse signal you stopped using.