Why Keyword Search Fails Ecommerce Chat, and Hybrid Fixes It
TL;DR: Keyword search misses synonyms, semantic search misses model codes. aiSTAFF runs both and fuses the two ranked lists with Reciprocal Rank Fusion, then reranks by rating and reviews, so a chat shopper gets the right item instead of a dead end.
Where a single search method breaks
A shopper types "comfy chair under 300 lari" into a store chat. A keyword engine looks for the word "comfy" in your product titles, finds nothing, and returns an empty result, because your catalog calls the item an "armchair." The customer leaves. That one miss is a lost sale, and it happens dozens of times a day on a busy page. If you sell online in Georgia, the fix starts with our AI sales bot, and this article explains the retrieval that makes it work.
Keyword search has the opposite problem too. A customer who types an exact model code, say "AX-220," wants that precise SKU. A purely meaning-based engine might return five chairs that are conceptually similar and bury the one with the matching code. Each method is strong where the other is weak. The job of a good product search is to use both at once.
Two engines, two strengths
aiSTAFF embeds your catalog into a private vector store, one per business, and queries it two ways for every message.
- Dense semantic search. Each product and each query becomes a vector using Gemini embeddings. Distance between vectors measures meaning, so "couch," "sofa," and "settee" land near each other even though they share no letters. This is what catches synonyms, descriptions, and intent like "something for a small balcony."
- BM25 keyword search. A classic lexical ranker that scores exact term overlap. This is what nails model names, codes, brand spellings, and rare words that a semantic model has never seen. It is precise where dense search is fuzzy.
Run alone, each returns a ranked list. The problem is merging them. A naive approach picks the top result from one engine and ignores the other, which throws away half the signal. aiSTAFF fuses the two lists instead.
Reciprocal Rank Fusion, in plain terms
Reciprocal Rank Fusion, or RRF, is a scoring trick that combines two ranked lists without needing the two engines to speak the same units. Dense search returns a cosine similarity, BM25 returns a term-frequency score, and the two numbers are not comparable. RRF sidesteps that by ignoring the raw scores and using only the position of each item in each list.
The rule is short: a product's fused score is the sum of 1 divided by (a constant plus its rank) across both lists. An item ranked first in a list contributes a large slice. An item ranked tenth contributes a small one. A product that shows up high in both the semantic list and the keyword list collects two solid slices and rises to the top of the fused result. A product that ranks high in only one still gets a fair shot. The math is simple and the effect is sturdy: the items that both engines agree on win, and a strong hit from a single engine is not lost.
That is why a query like "comfy AX-220 armchair" works. The semantic side handles "comfy armchair," the keyword side locks onto "AX-220," and RRF surfaces the exact model at the top because it scores well on both sides at once.
Reranking by rating and popularity
Relevance is the first pass, not the last word. Two armchairs can match a query equally well while one is a bestseller with 200 reviews and the other is a stale listing nobody buys. aiSTAFF reranks the fused results by similarity multiplied by popularity, using rating and review count, so the proven seller outranks the dusty one. Products are also bucketed by type, which stops a search for a chair from returning a chair-shaped lamp. The customer sees the item most likely to fit and most likely to satisfy, the way a good floor assistant steers you to the model that works.
It also crosses languages and word forms
Because the dense side searches by meaning, it stretches across languages and grammar. A Georgian or Russian query is translated into the catalog language for the search, then the reply comes back in the customer's language. Plurals, cases, and word forms are tolerated, so "chairs," "chair," and the Georgian for "armchair" all reach the same products. Two companion reads cover this: how a Georgian customer shops your English catalog and comfy chair should find your armchairs. The broader vector-search picture is in multilingual vector search for a Georgian catalog.
Hybrid plus a relevance gate
Strong retrieval still needs a floor. If the best fused match is weak, returning it anyway invents a product the customer did not want. aiSTAFF applies a relevance gate at a cosine threshold near 0.64: below it, the bot says "we do not carry that" rather than forcing a poor result. Hybrid search raises the quality of what passes; the gate stops the rest. Together they are why the bot sells without lying, detailed in the relevance gate.
Once the right items are found, presentation matters. Each result returns as a card with price, old price, rating, and stock, covered in product cards in chat that convert, and the bot can carry several items through a conversational cart. The whole selling engine sits in the hub, the AI chatbot that sells your catalog. If you are deciding between this and retraining a model on your data, see RAG vs fine-tuning, and for the wider build, the ecommerce chatbot guide.
A worked example
An electronics store gets the message "tihi keyboard for office, mechanical." It is a typo for "quiet." Keyword search alone returns nothing useful. Dense search reads the intent as a low-noise mechanical keyboard and ranks three models. BM25 catches "mechanical" exactly and confirms two of them. RRF fuses the lists, the two agreed models rise, and reranking puts the one with a 4.6 rating and 90 reviews first. The bot returns two cards, both in stock, both priced. A miss became a sale, and the customer never knew a typo nearly cost them the answer.
Related reading
- The AI Chatbot That Sells Your Catalog
- The Relevance Gate
- Comfy Chair Should Find Your Armchairs
- Product Cards in Chat That Convert
FAQ
What is hybrid search in a chatbot?
It runs two product searches at once, a semantic one that understands meaning and a keyword one that catches exact codes, then fuses the two ranked lists so the best overall match wins.
What does Reciprocal Rank Fusion do?
RRF combines two ranked lists using each item's position rather than its raw score. Products that rank high in both lists collect the most weight and rise to the top, which makes the fused result sturdy.
Why not use only semantic search?
Semantic search is fuzzy on exact model names, codes, and rare brand spellings. Pairing it with keyword search keeps the meaning match while pinning down the precise SKU a buyer asked for.
How does it avoid returning the wrong product?
After fusion the bot reranks by rating and reviews, then applies a relevance gate near 0.64 cosine. Weak matches fall below the gate and the bot says it does not carry the item instead of guessing.