SANDI Solr

BEIR Benchmark Results: TREC-COVID and NFCorpus

Updated system — October 2026

Abstract

SANDI Solr — a search system built on Apache Solr that combines dense vector search, text matching, NLP query analysis and an optional cross-encoder reranker — has been updated since the earlier benchmark reports. This document presents the new results of the updated system on two BEIR benchmarks, TREC-COVID and NFCorpus, run with the same models and settings: Qwen3-Embedding-4B (GGUF Q4, truncated to 1024 dimensions), top_k = 100, NLP extraction of entities and important words from the query, no synonym expansion, Low precision. Each benchmark was run without a reranker and with Qwen3-Reranker-4B (GGUF Q4) over the top 30 candidates. On TREC-COVID the system reaches NDCG@10 = 0.8805 with no reranker and NDCG@10 = 0.9073 with the reranker. On NFCorpus it reaches NDCG@10 = 0.3909 with no reranker and NDCG@10 = 0.4104 with the reranker.

1Datasets: TREC-COVID and NFCorpus

Both datasets are part of the BEIR benchmark [1], which tests zero-shot retrieval: the models are not trained on the test collections. Both are biomedical, but they differ in almost every property that matters for search evaluation.

TREC-COVID

TREC-COVID [2] is built from CORD-19 (COVID-19 Open Research Dataset), a collection of scientific articles about COVID-19 and related coronaviruses; BEIR uses the title and abstract of each article. Its 50 topics were written during the pandemic and are phrased as full questions, for example "what is the origin of COVID-19". Relevance was judged by assessors with biomedical expertise on a graded scale, over pools of documents returned by the systems that took part in the original TREC challenge.

NFCorpus

NFCorpus (NutritionFacts Corpus) [3] is built from NutritionFacts.org, a health and nutrition website, and the medical articles it cites. Queries are short and written in everyday language, while the documents are scientific abstracts in medical terminology. Relevance is graded and is derived from the links between the website pages and the cited articles.

PropertyTREC-COVIDNFCorpus
SourceCORD-19 article titles and abstractsNutritionFacts.org and cited medical articles
DomainBiomedical — epidemiology, treatment, transmissionBiomedical — nutrition, diet, disease prevention
Corpus size171,332 documents3,633 documents
Test queries50323
Query styleFull questions, about 11 words on averageShort everyday phrases, about 3 words on average
Relevant documents per queryAbout 494 on averageAbout 38 on average, varying widely by query
Relevance labelsGraded, judged by experts over pooled resultsGraded, derived from links to cited articles
Main difficultyRanking the best documents first in a large corpusVocabulary gap between everyday queries and medical text
Corpus sizes, query counts, average query lengths and average numbers of relevant documents are the BEIR statistics [1].

How the two differ for search evaluation

2System Configuration

Both benchmarks were run on the updated system with the same models and settings. Each benchmark was run twice, without and with the reranker. Both benchmarks were then repeated with Qwen3-Embedding-0.6B in place of Qwen3-Embedding-4B, not quantized (BF16) and at its native 1024 dimensions, with all other settings unchanged.

Without reranker

Query
→
NLP: Entities and Important Words
→
Vector + Text Search (top_k = 100)
→
Final Results

With reranker

Query
→
NLP: Entities and Important Words
→
Vector + Text Search (top_k = 100)
→
Top 30 Candidates
→
Qwen3-Reranker-4B
→
Final Results
ComponentSetting
IndexApache Solr 9.8.1 with SolrCloud (ZooKeeper)
Embedding modelQwen3-Embedding-4B [4], GGUF Q4 quantization, embeddings truncated to 1024 dimensions
Second embedding modelQwen3-Embedding-0.6B [4], not quantized (BF16), native 1024 dimensions
Vector searchtop_k = 100
NLP query analysisExtraction of entities and important words from the query
Synonym expansionNone
Precision settingLow
RerankerQwen3-Reranker-4B [4], GGUF Q4 quantization, top 30 candidates (when used)

