Keyword search matches characters and excels at exact terms, identifiers and precision. Semantic search matches meaning and excels at descriptive, misspelled and conversational queries. They fail in opposite directions, so production systems increasingly run both and fuse the results rather than choosing.
| Keyword (BM25) | Semantic (vectors) | |
|---|---|---|
| Matches on | Terms and frequency | Meaning and proximity |
| Strong at | SKUs, names, exact phrases | Descriptions, paraphrase, intent |
| Weak at | Synonyms, phrasing variety | Identifiers, negation |
| Empty results | Returns nothing when unmatched | Always returns nearest items |
| Setup cost | Low | Embedding and re-indexing cost |
| Explainability | High — you can see why | Low — distance is opaque |
If most queries are exact product names, part numbers or codes, keyword-first with typo tolerance handles the majority at lower cost. If most queries are descriptive, semantic-first is worth the indexing overhead.
For any site with mixed traffic — which is most sites — hybrid is the correct answer, and the interesting decision moves to how the two result sets are fused and re-ranked.