Semantic + keyword retrieval, side by side

Search that understands what shoppers mean.

Keyword search matches strings. Semvex matches intent — compare BM25, dense-vector, and hybrid ranking on one query. Fully open source

Hybrid winsRRF · α 0.55
cheap gaming laptop
compare
keywordBM25 · ES
1Gamer Pro 178.4
2Gaming Mousepad6.1
3Laptop Sleeve4.9
semanticvector
1Budget Chromebook.81
2Gamer Pro 17.78
3ValueBook 14.74
hybridBest
1Gamer Pro 17.92
2Budget Chromebook.88
3ValueBook 14.79
relevant hit
BUILT WITH THE TOOLS YOU ALREADY RUN
PostgrespgvectorElasticsearchHuggingFaceNext.jsDocker
RETRIEVAL MODES

Meet the three-path ranking stack for product search.

Keyword, semantic, and hybrid — each with a real engine behind it, shown side by side so the difference between matching strings and matching meaning is impossible to miss.

Lexical baseline

Keyword search that keeps you honest

BM25 over Elasticsearch (or Postgres full-text as fallback) — the strawman every semantic system needs to beat. Title, brand, category, and description fields indexed for a fair lexical baseline.

Try keyword search
  • Elasticsearch BM25

    Optional ES engine with tsvector fallback when ES is unreachable.

  • Honest strawman

    Curated catalog makes keyword misses visible — gaming mousepad for “laptop” queries.

elasticsearch · bm25
q = "cheap gaming laptop"
1Gamer Pro 17 Laptop8.42
2Gaming Mousepad XL6.14
3Laptop Sleeve 15"4.91
4USB-C Gaming Hub4.22
tsvector fallback when ES unavailable
Dense retrieval

Semantic search that catches intent

bge-small-en-v1.5 embeddings stored in pgvector. Cosine similarity ranks by meaning — synonyms, paraphrases, and shopper intent that BM25 never sees.

Try semantic search
  • 384-d vectors

    Pretrained bge-small — no fine-tuning, HF Inference API for query-time embed on VPS.

  • pgvector kNN

    HNSW index for sub-ms vector lookup; hashing fallback when no model is installed.

pgvector · cosine
bge-small · 384-dkNN
Budget Chromebook 140.81
Gamer Pro 17 Laptop0.78
ValueBook 140.74
Student Laptop 150.71
Production default

Hybrid fusion you can tune live

Reciprocal Rank Fusion blends keyword and semantic rankings. The α slider in the search UI lets you weight keyword vs semantic live — and watch NDCG shift in real time.

Try hybrid ranking
  • RRF + tunable α

    Default fusion with an interactive slider — recruiters see the tradeoff, not just the result.

  • Usually wins

    +34% NDCG@5 lift vs keyword alone on the labeled eval set.

hybrid · rrf fusion
α blend0.55
keywordsemantic
Gamer Pro 17best.92
Budget Chromebook.88
ValueBook 14.79
INTEGRATIONS

We support your stack.

Postgres + pgvector for vectors, Elasticsearch for BM25, and HuggingFace for query embeddings — env-driven and fully Dockerized.

Explore the engine
PRODUCTION READY

Built to ship

Production ready.

Everything a real product-search stack needs — reranking, diversity, natural-language filters, secured accounts, and a live eval overlay.

Explore the engine

Tunable α blending

Slide keyword ↔ semantic weighting live and watch the ranking shift in real time.

Learn more

Cross-encoder rerank

Two-stage retrieval: a reranker refines the top candidates for precision.

Learn more

Live NDCG / Recall / MRR

Labeled-query metrics overlaid in the UI — the winning path is starred, not asserted.

Learn more

Secured accounts

Email verification, TOTP 2FA, backup codes, Google OAuth, and rate limiting.

Learn more
ANALYTICS
Analytics

Admin dashboard with real query telemetry

Click tracking, query logs, mode breakdowns, and top-query tables — the same data that powers the offline eval harness, visible in the admin UI.

View admin dashboard
  • Click + query logs

    Every search and click recorded for relevance feedback and analytics.

  • Mode breakdown

    See which retrieval path wins per query — hybrid, semantic, or keyword.

semvex · /admin
1,284
queries
312
clicks
68%
hybrid wins
top queries · 24h
running shoeshybrid41
cheap laptopsemantic28
wireless earbudskeyword19
Ingestion

Stream ESCI at scale into pgvector + ES

The Amazon ESCI products parquet streams via pyarrow in 50k-row batches — embed with bge-small, upsert pgvector, bulk-index Elasticsearch. Idempotent and resumable.

See benchmark results
  • Low-memory stream

    pyarrow record batches — 1M+ rows without loading the full parquet into RAM.

  • Dual index

    Vectors in Postgres, BM25 docs in ES — one ingest command keeps both in sync.

ingest pipeline
01
ESCI parquet stream
pyarrow batches
02
bge-small embed
384-d vectors
03
pgvector upsert
HNSW index
04
ES bulk index
BM25 mirror
Benchmarks

Headline numbers from the eval harness

Offline scores on the curated electronics + shoes catalog with human relevance labels.

+34%
NDCG@5 lift, hybrid vs keyword
3
retrieval modes, one query
384-d
bge-small embeddings
<40ms
query-time embed (cached vectors)
FAQ

Questions, answered.

How the three retrieval paths work, what runs the engine, and how the numbers are measured.

What's the difference between keyword, semantic, and hybrid?

Keyword (BM25) matches literal terms. Semantic embeds the query and ranks by meaning in pgvector. Hybrid fuses both with Reciprocal Rank Fusion and a tunable α — usually the best of the three.

Do I need a GPU to run the semantic search?

No. Semvex uses bge-small-en-v1.5 (384-d) via the HuggingFace Inference API for query-time embeddings, with a hashing fallback when no model is configured. Catalog vectors are precomputed and cached.

Is Elasticsearch required?

It's optional. The keyword engine runs on Elasticsearch BM25 when available and transparently falls back to Postgres tsvector full-text search when ES is unreachable.

Can I ingest my own product catalog?

Yes. The streaming ingester reads the Amazon ESCI parquet in 50k-row batches via pyarrow — embed, upsert to pgvector, and bulk-index to ES in one idempotent, resumable command. Point it at your own data the same way.

How are the NDCG / Recall / MRR numbers computed?

From a labeled query set with human relevance judgments, scored by the offline eval harness. The same data powers the live metrics overlay in the search UI, so the winning path is measured, not asserted.

What secures the accounts?

Email verification, TOTP two-factor with backup codes, Google OAuth, and rate limiting — backed by Postgres on Neon.

Semvex is free, open source, and yours to self-host.

Semvex

Semantic product search that ranks by meaning — keyword, dense-vector, and hybrid retrieval compared on a single query.

Product

Engine

Project

© 2026 Semvex — semantic product search.Developed by Archilect Studios