NLP is used at query time to extract the entities and the important words of the query, which focus the text-matching part of the search. No synonyms are added, so the system works on the original wording of the query. In the main runs both models are 4-bit quantized, and the embeddings are cut from the native size of the model to 1024 dimensions, which keeps the index and the vector search small.

3Results

TREC-COVID with Qwen3-Embedding-4B (Q4)

Metric No reranker With reranker — top 30 Change
NDCG@50.91630.9219+0.0056
NDCG@100.88050.9073+0.0268
Precision@100.91000.9380+0.0280
MRR@101.00001.00000.0000
Recall@100.02360.0242+0.0006
Recall@1000.15390.15390.0000
MAP@100.02290.0235+0.0006

NFCorpus with Qwen3-Embedding-4B (Q4)

Metric No reranker With reranker — top 30 Change
NDCG@50.41000.4479+0.0379
NDCG@100.39090.4104+0.0195
Precision@100.29570.3068+0.0111
MRR@100.59300.6167+0.0237
Recall@100.19420.2015+0.0073
Recall@1000.34060.34060.0000
MAP@100.14630.1582+0.0119

TREC-COVID with Qwen3-Embedding-0.6B (BF16)

Metric No reranker With reranker — top 30 Change
NDCG@50.88810.9305+0.0424
NDCG@100.86380.9057+0.0419
Precision@100.90400.9420+0.0380
MRR@100.94670.9800+0.0333
Recall@100.02320.0243+0.0011
Recall@1000.17290.17290.0000
MAP@100.02220.0236+0.0014

NFCorpus with Qwen3-Embedding-0.6B (BF16)

Metric No reranker With reranker — top 30 Change
NDCG@50.40790.4338+0.0259
NDCG@100.36590.3902+0.0243
Precision@100.26560.2854+0.0198
MRR@100.58350.6018+0.0183
Recall@100.17490.1900+0.0151
Recall@1000.31070.31070.0000
MAP@100.13930.1501+0.0108
Highlighted values mark the better of the two runs in each table. Recall@100 is the same with and without the reranker because the reranker only reorders the first 30 results.

4Findings

TREC-COVID: retrieval alone is already strong

Without any reranker the system reaches NDCG@10 = 0.8805 and Precision@10 = 0.9100: on average 9.1 of the first 10 results are relevant, in a corpus of 171,332 documents. MRR@10 = 1.0000 means that for every one of the 50 queries the first result is relevant.

TREC-COVID: the reranker improves positions 6 to 10

Reranking the top 30 candidates with Qwen3-Reranker-4B raises NDCG@10 by 2.7 points to 0.9073 and Precision@10 by 2.8 points to 0.9380. NDCG@5 moves much less (+0.0056), so the first five positions were already well ordered by the first stage; most of the gain comes from the second half of the first page, where the reranker replaces weaker results with relevant ones.

MRR@10 stays at 1.0000: after reranking the first result is still relevant for every one of the 50 queries.

Recall@100 is 0.1539 in both runs. The reranker only reorders the first 30 results, so the set of the first 100 does not change.

TREC-COVID: low recall and MAP are properties of the dataset

Recall@10 = 0.0242 and MAP@10 = 0.0235 look small, but with about 500 relevant documents per query ten results cannot cover more than about 2% of them. They do not indicate a weakness of the system; NDCG@10, Precision@10 and MRR@10 are the metrics that describe quality on this dataset.

NFCorpus: lower numbers on a harder matching problem

On NFCorpus the same system reaches NDCG@10 = 0.3909 without a reranker and NDCG@10 = 0.4104 with it. With the reranker, MRR@10 = 0.6167 means that the first relevant result is typically in the first or the second position, and Precision@10 = 0.3068 is about 3 relevant results in the first 10, on a dataset where many queries have few relevant documents to find.

Recall is informative here: with the reranker, 20.2% of all relevant documents are in the first 10 results and 34.1% in the first 100. Unlike TREC-COVID, MAP@10 = 0.1582 reflects real ranking quality, because the relevant set is small enough for ten results to cover a meaningful part of it.

NFCorpus: the reranker improves the very top

