Retrieval quality
BEIR: six datasets, official judgements
Science, medicine, finance and argument retrieval; the test split of each. Documents go in through POST /api/v1/ingest/records, queries through POST /api/v1/query/retrieve. Embedding model BAAI/bge-base-en-v1.5, the default when these were measured; it is now BAAI/bge-m3, and a BGE-M3 re-run is pending. nDCG@10 measures how good the top ten results are.
| nDCG@10 | SciFact | NFCorpus | ArguAna | SCIDOCS | FiQA | TREC-COVID | Mean |
|---|---|---|---|---|---|---|---|
| BM25 keyword search (BEIR paper) | 0.665 | 0.325 | 0.315 | 0.158 | 0.236 | 0.656 | 0.393 |
| bge-base-en-v1.5, published (MTEB) | 0.743 | 0.374 | 0.638 | 0.217 | 0.406 | 0.780 | 0.526 |
| Engine, dense only | 0.740 | 0.374 | 0.639 | 0.217 | 0.405 | 0.792 | 0.528 |
| Engine, hybrid with reciprocal-rank fusion | 0.736 | 0.365 | 0.560 | 0.198 | 0.370 | 0.802 | 0.505 |
| Engine, hybrid (default) | 0.761 | 0.382 | 0.640 | 0.221 | 0.417 | 0.803 | 0.537 |
| Engine, hybrid + cross-encoder reranker | 0.755 | 0.368 | 0.529 | 0.201 | 0.430 | 0.852 | 0.523 |
| Recall@100 | SciFact | NFCorpus | ArguAna | SCIDOCS | FiQA | TREC-COVID* |
|---|---|---|---|---|---|---|
| BM25 (BEIR paper) | 0.908 | 0.250 | 0.942 | 0.356 | 0.539 | 0.498 |
| bge-base-en-v1.5, published | 0.963 | 0.337 | 0.993 | 0.496 | 0.742 | n/a |
| Engine, dense only | 0.963 | 0.337 | 0.993 | 0.495 | 0.739 | 0.590 |
| Engine, hybrid (default) | 0.976 | 0.342 | 0.992 | 0.482 | 0.734 | 0.610 |
* Capped recall, as BEIR reports it for TREC-COVID, whose queries have up to ~500 relevant documents. Sources: BM25 from the BEIR paper, Tables 2 and 9; bge-base-en-v1.5 from the MTEB results repository (FiQA from the model authors' own run). Hosted APIs in the hero chart: MTEB published scores for OpenAI text-embedding-3-small and -3-large and Cohere embed-english-v3.0.
The harness reproduces the published model
Dense retrieval lands within 0.003 of bge-base's published nDCG@10 on five datasets and 0.012 above it on TREC-COVID. Chunking, the query instruction and the index lose nothing.
Hybrid wins on all six
A BM25 keyword leg with stemming, fused with dense search, beats the model alone everywhere and beats BM25 by a wide margin. No larger model, no LLM, nothing paid.
How you fuse decides whether hybrid helps
Reciprocal-rank fusion, the common default, lost to dense-only on five of six datasets. Weighted score fusion (0.75 dense, 0.25 keyword, normalized per query) wins on five and ties the sixth. The weight was chosen on BEIR's dev and train judgements and only then measured on test.
The reranker is a trade, not a free win
The cross-encoder lifts the question-answering sets (FiQA +0.013, TREC-COVID +0.048) and hurts the other four, ArguAna by 0.11. It costs about 0.3 s per query on a GPU and 15 s on CPU, so it ships off and is enabled per knowledge base.
Real documents
55 questions over the files customers actually upload
Seven files go through the same upload path a customer uses: parse, chunk, embed. Answers sit in prose, in tables, in spreadsheet cells, on slides, and on a scanned page that only OCR can read. A question counts when a chunk from the right file holds every fact of the answer, including both the row label and the value for a table.
| Answer lives in | Questions | Hit@5 |
|---|---|---|
| PDF text, two columns and a running header | 18 | 100% |
| PDF table | 3 | 100% |
| Scanned PDF, image only (OCR) | 4 | 100% |
| DOCX text and table | 8 | 100% |
| XLSX spreadsheet, two sheets | 7 | 100% |
| PPTX slides | 4 | 100% |
| HTML with navigation and footer | 6 | 100% |
| Markdown with a table and code | 5 | 100% |
| Configuration | Hit@1 | Hit@5 | MRR |
|---|---|---|---|
| Dense | 87% | 100% | 0.93 |
| Hybrid (default) | 91% | 100% | 0.95 |
| Hybrid + reranker | 94% | 100% | 0.97 |
On this question-and-answer set the reranker helps, as the BEIR results predict for Q&A content. Each answer's section heading reaches the model with the chunk, so "Which release added offline checkout?" is answerable when the version number lives only in the heading.
Answer models
Which model writes the best reply, in English, Hindi and Hinglish
Each model answers the same 94 questions from the same passages, through the engine's own answer path. We score the answer, not the style: did it state the right facts, cite its sources, build a table when asked, and decline when the passages do not say. A model that invents an answer to a question it cannot know never counts as recommended, however good it sounds. A judge model grades how natural the Hindi and Hinglish read.
Recommended setup
low)openai/gpt-oss-120bBest overall: 93% of answers passed, 100% of unanswerable questions correctly declined, ₹7.2 per 1,000 answers.
google/gemma-4-31b-it90% passed on Hindi and Hinglish, 100% declined correctly, 100% in the right register, first word in 609 ms.
google/gemma-4-26b-a4b-it93% passed on Hindi and Hinglish at ₹9.4 per 1,000 answers.
openai/gpt-6-lunaReads each message in 1.94 s at p90: 98.9% accurate, ₹13.6 per 1,000 messages.
google/gemma-4-26b-a4b-it97.7% accurate at ₹4.9 per 1,000 messages, 64% less than GPT-6 Luna.
| Model | Passed | Declines when unsure | Tables | First word p50 | ₹ per 1,000 | $ per 1,000 | Result |
|---|---|---|---|---|---|---|---|
openai/gpt-oss-120b thinking lowRecommended cheapest most accurate Self-hostable | 93% | 100% | 90% | 1.14 s | ₹7.2 | 0.086 | Meets the bar |
google/gemma-4-26b-a4b-itHindi budget Self-hostable | 88% | 100% | 80% | 1.23 s | ₹9.4 | 0.112 | Meets the bar |
google/gemma-4-31b-itRecommended for Hindi Self-hostable | 88% | 100% | 80% | 594 ms | ₹38.0 | 0.452 | Meets the bar |
google/gemini-2.5-flash | 88% | 100% | 20% | 1.25 s | ₹42.0 | 0.500 | Meets the bar |
meta-llama/llama-3.3-70b-instruct via groqfastest Self-hostable | 86% | 100% | 10% | 547 ms | ₹62.9 | 0.749 | Meets the bar |
openai/gpt-6-luna | 85% | 100% | 60% | 1.32 s | ₹13.6 | 0.161 | Meets the bar |
deepseek/deepseek-v4.1-flashSelf-hostable | 91% | 88% | 100% | 1.27 s | ₹16.2 | 0.193 | Below the bar invents answers to questions it cannot know |
mistralai/mistral-small-3.2-24b-instructSelf-hostable | 89% | 81% | 60% | 860 ms | ₹11.0 | 0.131 | Below the bar invents answers to questions it cannot know |
google/gemini-2.5-flash-lite | 89% | 81% | 70% | 1.00 s | ₹12.5 | 0.148 | Below the bar invents answers to questions it cannot know |
openai/gpt-4.1-mini | 88% | 94% | 60% | 953 ms | ₹45.5 | 0.542 | Below the bar invents answers to questions it cannot know |
qwen/qwen3.8-27b via cerebrasSelf-hostable | 88% | 88% | 70% | 672 ms | ₹119 | 1.415 | Below the bar invents answers to questions it cannot know |
qwen/qwen3-next-80b-a3b-instructSelf-hostable | 87% | 94% | 20% | 734 ms | ₹16.6 | 0.198 | Below the bar invents answers to questions it cannot know |
qwen/qwen3-30b-a3b-instruct-2507Self-hostable | 86% | 81% | 50% | 1.04 s | ₹9.1 | 0.108 | Below the bar invents answers to questions it cannot know |
openai/gpt-5.4-nano | 84% | 63% | 60% | 937 ms | ₹24.2 | 0.288 | Below the bar invents answers to questions it cannot know |
anthropic/claude-haiku-4.5best Hindi tone | 82% | 69% | 90% | 1.52 s | ₹152 | 1.815 | Below the bar invents answers to questions it cannot know |
meta-llama/llama-4-scoutSelf-hostable | 77% | 31% | 20% | 1.16 s | ₹15.1 | 0.180 | Below the bar pass rate too low, invents answers to questions it cannot know |
mistralai/mistral-small-2603Self-hostable | 76% | 100% | 70% | 719 ms | ₹13.5 | 0.160 | Below the bar pass rate too low |
qwen/qwen3.5-35b-a3bSelf-hostable | 71% | 25% | 30% | 1.23 s | ₹24.4 | 0.290 | Below the bar pass rate too low, invents answers to questions it cannot know |
qwen/qwen3.5-9bSelf-hostable | 67% | 25% | 0% | 1.09 s | ₹12.5 | 0.149 | Below the bar pass rate too low, invents answers to questions it cannot know |
By language
Passed on English, Hindi and Hinglish, then everything measured on Hindi and Hinglish together. Naturalness and register come from a judge model (openai/gpt-4.1-mini) and are graded for Hindi and Hinglish only.
| Model | English | Hindi | Hinglish | Hi + Hing: passed | Declines | Tables | First word | ₹ per 1,000 | Naturalness | Register |
|---|---|---|---|---|---|---|---|---|---|---|
openai/gpt-oss-120b | 96% | 95% | 80% | 88% | 100% | 100% | 1.23 s | ₹7.4 | 3.40 / 5 | 73% |
google/gemma-4-26b-a4b-it | 85% | 90% | 95% | 93% | 100% | 100% | 1.14 s | ₹8.9 | 3.83 / 5 | 93% |
google/gemma-4-31b-it | 87% | 85% | 95% | 90% | 100% | 100% | 609 ms | ₹39.6 | 3.77 / 5 | 100% |
google/gemini-2.5-flash | 89% | 85% | 90% | 88% | 100% | 50% | 1.25 s | ₹42.9 | 3.62 / 5 | 93% |
meta-llama/llama-3.3-70b-instruct | 89% | 90% | 75% | 83% | 100% | 25% | 578 ms | ₹65.6 | 3.65 / 5 | 98% |
openai/gpt-6-luna | 85% | 85% | 85% | 85% | 100% | 100% | 1.59 s | ₹14.2 | 3.38 / 5 | 73% |
deepseek/deepseek-v4.1-flash | 94% | 85% | 90% | 88% | 75% | 100% | 1.27 s | ₹18.2 | 4.10 / 5 | 98% |
mistralai/mistral-small-3.2-24b-instruct | 93% | 85% | 85% | 85% | 63% | 100% | 844 ms | ₹11.6 | 3.50 / 5 | 88% |
google/gemini-2.5-flash-lite | 94% | 85% | 80% | 83% | 63% | 100% | 1.01 s | ₹12.8 | 3.73 / 5 | 100% |
openai/gpt-4.1-mini | 93% | 95% | 70% | 83% | 88% | 100% | 1.00 s | ₹47.8 | 3.80 / 5 | 85% |
qwen/qwen3.8-27b | 87% | 85% | 95% | 90% | 75% | 100% | 703 ms | ₹126 | 4.03 / 5 | 95% |
qwen/qwen3-next-80b-a3b-instruct | 89% | 95% | 75% | 85% | 88% | 50% | 844 ms | ₹19.9 | 3.90 / 5 | 98% |
qwen/qwen3-30b-a3b-instruct-2507 | 91% | 80% | 80% | 80% | 63% | 75% | 984 ms | ₹10.1 | 3.62 / 5 | 85% |
openai/gpt-5.4-nano | 91% | 75% | 75% | 75% | 38% | 100% | 1.05 s | ₹26.0 | 3.38 / 5 | 80% |
anthropic/claude-haiku-4.5 | 89% | 80% | 65% | 73% | 50% | 100% | 1.53 s | ₹178 | 4.38 / 5 | 93% |
meta-llama/llama-4-scout | 76% | 75% | 80% | 78% | 38% | 50% | 1.28 s | ₹17.5 | 3.62 / 5 | 100% |
mistralai/mistral-small-2603 | 87% | 70% | 50% | 60% | 100% | 75% | 719 ms | ₹14.2 | 3.52 / 5 | 93% |
qwen/qwen3.5-35b-a3b | 74% | 70% | 65% | 68% | 25% | 50% | 1.17 s | ₹28.6 | 4.10 / 5 | 100% |
qwen/qwen3.5-9b | 76% | 55% | 55% | 55% | 0% | 0% | 1.07 s | ₹13.5 | 3.65 / 5 | 100% |
A model meets the bar when it answers every item, keeps thinking as stated, passes at least 80% of the items and declines at least 95% of the questions its passages cannot answer. Recommended is the highest pass rate among those, then the lowest cost. The Hindi pick also needs, on the Hindi and Hinglish items together, 85% passed, 95% declined correctly and the right register in 95% of the judged replies; among those the highest Hindi pass rate wins, then the fastest first word. The Hindi budget pick is the cheapest model that meets the same bars (register 90%) and matches the Hindi pick's pass rate.
Best Hindi tone: anthropic/claude-haiku-4.5 (4.4 of 5 from the judge), not recommended: it declines only 69% of the unanswerable questions overall (50% on Hindi and Hinglish) and invents an answer for the rest.
94 frozen items (54 English, 20 Hindi, 20 Hinglish; 16 cannot be answered from the passages, 10 ask for a comparison table), the same passages for every model, measured 2026-10-03. Costs are what the provider billed, in rupees at 84 to the dollar. The benchmark cost $0.88 in all (answers $0.72, the Hindi and Hinglish judge $0.16).
Fast models
Which small model understands visitors, and how fast
The assistant labels every message its rules cannot decide (a business question, buying intent, off topic, a request for a person) with a small, fast model. Each model below ran once with a frozen prompt over the same 266 held-out turns in English, Hindi and Hinglish, each asked of the business it was written for. Latency is the label call alone; cost is what the provider billed. The engine serves this table and the dashboard shows it beside the fast-model setting.
RAG_LLM_FAST_MODEL=google/gemma-4-26b-a4b-it, or pick it in the setup wizard or on a knowledge base's Model & keys tab (one click, owners only).
| Model | Overall | en / hi / hi-Latn | Business recall | Reply language | Fallbacks | Label p50 / p90 / p99 | $ per 1,000 labels | Result |
|---|---|---|---|---|---|---|---|---|
meta-llama/llama-3.1-8b-instruct via groq | 91.0% | 92.1 / 90.8 / 90.0 | 93.1% | 100.0% | 0.0% | 0.18 / 0.21 / 0.40 s | 0.039 | Below the bar: recall |
meta-llama/llama-3.3-70b-instruct via groq | 92.1% | 89.9 / 93.1 / 93.3 | 90.3% | 100.0% | 1.2% | 0.47 / 0.56 / 3.59 s | 0.725 | Below the bar: recall |
google/gemini-2.5-flash-lite (effort none) | 95.9% | 96.6 / 95.4 / 95.6 | 95.8% | 100.0% | 4.3% | 0.79 / 0.91 / 2.77 s | 0.134 | Below the bar: recall |
mistralai/mistral-small-2603 (effort none) | 95.9% | 97.8 / 94.3 / 95.6 | 95.8% | 100.0% | 0.0% | 0.85 / 1.22 / 1.93 s | 0.056 | Below the bar: recall |
openai/gpt-4.1-nano | 94.0% | 95.5 / 93.1 / 93.3 | 97.2% | 100.0% | 0.0% | 1.05 / 1.27 / 1.96 s | 0.131 | Fastest |
qwen/qwen3.8-27b via cerebras (effort none) | 97.0% | 96.6 / 97.7 / 96.7 | 97.2% | 100.0% | 0.0% | 1.27 / 1.41 / 1.57 s | 0.214 | Passes every bar |
openai/gpt-4.1-mini | 97.4% | 98.9 / 96.6 / 96.7 | 98.6% | 100.0% | 0.0% | 1.45 / 1.66 / 2.25 s | 0.524 | Passes every bar |
qwen/qwen3-next-80b-a3b-instruct | 97.0% | 97.8 / 96.6 / 96.7 | 91.7% | 100.0% | 1.9% | 0.79 / 1.66 / 2.69 s | 0.139 | Below the bar: recall |
deepseek/deepseek-v4.1-flash (effort none) | 98.5% | 98.9 / 98.9 / 97.8 | 94.4% | 100.0% | 0.0% | 1.24 / 1.67 / 2.92 s | 0.069 | Below the bar: recall |
google/gemma-4-26b-a4b-it (effort none) | 97.7% | 97.8 / 98.9 / 96.7 | 97.2% | 100.0% | 1.9% | 1.21 / 1.91 / 2.81 s | 0.058 | Cheapest |
openai/gpt-6-luna (effort none) | 98.9% | 98.9 / 100.0 / 97.8 | 98.6% | 100.0% | 0.6% | 1.55 / 1.94 / 2.80 s | 0.162 | Recommended, most accurate |
openai/gpt-oss-120b (effort low) | 95.1% | 95.5 / 95.4 / 94.4 | 97.2% | 100.0% | 4.9% | 1.44 / 2.28 / 3.46 s | 0.120 | Passes every bar |
google/gemma-4-31b-it (effort none) | 95.9% | 94.4 / 100.0 / 93.3 | 97.2% | 100.0% | 8.6% | 2.07 / 2.46 / 3.53 s | 0.101 | Below the bar: fallbacks |
qwen/qwen3-30b-a3b-instruct-2507 | 95.9% | 97.8 / 94.3 / 95.6 | 95.8% | 100.0% | 3.1% | 0.98 / 2.47 / 3.00 s | 0.090 | Below the bar: recall |
mistralai/mistral-small-3.2-24b-instruct | 96.6% | 94.4 / 97.7 / 97.8 | 95.8% | 100.0% | 5.6% | 2.00 / 3.10 / 3.71 s | 0.106 | Below the bar: recall, fallbacks |
Default fast model: openai/gpt-6-luna, the model with the highest business-question recall (98.6%) among those that pass every bar, then the highest overall accuracy (98.9%): p90 1.94 s, $0.162 per 1,000 labels. Budget option (the cheapest passing model): google/gemma-4-26b-a4b-it (64% cheaper than the default, $0.058 per 1,000, 97.7% overall, p90 1.91 s). Fastest passing: openai/gpt-4.1-nano (p90 1.27 s, 94.0% overall). Most accurate: openai/gpt-6-luna (98.9% overall, p90 1.94 s). Bars: overall 90%, each language 85%, business-question recall 97%, reply language 95%, label fallbacks at most 5%. Updated 2026-10-03; thinking control not verified for 0 of 15 rows.
Security and operations
Built to run one service for many customers
The benchmark creates two tenants with a knowledge base each, then tries every key type against the other tenant's data. Latency and throughput use FiQA's 57,638 documents with the engine's default settings.
- 412/412Cross-tenant reads, writes, deletes, searches, imports, job lookups, settings, conversations, memories, embedding migrations, golden pairs, widget keys, usage queries, past queries, feedback and Content Portal workspaces, staged content, chunks, reviews (finalize included), AI chat and rules refused, also when named from the attacker's own workspace, from tenant keys, knowledge-base keys, an owner's and a member's sign-in, and no key; plus the account attacks (a member on owner-only routes, forged, expired and unsigned tokens, refresh-token reuse, invitation abuse, a removed member, sign-up and reset enumeration, the sign-in lockout) and a suspended tenant's keys stop working
- refusedWebsite widget key used from another site, with no Origin header, or a secret key presented as a widget key
- 5 of 8Messages allowed when 8 arrive at once against a 5-per-minute widget limit
- 0Default passwords: secrets are generated on install, keys are stored hashed, model keys encrypted
| GPU | CPU only | |
|---|---|---|
| Retrieval p50, one request at a time | 45 ms | 77 ms |
| Retrieval p95 | 52 ms | 103 ms |
| With the reranker on, p50 | 323 ms | 15.6 s |
| Queries per second, 1 / 4 / 16 clients | 22 / 21 / 15 | 14 / 24 / 25 |
| Import, embeddings included | 107 docs/s | ~6 passages/s |
| Memory, whole stack | 2.1 GB default; +2.3 GB with the reranker | |
Intel i7-14700K, RTX 5060 Ti 16 GB, Docker Desktop limited to 8 CPUs and 9.4 GB. One API process; throughput scales out with RAG_API_WORKERS. On CPU the embedding model sets the import ceiling; use a hosted embedding model or a GPU for large imports.
What the benchmarks changed
Every finding became a fix, then got measured again
Running the engine against public data exposed defects no unit test had caught. Each is fixed in the engine and listed in the changelog.
| Finding | Before | After |
|---|---|---|
| Retrieval silently capped at what fit an LLM prompt | Recall@100 0.84 | 0.96 |
| Keyword search used raw term frequency, no stemming | FiQA keyword nDCG 0.07 | 0.25 |
| Reciprocal-rank fusion dragged results down | mean nDCG 0.505 | 0.537 |
| Reranker forced on for every knowledge base | slower and worse on 4 of 6 | opt-in |
| Reranker scored every candidate at full precision | ~6 s per query | 0.45 s |
| Diversity step (MMR) was cubic in candidates | 1,048 ms | 40 ms |
| API keys checked with bcrypt on the event loop | 5 queries/s | 22 queries/s |
| An unknown key was checked against every knowledge base | one request, N bcrypts | rejected by prefix |
| Every PDF failed inside the Docker image | 0 PDFs | typeset and scanned PDFs |
| Embedding migrations dropped search filters | filters broken | metadata kept |
| Deleting a large knowledge base could leave it half-deleted | rows without vectors | database first |
| Tenant keys could read other tenants' import jobs | leak | scoped |
Comparison
Against RAGFlow, Dify, AnythingLLM and R2R
From each project's own documentation, release notes and issue tracker, reviewed September 2026. RAGFlow publishes no retrieval-quality benchmark, so the retrieval numbers above have no counterpart to compare with; the rows below compare what each project documents.
| cob-rag-engine | RAGFlow 0.27 | Dify | AnythingLLM | R2R | |
|---|---|---|---|---|---|
| License | Partner terms; commercial license | Apache-2.0 | Modified Apache-2.0; multi-tenant use needs permission | MIT | MIT |
| Tenancy for a multi-customer service | Tenants → knowledge bases, isolation tested | One workspace per user | Workspaces | One organization | Users, collections |
| API key scope | Per tenant and per knowledge base | Per account, full owner power | Per knowledge base | Not reviewed | Not reviewed |
| Website embed | Script tag, public key, domain allow-list, rate limits | iframe, token in page URL | Script or iframe, public token | Script, allow-list, limits | None |
| Usage metering per customer | Built in | Cloud only | Not documented | Not documented | Not documented |
| Published retrieval benchmark | BEIR, six datasets, reproducible | None found | None found | None found | None found |
| Memory | 2.1 GB measured | 16 GB minimum stated | Not stated | Not stated | Not stated |
| Hybrid keyword + vector search | Independent legs, weighted fusion | Vector leg filtered by keyword match | Yes | Vector only | Yes |
| Document understanding | Docling, table structure, OCR | DeepDoc, template chunkers (stronger) | Not reviewed | Not reviewed | Not reviewed |
| Graph RAG, agents, connectors | Agentic mode, web scraper | GraphRAG, agent canvas, 20+ connectors | Visual workflows | Agents | Knowledge graphs |
Where RAGFlow is ahead
Document layout analysis with DeepDoc and template chunkers for papers, laws and slides; GraphRAG and RAPTOR; an agent canvas; more than twenty data connectors. If those matter most, it is an excellent choice.
Where this engine is ahead
Running a paid chatbot service for many businesses: scoped keys, metering, a hardened website widget and a small footprint. RAGFlow's share token and API key were mutually derivable before 0.22 (CVE-2025-69286), its documented minimum is 16 GB of RAM, and its vector search is filtered by the keyword match, which returns nothing for Thai queries (issue #17041).
Reproduce it
Run every number yourself
You need the stack running and Python 3.12 with httpx and pyarrow. The scripts read the admin key from your environment or the repository's .env. Long runs checkpoint: run the same command again to resume.
# GPU is optional; this overlay embeds in full precision, as published docker compose -f docker-compose.yml -f docker-compose.gpu.yml \ -f benchmarks/compose.local-embeddings.yml up -d --build # BEIR: downloads ~330 MB, imports 272k documents, evaluates python benchmarks/beir.py --datasets scifact,nfcorpus,arguana,scidocs,fiqa,trec-covid \ --configs dense,hybrid,"hybrid(rrf)",hybrid+rerank --label mine python benchmarks/fusion_study.py # Real documents, security and operations, small policy set python benchmarks/documents.py --label mine python benchmarks/ops.py --label mine python benchmarks/run.py --label mine
Retrieval benchmarks measure whether the right passage is found, not how an LLM words the answer. BEIR is English. Reference numbers for other models are their published results, not re-runs. Method and raw results: the benchmarks/ folder in the repository, available to partners.