← Selected work

Professional work · NLP · Information retrieval

Production Semantic Retrieval

A multilingual semantic-retrieval system built around two production uses of the selected MPNet-family representation: generating related-skill relations for the existing search index and embedding live job-title queries for semantic ranking against precalculated title embeddings.

Information retrievalSentence representationsElasticsearchMultilingual retrievalProduction integration

Define the relation before choosing the model

The request was to improve search with AI, but “related skill” covered different cases: synonyms and spelling variants, closely or loosely related concepts, directional parent-child relations, and multilingual equivalents. Treating all of them as one undifferentiated similarity problem would produce the wrong expansions.

The existing co-occurrence approach made that concrete: Python and Java often appear together but are not interchangeable, while MongoDB can reasonably imply NoSQL without making the inverse expansion equally valid. The work therefore moved toward explicit relation semantics and proximity bands rather than a single nearest-neighbour rule.

Semantic job-title search and matching engine overview showing query preparation, MPNet embeddings, Elasticsearch, ranking, Rails integration, and production search outcomes
Architecture overview. Semantic job-title search and related-skill integration flow.

Compare models on the product's own vocabulary

Nine embedding variants were compared for related-skill ranking. The recorded evaluation covered 28,400 comparison samples and tracked where the first irrelevant result appeared in the ranked list, along with its similarity or proximity.

9embedding variants compared
28,400comparison samples
MPNetselected model family

The selection was based on the multilingual skill vocabulary and relation behavior needed by the product rather than a generic public benchmark. MPNet-family representations won that comparison.

Two production retrieval paths

The selected representation was used in two different ways. Related-skill generation materialized semantic relations into the existing search data, while job-title search used the model during the live query path.

Related skills

Live job-title search

Fit the semantic component into the existing product

For related skills, the work moved from model selection into the NLP service, API design, Ruby integration, relation-table generation, proximity assignment, reindexing, and search comparison. For job-title search, title embeddings were precalculated and stored with the search data, while the user's query was embedded at request time for semantic comparison and ranking.

Neither path replaced the surrounding search system. Semantic signals were added to the existing application and Elasticsearch workflow so lexical matching, filters, indexing rules, and other established search behavior could continue to operate alongside them.

Scope

Company and product identifiers are omitted for confidentiality. The surviving artifacts support the model-comparison and integration evidence above, but not a trustworthy public business-impact metric, so none is claimed.