Skip to content
Vector Search

Semantic search that finds what people mean

We build and measure embedding-based search for websites, product catalogues, helpdesks and internal documents, so the right answer appears even when the words do not match.

  • 4–8 week typical build
  • Evaluated on your real queries
  • pgvector, Milvus or managed
Who this is for

Search that fails on synonyms costs you answers

Keyword search is precise and brittle. Semantic search is forgiving and occasionally vague. The job is to get the best of both, measured on your own queries.

You are a good fit if people search your site, catalogue, helpdesk or intranet and leave empty-handed because they phrase things differently from your content. Typical starting points: a catalogue where "waterproof jacket for cycling" returns nothing, or a support centre where "card declined" misses the article titled "Payment failures", or a policy library where staff search by situation rather than by document title.

  • Queries phrased as problems rather than product names
  • Content written by many authors with inconsistent vocabulary
  • Users searching in one language for content written in another
  • A search log full of zero-result queries nobody has mined
Outcome

Fewer zero-result searches

Paraphrases, synonyms and misspellings land on the right page instead of an empty state.

Outcome

A number you can defend

Recall@k and MRR on a labelled test set, re-run on every change, so improvements are visible and regressions are caught.

Outcome

A foundation for RAG

The same index later powers an AI knowledge base that answers questions with citations.

How it works

Documents and queries become points in the same space

An embedding model turns text into a list of numbers. Texts with similar meaning land close together. Search becomes "find the nearest points to the query".

A query is embedded into the same vector space as the documents; the nearest points become the ranked results Embedding space 2-D view of a high-dimensional space. Closer = more similar meaning. Returns & refunds query d = 0.41 d = 0.11 Delivery times Account & login Orange = inside the neighbourhood, returned. Teal = other documents. From query to results “can I send it back?” embed [0.12, −0.48, 0.07, …] nearest-neighbour search Ranked by distance 1. Returns policy0.11 2. Refund timelines0.14 3. Exchanges0.19 4. Delivery options0.41 No keyword is shared with the query.
The query "can I send it back?" is embedded and lands beside the returns documents. The three nearest points are returned, ranked by distance, with no shared keyword.

Three decisions shape the result: which embedding model and chunking strategy you use, how the index is built, and what happens after retrieval. The last step matters more than people expect. A reranker that reads the query and each candidate together fixes most of the "close but wrong" results that pure distance ranking produces.

Honest comparison

Where keyword search fails, and where semantic search fails

Neither approach wins everywhere. Knowing the failure modes tells you which parts to combine.

SituationKeyword searchSemantic searchWhat we do about it
Synonyms and paraphrase ("send it back" vs "returns")MissesFindsVector retriever carries the query
Typos and spelling variantsMisses without fuzzy matchingMostly tolerantEmbeddings plus light query normalisation
Exact SKUs, part numbers, error codesExact matchBlurs similar codesKeep a keyword retriever in a hybrid setup
Negation ("not compatible with")Literal, often fineTends to ignore the "not"Reranker plus structured filters
Recency ("latest release notes")Needs a sort ruleNo sense of timeMetadata weighting on dates
Cross-language queriesFails across languagesWorks with multilingual modelsMultilingual embedding model
Very short, ambiguous queries ("apple")Returns everythingPicks one meaningFacets, filters and query suggestions
Rule of thumb

If your users type codes, names or exact phrases a meaningful share of the time, plan for hybrid from day one. If they mostly type questions and descriptions, pure semantic search with a reranker is usually enough to start.

What we deliver

What a finished search system includes

Content pipeline

Connectors to your CMS, catalogue, helpdesk or file store. Cleaning, chunking, metadata extraction and incremental re-indexing when content changes.

Retrieval service

A small API that embeds the query, searches the index, applies filters and returns ranked results with snippets. Hybrid and reranking are switchable.

Evaluation harness

A labelled query set, scoring scripts and a report that runs on every change. Hand-over includes the data, so your team can keep measuring.

Front-end integration

Search box, results page, facets and "did you mean" wired into your existing site or app. Mobile and keyboard behaviour included.

Vector store set-up

Index configuration, filtering, backups and capacity planning on pgvector, Milvus or a managed service.

Monitoring and feedback

Query logs, zero-result tracking, click-through on results and a feedback loop into the test set. See LLMOps and monitoring.

How we measure it

Two numbers, explained in plain words

Recall@k asks: for each test query, is at least one correct document in the top k results? Average that across the test set. Recall@10 of 0.9 means nine queries in ten had a right answer somewhere on the first page.

MRR (mean reciprocal rank) asks where the first correct result sits. Rank one scores 1, rank two scores ½, rank three scores ⅓. Average the scores. MRR rewards putting the right answer at the top; a correct result low on the page scores less.

Both need a labelled test set. We build one from your search logs: 100–300 real queries. Someone who knows the content tags each one with the one to three documents that should come back. It takes a domain expert a day or two and pays for itself on the first regression it catches.

QueryFirst correct result at rankReciprocal rank
"can I send it back"11.00
"card keeps getting declined"20.50
"change delivery address"40.25
"cancel but keep points"not in top 100.00
MRR0.44

Illustrative example. The last row is the number that improves or regresses when you change a model or a chunking rule.

Process

From search logs to a measured launch

  1. Discover (week 1)

    Mine the search log, list zero-result queries, inventory the content and pick the store that fits your stack.

  2. Index (weeks 2–3)

    Build connectors, chunk and embed the content, attach metadata, set up incremental sync.

  3. Retrieve (weeks 3–5)

    Query pipeline, filters, hybrid fusion where needed, reranking, and integration into the UI.

  4. Evaluate (weeks 5–6)

    Label the test set, score recall@k and MRR, tune chunking, model and ranking until the numbers hold.

  5. Launch and learn (weeks 6–8)

    Shadow or A/B rollout, monitoring, and a feedback loop that grows the test set from real traffic.

Ranges assume one primary content source and an existing front end. Permission-aware search across several systems, or search that must also feed a RAG pipeline, extends the middle phases.

FAQ

Frequently asked questions

What is the difference between semantic search and keyword search?

Keyword search matches the words in the query against the words in the document. Semantic search converts both into embeddings and matches by meaning, so "can I send it back?" finds your returns policy even though the word "return" never appears in the query. See the glossary definition for a short explanation.

Do we need to replace our existing search engine?

Usually not. Most of our builds keep the existing keyword engine and add a vector retriever beside it, then fuse the two result lists. That hybrid approach keeps exact matches for codes and names while adding meaning-based recall.

How long does a semantic search build take?

A focused build over one content source typically takes four to eight weeks, including the labelled test set and evaluation. Multi-source builds with permissions and live synchronisation take longer. Ask for a scoping call and we will give you a range for your case.

Which vector database do you use for semantic search?

It depends on what you already run. PostgreSQL with pgvector is our default when Postgres is in place; Milvus when scale or GPU indexing matters; a managed service when there is no operations team. Our selection guide walks through the choice.

How do you prove that search actually improved?

We build a labelled query set from your real search logs and score recall@k and MRR before and after every change. The numbers decide whether a new embedding model or chunking rule ships.

Talk to us about your AI project

Tell us what you are trying to do, which systems are involved and what is in the way. We reply within one business day with an opinion and a suggested next step.