On NFCorpus the reranker raises every ranking metric: NDCG@10 by 2.0 points, MRR@10 by 2.4 points (0.5930 to 0.6167), MAP@10 by 1.2 points and Recall@10 from 0.1942 to 0.2015. The largest gain is at the top of the list: NDCG@5 rises by 3.8 points, from 0.4100 to 0.4479. Recall@100 is 0.3406 in both runs, for the same reason as on TREC-COVID.

The reranker helps in different places on the two benchmarks

On TREC-COVID the first positions are already filled with relevant documents by the first stage, and the reranker mostly improves positions 6 to 10 (NDCG@5 +0.6 points, NDCG@10 +2.7 points). On NFCorpus the first stage leaves more room at the top, and the reranker mostly improves the first five positions (NDCG@5 +3.8 points, NDCG@10 +2.0 points). In both cases the gain comes from reordering the same 30 candidates.

Scores on the two datasets are not comparable

NDCG@10 of 0.9073 on TREC-COVID and 0.4104 on NFCorpus come from the same models and the same settings. The difference is the test, not the system: TREC-COVID rewards putting some of many relevant documents first, with queries that share the vocabulary of the documents; NFCorpus asks to find a few relevant documents from short everyday queries that often share few words with them. Each score should be read against other systems on the same dataset (Section 5).

No synonym expansion was needed

Both benchmarks were run with no synonyms. The vocabulary bridging on NFCorpus and the results on TREC-COVID come from the embedding model, the NLP extraction of entities and important words, and the reranker.

Qwen3-Embedding-4B (Q4) compared with Qwen3-Embedding-0.6B (BF16)

NDCG@10 4B Q4 0.6B BF16 Difference
TREC-COVID, no reranker0.88050.8638−0.0167
TREC-COVID, with reranker0.90730.9057−0.0016
NFCorpus, no reranker0.39090.3659−0.0250
NFCorpus, with reranker0.41040.3902−0.0202

In all four runs the 4-bit quantized model Qwen3-Embedding-4B scores higher in NDCG@10 than Qwen3-Embedding-0.6B in full precision. The larger model keeps more retrieval quality after quantization than the smaller model has without it. The 4B Q4 file is 2.5 GB, about twice the 1.2 GB of the 0.6B BF16 weights. On TREC-COVID with the reranker the difference is 0.2 points, within the noise of 50 queries (Section 1).

The reranker narrows the difference. With the 0.6B model it raises NDCG@10 by 4.2 points on TREC-COVID (0.8638 to 0.9057) and by 2.4 points on NFCorpus (0.3659 to 0.3902), against 2.7 and 2.0 points with the 4B model. On TREC-COVID the difference falls from 1.7 to 0.2 points, and Precision@10 is 0.9420 with the 0.6B model against 0.9380 with the 4B model.

Recall@100 shows what the reranker cannot change: it reorders the first 30 results and does not add documents the first stage missed. On TREC-COVID Recall@100 is 0.1729 with the 0.6B model and 0.1539 with the 4B model: the 0.6B model finds about 12% more of the relevant documents in the first 100 but orders them less well, and the reranker largely corrects the order. On NFCorpus it is 0.3107 against 0.3406: the 4B model finds about 10% more of the relevant documents in the first 100, and the difference remains after reranking.

Quantized models

Qwen3-Embedding-4B and the reranker are both 4-bit GGUF quantizations, and the Qwen3-Embedding-4B embeddings are truncated to 1024 dimensions. The Qwen3-Embedding-4B results are obtained with these reduced models, not with the full-precision ones (Section 6).

5Published Reference Points

The tables place the new results next to NDCG@10 figures published for other systems on the same datasets.

TREC-COVID

