hRAG · Retrieval with receipts

4 min read Original article ↗

Hybrid retrieval with receipts.

00 · 01

The platform, answering

actual screenshots of the live thing… the 512K-document playground, streamed answers, citations you can open. no mockups — mockups would have been easier.

hRAG chat answering a rollback-recovery question with numbered citations

01 · 02

What runs under the hood

  1. BM25 inside PostgresNo search cluster to babysit.

    pg_textsearch gives real IDF ranking with Block-Max WAND: 88ms over 2 million chunks, where plain tsquery took 7.5 seconds.

  2. Hybrid fusion, weightedFusion is not a democracy.

    Vector and lexical arms fuse with a measured 0.3 vector weight — equal weighting scored worse than turning one arm off.

  3. Cross-encoder rerankerThe right eight chunks.

    A fourth service reads query and chunk together and reorders the window. Worth +3.9 on the public benchmark… and 16 seconds of latency on 2 vCPUs, which is why it ships as a checkbox and not a default. Both numbers are published.

  4. Grounded answersRefusal as a feature.

    Empty retrieval refuses without calling the model. On the benchmark's info-not-found questions: 100% correct while others hallucinate.

  5. Tenants by row-level securityIsolation is the floor, not a filter.

    Every query runs inside a tenant transaction Postgres enforces. The benchmark corpus and your sandbox are neighbors that cannot meet.

  6. Streaming citations[n] means something.

    Sources arrive before the first token; every bracket in an answer opens to the exact chunk that backs it.

02 · 03

How the numbers stay honest

  1. 1Measure before buildingThe reranker cost $1 to prototype offline before a line of service code existed.
  2. 2Publish the noesMulti-query rewriting, wider context, prompt-only fixes, HyDE — measured, failed, documented next to the wins. The noes cost real money; hiding them would waste it twice.
  3. 3One databaseVectors, BM25, text, tenants, and usage all live in Postgres. One thing to operate, one thing to trust.
  4. 4Small models, priced honestlyA 118M embedder and budget answerers, benchmarked against clouds that cost 100× more.
  • Five-node Kubernetes cluster on Hetzner
  • Postgres with vectors, BM25, and row-level security
  • Four services: ingest, embed, rerank, answer
  • A public benchmark score you can reproduce
  • All code MIT, all numbers receipted

€116

Answers cost tenths of a cent; the benchmark that proved them cost about $60 once.

Try it now — no login

The 512K-document playground is open to everyone, no login. Sign in with Google or GitHub only for your own private sandbox.

per month — the entire five-node cluster

What am I actually chatting with?
EnterpriseRAG-Bench: 512,000 simulated company documents — Slack threads, emails, wikis, tickets… the same corpus the platform is publicly scored on. what you see is exactly what the benchmark saw.

Can I bring my own documents?
Yes — sign in with Google or GitHub and you get a private sandbox: 10 documents, 20 pages each, a daily token budget, and meters that show exactly what's left. A page is counted in tokens, so no… one huge .txt file is not "one page", we checked. Row-level security keeps your docs yours.

How good is it, honestly?
Officially scored on EnterpriseRAG-Bench: #9, overall 44.74 (correctness 52.6, completeness 54.38, document recall 69.65) — ahead of Vertex AI Search and NVIDIA, one spot below Azure. On document recall we beat both Azure (64.25) and Vertex (61.76): the retrieval competes with the managed clouds outright, on a €116/month box. The live leaderboard is on Hugging Face; per-category tables are in the repo.

Why should I trust these numbers?
You shouldn't — not on our word alone. Every run's raw results are committed to the repo, and when the benchmark team re-scored our submission with their own judge, their recall landed within 0.05 points of ours (69.65 vs 69.6). Retrieval validated to a rounding error. Verify, then trust.

Can I run this myself?
That is the whole point… the articles walk through every deployment click and every benchmark, and the repos build the platform from scratch. Copy freely, measure everything.