Visitors describe what they need; catalogues describe what things are. Semantic search closes that gap: «gift for a coffee lover» finds grinders and drippers although neither word is on the card. In AACSearch it is a single endpoint — no embedding code, no vector maths in your application.
Fill a vector field once with the embeddings endpoint — a multilingual model, 1024 dimensions — and keep indexing as usual.
POST the visitor's words to the semantic endpoint with the vector field's name. The platform embeds the query and returns the nearest documents.
filter_by limits results to what can actually be bought or read; distance_threshold drops matches that are only vaguely related.
Three kinds of query gain the most. Intent queries name a need rather than a product. Long queries carry too many words for every one of them to match. And cross-language queries — a Russian question against an English catalogue — share no tokens at all, yet land close together in the embedding space of a multilingual model.
Meaning alone cannot read «under 5000» or «in stock». Natural-language search handles that half: a configured language model turns «red running shoes under 5000» into q, filter_by and sort_by, and the response shows the parsed query so the behaviour stays inspectable.
For everyday site search, most teams run semantic retrieval as the vector side of hybrid search rather than alone — exact identifiers stay exact, and descriptive queries stop returning zero results.
The query is embedded on the server with the same model as the documents — one HTTP call from the storefront.
The endpoint is in the search scope, so a short-lived browser key can call it without exposing write access.
distance_threshold returns fewer results instead of bad ones when nothing in the collection is close.
One multilingual model embeds documents and queries, so a Russian question matches an English product card.
New to the term? The glossary explains Semantic search from first principles.
{
"q": "подарок любителю кофе",
"vector_field": "embedding",
"k": 10,
"filter_by": "in_stock:true && price:<5000",
"distance_threshold": 0.4
}
// -> grinders, drippers, beans — no shared keywords requiredExplore more
The best way to evaluate a search platform isn't reading one more comparison table.
Only then make the decision.