SystemNDCG@10Setup and source
BGE-M3 (dense)0.5472Retrieval only, MTEB results [15]
BM250.6559Retrieval only, BEIR paper [1]
gte-large0.7022Retrieval only, MTEB results [15]
SPLADE-v20.7057Retrieval only [5]
BGE-large-en-v1.50.7470Retrieval only [7], MTEB results [15]
jina-embeddings-v5-text-nano0.7760Retrieval only, MTEB results [15]
jina-embeddings-v30.7781Retrieval only [13]
jina-embeddings-v5-text-small0.7849Retrieval only, MTEB results [15]
ColBERT v20.7854Retrieval only [6]
KaLM-Embedding-V2 (mini-instruct-v2)0.7927Retrieval only, MTEB results [15]
monoT5-3B0.8071Reranks BM25 top 100 [16]
Cohere Rerank-v20.8181Reranks BM25 top 100 [16]
Hybrid RRF of SPLADE and BGE-base0.8282Rank fusion, no reranker [10]
KaLM-Embedding-V2.5 (mini-instruct-v2.5)0.8298Retrieval only, MTEB results [15]
ListT5-3B0.8470Reranks BM25 top 100 [16]
ResRank (sliding window)0.8500Reranks BM25 top 100 [11]
mxbai-rerank-large0.8533Reranks BM25 top 100 [16]
RankQwen3-8B0.8537Reranks BM25 top 100 [12]
gte-Qwen2-1.5B-instruct0.8538Retrieval only, MTEB results [15]
SANDI Solr — no reranker0.8638Retrieval only, Qwen3-Embedding-0.6B BF16, 1024 dimensions
jina-reranker-v30.8659Reranks jina-embeddings-v3 top 100 [13]
Qwen3-Reranker-4B0.8708Reranks jina-embeddings-v3 top 100 [13]
SANDI Solr — no reranker0.8805Retrieval only, Qwen3-Embedding-4B Q4, 1024 dimensions
Qwen3-Embedding-0.6B0.8864Retrieval only [14]
Qwen3-Reranker-4B0.8875Reranks Qwen3-Embedding-0.6B top 100 [14]
DeBERTa-v3 cross-encoder0.8920Reranks SPLADE-v3 top 200, full documents [9]
Qwen3-Reranker-8B0.8966Reranks Qwen3-Embedding-0.6B top 100 [14]
Querit-Reranker-4B0.8982Reranks Qwen3-Embedding-0.6B top 100 [14]
SANDI Solr — with Qwen3-Reranker-4B Q40.9057Reranks Qwen3-Embedding-0.6B BF16, 1024 dimensions, top 30 candidates
SANDI Solr — with Qwen3-Reranker-4B Q40.9073Reranks Qwen3-Embedding-4B Q4, 1024 dimensions, top 30 candidates

NFCorpus

SystemNDCG@10Setup and source
BGE-M3 (dense)0.3141Retrieval only, MTEB results [15]
BM250.3255Retrieval only, BEIR paper [1]
SPLADE-v20.3382Retrieval only [5]
ColBERT v20.3480Retrieval only [6]
KaLM-Embedding-V2 (mini-instruct-v2)0.3517Retrieval only, MTEB results [15]
Qwen3-Embedding-0.6B0.3634Retrieval only [14]
Cohere Rerank-v20.3636Reranks BM25 top 100 [16]
SANDI Solr — no reranker0.3659Retrieval only, Qwen3-Embedding-0.6B BF16, 1024 dimensions
jina-embeddings-v30.3665Retrieval only [13]
mxbai-rerank-large0.3708Reranks BM25 top 100 [16]
KaLM-Embedding-V2.5 (mini-instruct-v2.5)0.3711Retrieval only, MTEB results [15]
ListT5-3B0.3770Reranks BM25 top 100 [16]
BGE-large-en-v1.50.3806Retrieval only [7], MTEB results [15]
gte-large0.3817Retrieval only, MTEB results [15]
jina-embeddings-v5-text-nano0.3869Retrieval only, MTEB results [15]
jina-reranker-v30.3892Reranks jina-embeddings-v3 top 100 [13]
monoT5-3B0.3897Reranks BM25 top 100 [16]
SANDI Solr — with Qwen3-Reranker-4B Q40.3902Reranks Qwen3-Embedding-0.6B BF16, 1024 dimensions, top 30 candidates
SANDI Solr — no reranker0.3909Retrieval only, Qwen3-Embedding-4B Q4, 1024 dimensions
gte-Qwen2-1.5B-instruct0.3934Retrieval only, MTEB results [15]
jina-embeddings-v5-text-small0.3981Retrieval only, MTEB results [15]
ResRank (sliding window)0.3994Reranks BM25 top 100 [11]
RankQwen3-8B0.4005Reranks BM25 top 100 [12]
SANDI Solr — with Qwen3-Reranker-4B Q40.4104Reranks Qwen3-Embedding-4B Q4, 1024 dimensions, top 30 candidates
Qwen3-Reranker-4B0.4135Reranks Qwen3-Embedding-0.6B top 100 [14]
Qwen3-Reranker-4B0.4156Reranks jina-embeddings-v3 top 100 [13]
Qwen3-Reranker-8B0.4279Reranks Qwen3-Embedding-0.6B top 100 [14]
Querit-Reranker-4B0.4335Reranks Qwen3-Embedding-0.6B top 100 [14]
Reference figures are taken from the cited papers and from the MTEB results repository. The systems selected for comparison use models of up to 8B parameters and embeddings of at most 2048 dimensions, twice the 4B parameters and 1024 dimensions used by SANDI Solr. MTEB scores are submitted by the model authors, and not every listed model is zero-shot on these datasets. The lists are not exhaustive.

