← Demos / 05

Search that understands what your customer means

Search a real shop the way a customer would, in English, Polish, German, French or Spanish. Keyword search looks for your words in the product names; a small model in your browser looks for what you mean.

The demo needs JavaScript. The model is a 49 MB download, once; your browser keeps it.

3,529 products of a UK gift wholesaler, named in English. Try a need ("keep my tea warm"), other words ("piggy bank") or another language.

96% vs 81%Of 80 everyday searches found a relevant product in the first ten; keyword search 81%.
5 languagesSearches in Polish, German, French and Spanish find English product names: 81–89%, against 4–21% for keyword search.
39 msPer search in your browser on a desktop computer, all 3,529 products compared. Nothing you type leaves this page.

How it works

DataProduct names and prices of a UK online gift wholesaler (UCI Online Retail II, CC BY 4.0), the shop of Demo 03. There are no search logs: a local open LLM wrote up to seven searches for every product, in five languages, and the model learnt the shop from them.
Modelparaphrase-multilingual-MiniLM-L12-v2, fine-tuned on those searches: 46.7 MB of weights plus a 2.5 MB vocabulary. Every product name is turned into numbers ahead of time; your search is turned into numbers in your browser and compared with all of them at once.
Benchmark80 everyday searches written by hand, each in five languages, and 16,565 product matches judged against a written rule; 3,528 are relevant. The same author wrote the prompt for the training searches, so the numbers are an upper bound.
Compared with keyword searchKeyword search does well when the customer uses the catalogue's own words, 97% in English, and finds little when they don't or write in another language. As published, the model found 77% across the five languages; trained on the shop's own searches, 88%.

Ask about Baltic ML

This box is the search model from Demo 05, running on this site's own text. It quotes the site and writes nothing of its own; when the best match is weak, it says it is not sure.

Code, configs and the full benchmark: github.com/balticml/semantic-search. Weights: huggingface.co/balticml/multilingual-minilm-shop-search. Want search like this in your shop? Book a 30-min call