Jev RAG: vector-free local retrieval benchmark (BM25 vs agentic lexical + Jev) #51
aifabrice
started this conversation in
Show and tell
Replies: 1 comment
|
Benchmark update (2026-09-30): I expanded the comparison beyond the three original paths and kept the same NFCorpus corpus, 323 test queries, qrels, and metric implementation. A few results changed how I would frame the design:
The seven selectable pipelines, exact configurations, costs, latency caveats, and reproduction commands are summarized here: The main question I am still trying to answer is where the Jev boundary should sit: independent batched Noul judgments per passage, a listwise Choice stage, or a retrieval-prior fusion performed locally after Jev. Feedback from anyone testing the same boundary on another corpus would be especially useful. |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
I built Jev RAG, an independent local-first knowledge search application, to test how far a retrieval pipeline can go without first building an embedding index or running a vector database.
Repository: https://github.com/aifabrice/jev-rag
Interactive benchmark: https://aifabrice.github.io/jev-rag/
What the pipeline does
The default path is deliberately small and inspectable:
Noulquestions about passage relevance and whether the passage contains concrete answer-supporting evidence.I also added an agentic lexical mode: a planning model proposes multiple bounded keyword searches, local BM25 executes them, RRF fuses the results, and Jev reranks the final candidate pool. It still creates no embedding index. An optional embedding-hybrid mode is included as a comparison baseline.
Complete NFCorpus result
The public evaluation uses the complete BEIR NFCorpus test split: 3,633 documents and 323 queries.
Agentic lexical + Jev was 0.013358 nDCG@10 behind hybrid + Jev. I do not claim they are equivalent: a 20,000-sample paired bootstrap for agentic minus hybrid produced a 95% interval of
[-0.025480, -0.001697], still favoring the hybrid pipeline.Exact commands, JSON summaries, observed provider usage/cost, latency caveats, and per-query outputs are published here:
https://github.com/aifabrice/jev-rag/blob/main/benchmarks/NFCORPUS_RESULTS.md
What I would value feedback on
Noulthe right primitive for this reranking boundary, or would a listwiseChoicestage be a better default?The project documents exactly what text is sent to Jev, the planner, embedding provider, and answer model. It is not fully offline, and it is not affiliated with or endorsed by TypeSafe AI, OpenRouter, or MiniMax.
I am the author and maintainer; criticism of the benchmark protocol is especially welcome.
All reactions