6Notes on the Comparison

Most of the published results use uncompressed models at full precision, at a higher cost in GPU memory and compute and with slower indexing and search.

SANDI Solr is a compromise that trades some of this precision for search speed. Embeddings are stored as BYTE vectors (1 KB per 1024-dimension vector, about 1 GB per million chunks), which reduces index size and speeds up vector scoring. GGUF compressed models allow the whole system, including the Qwen3.8-27B LLM (used for query analysis and answers, not in these benchmark runs), to run on a single NVIDIA RTX 3090.

Reranking 100 candidates, as in most of the published reranker results, is costly: a cross-encoder runs the model once per query-candidate pair, and the cost grows linearly with the number of candidates. On an NVIDIA A100 with 100 TREC-COVID candidates, Qwen3-Reranker-4B takes 1.39 s per query, Qwen3-Reranker-8B 2.32 s and the listwise RankQwen3-8B 16.93 s [12]. GPT-4 reranking of 50 documents can take up to a minute [9] at about $0.60 per query [8].

SANDI Solr reranks the top 30 candidates truncated to 1000 characters, a fraction of the cost of reranking 100 full documents.

7Evaluation Method

Each corpus was indexed with document titles and texts, and every test query was sent to the SANDI Solr search API. Results were scored against the standard BEIR test relevance judgments with the ranx library, using graded relevance for NDCG.

Code to reproduce test results

Install libraries: pip install ranx requests
Run Python code for TREC-COVID: https://softcorporation.com/products/sandi/evaluate-beir-trec-covid.txt
Run Python code for NFCorpus: https://softcorporation.com/products/sandi/evaluate-beir-nfcorpus.txt

8Conclusion

The updated SANDI Solr system was tested on two BEIR benchmarks with one set of settings: top_k = 100, NLP extraction of entities and important words from the query, no synonyms, Low precision. With Qwen3-Embedding-4B (GGUF Q4, 1024 dimensions), on TREC-COVID it reaches NDCG@10 = 0.8805 and MRR@10 = 1.0000 with no reranker, and NDCG@10 = 0.9073 and Precision@10 = 0.9380 with Qwen3-Reranker-4B quantized Q4 over the top 30 candidates. On NFCorpus it reaches NDCG@10 = 0.3909 with no reranker, and NDCG@10 = 0.4104, MRR@10 = 0.6167 and Recall@100 = 0.3406 with the reranker.

With Qwen3-Embedding-0.6B not quantized (BF16), the system reaches NDCG@10 = 0.8638 with no reranker and 0.9057 with the reranker on TREC-COVID, and 0.3659 and 0.3902 on NFCorpus. The quantized 4B model scores higher in NDCG@10 in all four runs.

The two benchmarks test different abilities. TREC-COVID, with a large corpus, 50 long queries and hundreds of relevant documents per query, measures how well the best documents are ranked first; its recall and MAP figures are low by construction. NFCorpus, with a small corpus, 323 short queries and few relevant documents per query, measures how well the system bridges the gap between everyday wording and medical text; its recall and MAP figures are meaningful, and its ceiling for top-10 metrics is lower. Reading each result within its own dataset, the SANDI Solr is strong on both.

