What dense vectors are bad at
Semantic search solves a real problem and creates a different one, and the failure is systematic rather than occasional.
Dense embeddings represent meaning, which is why a query about cardiac arrest retrieves a document about heart attacks. The cost is that they represent meaning approximately, and exact tokens get smoothed away.
So dense retrieval reliably struggles with product codes and SKUs, error codes, person and place names, version numbers, acronyms specific to your organisation, and any rare term the embedding model saw seldom during training. A query for error TS-4471 may retrieve documents about errors generally while missing the one page that names it.
This is not a tuning problem. It is what the representation does, and no index parameter recovers it.
Lexical search, meaning BM25 and its relatives, has the mirror properties. It matches exact terms precisely, handles rare tokens well because rarity is exactly what its weighting rewards, and fails completely when the query and document use different words for the same idea.
The two failure modes are close to complementary, which is why production systems run both and combine the results rather than choosing. That combination is the subject of the next step, and the retrieval-quality side of it is treated in more depth in the Advanced RAG cursus.

