ProCat Solutions
Cipő, cipőt, cipőben: how Abisearch searches Hungarian documents by meaning
The Abisearch vector search API: embeddings instead of keywords, Hungarian morphology, JSON and Excel upload, re-ranking, EU data centre and a free tier.
To a keyword search engine, the Hungarian words “cipő”, “cipőt”, “cipőben” and “cipőjükkel” are four unrelated terms. All four are forms of the word for shoe. In several of our customer support and knowledge base projects we hit the same wall: users search with different words from the ones the document was written in, and the search box comes back empty. In Hungarian it happens constantly. Abisearch, our own SaaS vector search API at abisearch.abigel.ai, is what we built in response. What follows is the technical background and the decisions behind it.

Matching meaning
Traditional keyword search (an inverted index with BM25 ranking) works when the query and the document share the same word forms. Ask for “comfortable running shoes” and it will miss a listing for “lightweight trainers for jogging”, which is exactly what the user wanted.
Vector search works differently. An embedding model turns each piece of text into a numeric vector with several hundred dimensions, placing texts with similar meanings close together. The engine then measures the distance between vectors and ignores whether the words match. The model is multilingual, so a question in Hungarian finds a document in English, and vice versa.
Keywords still have a job. For identifiers, part numbers and exact phrases, a literal match matters. Abisearch is therefore hybrid: it adds keyword signals to the vector hits and ranks results on a combination of both.
Suffixes, accents, compounds
Hungarian is agglutinative: dozens of suffixes can attach to a single stem. Stemming helps up to a point, but it is often too aggressive or plain wrong, and compound words such as “futócipő” (running shoe) and “edzőcipő” (trainer) are a problem of their own.
Multilingual embedding models cope far better, because they tokenise at the subword level and have learned meaning more than surface form. A few things still needed handling in practice:
- long Hungarian sentences use more tokens than their English equivalents, so chunk size is set per language,
- accented and unaccented spellings (“cipo” and “cipő”) need normalising in the keyword branch,
- vectors for one- or two-word queries are “noisy”, so the keyword branch gets more weight for those.
Customers do not configure any of this. The API detects the language and adjusts.

A spreadsheet and one endpoint
The aim was a tool that needs no machine learning knowledge. Ingestion takes two formats: JSON (an array of records with arbitrary fields) and Excel spreadsheets (one record per row, one field per column). At upload you choose which fields go into the searchable text and which stay as filterable metadata.
Search is a single REST endpoint. The request carries a natural-language query and optional filters; the response is a list of hits with a relevance score and the original record. It can be called from cURL, Python, JavaScript or PHP like any HTTP API. The API key travels in a header, and every response reports the remaining quota.
Chunking, embedding and index updates run asynchronously in a queue, so one large upload does not slow down other customers’ searches. It is the same multi-tenant pattern we wrote about earlier: per-tenant limits and queues on shared infrastructure.
A second opinion from Gemini
Vector distance alone does not always produce the best order. The right answer is often in the top twenty, just not at number one. So there is an optional re-ranking step: a large language model (Gemini) re-scores the best candidates against the query, and that sets the final order.
It is slower and more expensive than the base search, so it is switched on per request. It pays off for knowledge bases and support articles; for quickly filtering a product catalogue the base result list is usually enough.
100 free requests a day
Abisearch runs entirely in a data centre inside the European Union, and uploaded data and indexes stay there. Data handling follows GDPR. An uploaded data set can be deleted at any time, and deletion removes it from the index too.
Pricing is by usage. Every account gets 100 requests a day free; beyond that, each request costs 0.001 euro. There is no monthly minimum and no package to buy up front. That is deliberate: small projects, such as an internal document store or a webshop with a few hundred products, can try it at no cost, while larger ones pay for the traffic they actually generate.
Anyone who tries it at abisearch.abigel.ai and wants to share feedback or report a bug can reach us at hello@procats.hu. Our next steps lead towards voice-based systems, where search will be one component of the conversation.