Apache Solr 9.8.1 Qwen3-Embedding-4B Qwen3-Reranker-4B GGUF Q4 NLP Query Processing BEIR Benchmark TREC-COVID NDCG@10: 0.9073 NFCorpus NDCG@10: 0.4104

9References

  1. Thakur N., et al. (2021) BEIR: A Heterogeneous Benchmark for Zero-shot Evaluation of Information Retrieval Models. NeurIPS 2021 Datasets and Benchmarks Track. arXiv:2104.08663. https://arxiv.org/abs/2104.08663
  2. Voorhees E., et al. (2020) TREC-COVID: Constructing a Pandemic Information Retrieval Test Collection. SIGIR Forum. arXiv:2005.04474. https://arxiv.org/abs/2005.04474
  3. Boteva V., et al. (2016) A Full-Text Learning to Rank Dataset for Medical Information Retrieval. ECIR. https://www.cl.uni-heidelberg.de/statnlpgroup/nfcorpus/
  4. Zhang Y., et al. (2025) Qwen3 Embedding: Advancing Text Embedding and Reranking Through Foundation Models. Tongyi Lab, Alibaba Group. arXiv:2506.05176. https://arxiv.org/abs/2506.05176
  5. Formal T., et al. (2021) SPLADE: Sparse Lexical and Expansion Model for First Stage Ranking. SIGIR. arXiv:2107.05720. https://arxiv.org/abs/2107.05720
  6. Santhanam K., et al. (2022) ColBERTv2: Effective and Efficient Retrieval via Lightweight Late Interaction. NAACL. arXiv:2112.01488. https://arxiv.org/abs/2112.01488
  7. Xiao S., et al. (2023) C-Pack: Packaged Resources To Advance General Chinese Embedding. SIGIR. arXiv:2309.07597. https://arxiv.org/abs/2309.07597
  8. Sun W., et al. (2023) Is ChatGPT Good at Search? Investigating Large Language Models as Re-Ranking Agents. EMNLP. arXiv:2304.09542. https://arxiv.org/abs/2304.09542
  9. Déjean H., Clinchant S., Formal T. (2024) A Thorough Comparison of Cross-Encoders and LLMs for Reranking SPLADE. Naver Labs Europe. arXiv:2403.10407. https://arxiv.org/abs/2403.10407
  10. Prajapati H. K., Atilla D. G., Sac B. (2026) Hybrid Retrieval for COVID-19 Literature: Comparing Rank Fusion and Projection Fusion with Diversity Reranking. arXiv:2604.13728. https://arxiv.org/abs/2604.13728
  11. Ke X., Zhang S., et al. (2026) ResRank: Unifying Retrieval and Listwise Reranking via End-to-End Joint Training with Residual Passage Compression. Alibaba. arXiv:2604.22180. https://arxiv.org/abs/2604.22180
  12. Liu Q., Zhang Y., Li M., Long D., Xie P., Mao J. (2025) E2Rank: Your Text Embedding can Also be an Effective and Efficient Listwise Reranker. arXiv:2510.22733. https://arxiv.org/abs/2510.22733
  13. Wang F., Li Y., Xiao H. (2025) jina-reranker-v3: Last but Not Late Interaction for Listwise Document Reranking. Jina AI. arXiv:2509.25085. https://arxiv.org/abs/2509.25085
  14. Zhong Y., Yang J., et al. (2026) Querit-Reranker: Training Compact Multilingual Rerankers via Efficient Label-Free Distribution Adaptation. arXiv:2606.19037. https://arxiv.org/abs/2606.19037
  15. MTEB official results repository, TRECCOVID and NFCorpus task results (accessed 14 October 2026). https://github.com/embeddings-benchmark/results
  16. Abdallah A., Piryani B., Mozafari J., Ali M., Jatowt A. (2025) How Good are LLM-based Rerankers? An Empirical Analysis of State-of-the-Art Reranking Models. Findings of EMNLP 2025. arXiv:2508.16757. https://arxiv.org/abs/2508.16757