instructkr/reranker-simple-benchmark

Make running benchmark simple yet maintainable, again. Now only supports Korean-based cross-encoder.

Python

37

115 commits

updated Oct 12, 2026

See the code

README

Reranker Simple Benchmark

Purpose

  • 본 프로젝트는 Reranker Benchmark Evaluation을 최소한의 의존성으로 경량화하여, 누구나 쉽게 실행하고 즉각적인 결과를 얻을 수 있도록 설계되었습니다.

Plan

  • 본 프로젝트에서는 BM25 기반의 Stage 1 Retrieval을 통해 각 벤치마크 query 당 retrieval corpus를 1000개로 제한합니다. 각 query에 대한 정답 문서 정보를 포함하여, BM25 기준 상위 1000개 문서의 ID를 저장합니다.
  • 이후 각 query 당 Top-k 50개의 corpus id를 활용하여, Stage 2 Reranking을 진행합니다.

Stage 1 Retrieval

BM25 기반 Stage 1 검색(토크나이저별 비교, 실행 코드, 결과)은 eval/results/stage1/README.md에 정리되어 있습니다. Stage 2 는 여기서 가장 높은 성능을 보인 Mecab tokenizer 의 BM25 결과를 1차 후보로 사용합니다.

Stage 2 Reranking

Benchmark Datasets

공식 MTEB(kor, v2) 의 9개 Korean Retrieval 벤치마크 (총 12,054 queries)에 대한 평가를 진행하였습니다. 각 task 는 MTEB 표준 eval_splits 를 그대로 사용합니다 (예: MLDR = dev+test 평균, MIRACL/Ko-StrategyQA = dev, 그 외 = test).

데이터셋설명splitqueries
Ko-StrategyQA한국어 ODQA multi-hop 검색 (StrategyQA 번역)dev592
AutoRAGRetrieval금융·공공·의료·법률·커머스 5개 분야 문서 검색test114
MIRACLRetrievalWikipedia 기반 한국어 문서 검색dev213
PublicHealthQA의료·공중보건 도메인 문서 검색test77
BelebeleRetrievalFLORES-200 기반 한국어 문서 검색 (kor_Hang-kor_Hang subset)test900
MrTidyRetrievalWikipedia 기반 한국어 문서 검색test421
SQuADKorV1Retrieval한국어 SQuAD v1.0 기반 검색test5,774
LawIRKo한국어 법률 정보 검색test3,563
MultiLongDocRetrieval다양한 도메인 한국어 장문 검색dev+test400

Note: 기존 XPQARetrieval·WebFAQRetrieval 은 공식 MTEB(kor, v2) subset 이 아니므로 제외합니다.

Evaluation Method

  • Gold-injected reranking: 각 query 의 정답(gold) 문서를 재랭킹 후보 집합에 항상 포함시킨 뒤 (후보 = 정답 + BM25 상위 50개 중 정답을 뺀 나머지가 negative) reranker 로 재랭킹합니다.
  • Max sequence length: 모든 모델을 max_length=8192 로 측정합니다. 단, 아키텍처상 8192 를 지원하지 않는 모델은 해당 모델의 최대 길이로 측정합니다.
  • Pairs Per Second (PPS): Ettin-Reranker 블로그를 참고하여, batch size 를 8 부터 2배씩 첫 OOM 까지 늘리며, 각 batch size 에서 샘플을 그 배수로 반복·길이 내림차순 정렬한 뒤 warmup 1회 + 3회 반복합니다. 모델 forward 호출만 CUDA event 로 재므로 토크나이즈·데이터 로딩은 제외되며, PPS = 처리 쌍 수 / forward 시간 합, 가장 빠른 batch size 의 값을 기록합니다.

Evaluation Code

# NDCG + 추론 처리량(PPS)을 한 번에 — 한 번 로드한 모델을 bf16 + flash_attention_2 로 전환해 둘 다 측정.
uv run python eval/evaluate_reranker.py \
	--model_names BAAI/bge-reranker-v2-m3 \
	--gpu_id 0 \
	--batch_size 8 \
	--speed

# 또는 특정 데이터셋만 선택
uv run python eval/evaluate_reranker.py \
	--model_names "my_reranker_model" \
	--tasks Ko-StrategyQA AutoRAGRetrieval SQuADKorV1Retrieval LawIRKo \
	--gpu_id 0 \
	--batch_size 8 \
	--speed

Leaderboard

cd eval
uv run streamlit run leaderboard_reranker.py

추론 처리량 vs. 성능

Reranker throughput (mean PPS) vs. NDCG@10 (official kMTEB 9 subsets)

Results (9 task averaged)

Mean PPS = 추론 처리량(query–document pairs/s), 9 subset 평균. RTX A6000 1장, bf16 + flash_attention_2 (KaLM-Reranker-V1-Large-R2 는 T5Gemma2 아키텍처로, flash_attention_2 를 지원하지 않아 sdpa를 사용).

jinaai/jina-reranker-v3 와 jinaai/jina-reranker-v3.5 는 listwise reranker 로, 장문(MultiLongDocRetrieval)에서 다른 모델과 동일 조건(8192)으로 공정 비교가 불가능하여 두 모델 모두 MLDR 을 N/A 로 두고 위 9-subset 평가에서 제외합니다.

Per-dataset NDCG@10

ModelParamsKo-StrategyQAAutoRAGRetrievalPublicHealthQABelebeleRetrievalMIRACLRetrievalMrTidyRetrievalMultiLongDocRetrievalSQuADKorV1RetrievalLawIRKo
Qwen/Qwen3-Reranker-8B8.2B0.87200.96530.86540.97850.85130.84160.82550.98970.9013
Qwen/Qwen3-Reranker-4B4.0B0.87330.96300.84420.97940.85590.82980.81610.98610.8766
KaLM-Embedding/KaLM-Reranker-V1-Large-R27.5B0.87960.94150.86330.98090.83820.85000.79700.98630.8824
nlpai-lab/KURE-Reranker-base1.7B0.85480.97620.83810.97670.83710.79700.81630.98910.8343
nlpai-lab/KURE-Reranker-nano149M0.85820.97410.80780.97680.84000.80110.79660.98950.8368
jinaai/jina-reranker-v3.5597M0.85390.98380.83370.96590.85650.8194—0.98870.8545
jinaai/jina-reranker-v3597M0.85530.97730.77620.96060.84490.8104—0.98590.8546
zeroentropy/zerank-2-reranker4.0B0.87120.94360.83770.97310.80030.80270.71200.97910.8669
mixedbread-ai/mxbai-rerank-large-v21.5B0.85630.95310.84070.96590.79390.87710.67870.96810.8130
lightonai/LightOn-rerank-PW-4B4.5B0.85670.93210.83120.97350.80720.80910.76090.98030.7938
Qwen/Qwen3-Reranker-0.6B596M0.83360.93210.80920.97210.84700.73250.78190.98040.7865
BAAI/bge-reranker-v2-m3568M0.84870.96630.79820.97250.81290.82220.66900.98530.7906
nvidia/llama-nemotron-rerank-1b-v21.2B0.85360.94800.81300.97550.81820.80260.67190.98580.7527
nlpai-lab/LAMAR-600m568M0.84610.95910.80440.97400.82140.79750.56790.98500.7822
dragonkue/bge-reranker-v2-m3-ko568M0.82320.96840.81550.97440.75730.67760.70610.98460.6721
BAAI/bge-reranker-v2-gemma2.5B0.86140.94070.80690.96960.83620.84290.28810.98580.7572
upskyy/ko-reranker-8k568M0.81430.92300.77920.96090.72490.69980.59750.97180.7770
Dongjin-kr/ko-reranker560M0.84680.90140.69760.96550.80170.77720.37210.97850.7343
telepix/PIXIE-Spell-Reranker-Preview-0.6B596M0.83290.97940.82110.96890.84490.76500.18290.98500.6042

Per-dataset PPS

ModelParamsKo-StrategyQAAutoRAGRetrievalPublicHealthQABelebeleRetrievalMIRACLRetrievalMrTidyRetrievalMultiLongDocRetrievalSQuADKorV1RetrievalLawIRKo
Qwen/Qwen3-Reranker-8B8.2B16.57.415.320.525.026.60.710.812.4
Qwen/Qwen3-Reranker-4B4.0B26.211.825.634.540.142.81.117.119.9
KaLM-Embedding/KaLM-Reranker-V1-Large-R27.5B28.612.425.436.939.643.80.818.721.4
nlpai-lab/KURE-Reranker-base1.7B59.227.358.077.089.197.12.639.145.7
nlpai-lab/KURE-Reranker-nano149M475.4233.2529.0750.0765.8855.216.5330.8386.0
jinaai/jina-reranker-v3.5597M141.038.6123.2197.5277.3295.7—68.486.7
jinaai/jina-reranker-v3597M113.825.095.7166.3244.6261.6—48.764.0
zeroentropy/zerank-2-reranker4.0B31.012.729.541.451.056.41.118.822.3
mixedbread-ai/mxbai-rerank-large-v21.5B70.032.968.089.8104.2113.63.247.054.7
lightonai/LightOn-rerank-PW-4B4.5B16.27.317.022.223.426.10.710.712.4
Qwen/Qwen3-Reranker-0.6B596M105.949.4109.5145.8162.6177.44.370.883.6
BAAI/bge-reranker-v2-m3568M420.7195.6440.9651.8653.2724.89.3271.6345.5
nvidia/llama-nemotron-rerank-1b-v21.2B133.754.4131.6186.3220.0243.13.984.995.9
nlpai-lab/LAMAR-600m568M418.0196.5442.5651.1656.7742.59.2275.0343.8
dragonkue/bge-reranker-v2-m3-ko568M416.9195.1434.4641.3653.4716.79.2271.9342.7
BAAI/bge-reranker-v2-gemma2.5B64.726.160.583.899.8106.82.540.044.7
upskyy/ko-reranker-8k568M411.8195.6436.2641.7649.3726.09.2275.1342.8
Dongjin-kr/ko-reranker560M520.8258.0468.3644.1747.6765.2272.7334.4381.2
telepix/PIXIE-Spell-Reranker-Preview-0.6B596M104.649.4106.3141.5160.5175.64.372.182.6

Citation

본 벤치마크를 연구에 활용하셨다면 아래와 같이 인용해 주세요.

@misc{reranker-simple-benchmark,
  title        = {Reranker Simple Benchmark},
  author       = {Sigrid Jin, Youngjoon Jang, Yongbin Choi, Daegon Yu, Kanghyeun Lee, Juna Jung, Junu Moon},
  year         = {2025},
  publisher    = {GitHub},
  journal      = {GitHub repository},
  howpublished = {\url{https://github.com/instructkr/reranker-simple-benchmark}}
}

instructkr/reranker-simple-benchmark

Make running benchmark simple yet maintainable, again. Now only supports Korean-based cross-encoder.

Python

37

115 commits

updated Oct 12, 2026

See the code

README

Reranker Simple Benchmark

Purpose

  • 본 프로젝트는 Reranker Benchmark Evaluation을 최소한의 의존성으로 경량화하여, 누구나 쉽게 실행하고 즉각적인 결과를 얻을 수 있도록 설계되었습니다.

Plan

  • 본 프로젝트에서는 BM25 기반의 Stage 1 Retrieval을 통해 각 벤치마크 query 당 retrieval corpus를 1000개로 제한합니다. 각 query에 대한 정답 문서 정보를 포함하여, BM25 기준 상위 1000개 문서의 ID를 저장합니다.
  • 이후 각 query 당 Top-k 50개의 corpus id를 활용하여, Stage 2 Reranking을 진행합니다.

Stage 1 Retrieval

BM25 기반 Stage 1 검색(토크나이저별 비교, 실행 코드, 결과)은 eval/results/stage1/README.md에 정리되어 있습니다. Stage 2 는 여기서 가장 높은 성능을 보인 Mecab tokenizer 의 BM25 결과를 1차 후보로 사용합니다.

Stage 2 Reranking

Benchmark Datasets

공식 MTEB(kor, v2) 의 9개 Korean Retrieval 벤치마크 (총 12,054 queries)에 대한 평가를 진행하였습니다. 각 task 는 MTEB 표준 eval_splits 를 그대로 사용합니다 (예: MLDR = dev+test 평균, MIRACL/Ko-StrategyQA = dev, 그 외 = test).

데이터셋설명splitqueries
Ko-StrategyQA한국어 ODQA multi-hop 검색 (StrategyQA 번역)dev592
AutoRAGRetrieval금융·공공·의료·법률·커머스 5개 분야 문서 검색test114
MIRACLRetrievalWikipedia 기반 한국어 문서 검색dev213
PublicHealthQA의료·공중보건 도메인 문서 검색test77
BelebeleRetrievalFLORES-200 기반 한국어 문서 검색 (kor_Hang-kor_Hang subset)test900
MrTidyRetrievalWikipedia 기반 한국어 문서 검색test421
SQuADKorV1Retrieval한국어 SQuAD v1.0 기반 검색test5,774
LawIRKo한국어 법률 정보 검색test3,563
MultiLongDocRetrieval다양한 도메인 한국어 장문 검색dev+test400

Note: 기존 XPQARetrieval·WebFAQRetrieval 은 공식 MTEB(kor, v2) subset 이 아니므로 제외합니다.

Evaluation Method

  • Gold-injected reranking: 각 query 의 정답(gold) 문서를 재랭킹 후보 집합에 항상 포함시킨 뒤 (후보 = 정답 + BM25 상위 50개 중 정답을 뺀 나머지가 negative) reranker 로 재랭킹합니다.
  • Max sequence length: 모든 모델을 max_length=8192 로 측정합니다. 단, 아키텍처상 8192 를 지원하지 않는 모델은 해당 모델의 최대 길이로 측정합니다.
  • Pairs Per Second (PPS): Ettin-Reranker 블로그를 참고하여, batch size 를 8 부터 2배씩 첫 OOM 까지 늘리며, 각 batch size 에서 샘플을 그 배수로 반복·길이 내림차순 정렬한 뒤 warmup 1회 + 3회 반복합니다. 모델 forward 호출만 CUDA event 로 재므로 토크나이즈·데이터 로딩은 제외되며, PPS = 처리 쌍 수 / forward 시간 합, 가장 빠른 batch size 의 값을 기록합니다.

Evaluation Code

# NDCG + 추론 처리량(PPS)을 한 번에 — 한 번 로드한 모델을 bf16 + flash_attention_2 로 전환해 둘 다 측정.
uv run python eval/evaluate_reranker.py \
	--model_names BAAI/bge-reranker-v2-m3 \
	--gpu_id 0 \
	--batch_size 8 \
	--speed

# 또는 특정 데이터셋만 선택
uv run python eval/evaluate_reranker.py \
	--model_names "my_reranker_model" \
	--tasks Ko-StrategyQA AutoRAGRetrieval SQuADKorV1Retrieval LawIRKo \
	--gpu_id 0 \
	--batch_size 8 \
	--speed

Leaderboard

cd eval
uv run streamlit run leaderboard_reranker.py

추론 처리량 vs. 성능

Reranker throughput (mean PPS) vs. NDCG@10 (official kMTEB 9 subsets)

Results (9 task averaged)

Mean PPS = 추론 처리량(query–document pairs/s), 9 subset 평균. RTX A6000 1장, bf16 + flash_attention_2 (KaLM-Reranker-V1-Large-R2 는 T5Gemma2 아키텍처로, flash_attention_2 를 지원하지 않아 sdpa를 사용).

jinaai/jina-reranker-v3 와 jinaai/jina-reranker-v3.5 는 listwise reranker 로, 장문(MultiLongDocRetrieval)에서 다른 모델과 동일 조건(8192)으로 공정 비교가 불가능하여 두 모델 모두 MLDR 을 N/A 로 두고 위 9-subset 평가에서 제외합니다.

Per-dataset NDCG@10

ModelParamsKo-StrategyQAAutoRAGRetrievalPublicHealthQABelebeleRetrievalMIRACLRetrievalMrTidyRetrievalMultiLongDocRetrievalSQuADKorV1RetrievalLawIRKo
Qwen/Qwen3-Reranker-8B8.2B0.87200.96530.86540.97850.85130.84160.82550.98970.9013
Qwen/Qwen3-Reranker-4B4.0B0.87330.96300.84420.97940.85590.82980.81610.98610.8766
KaLM-Embedding/KaLM-Reranker-V1-Large-R27.5B0.87960.94150.86330.98090.83820.85000.79700.98630.8824
nlpai-lab/KURE-Reranker-base1.7B0.85480.97620.83810.97670.83710.79700.81630.98910.8343
nlpai-lab/KURE-Reranker-nano149M0.85820.97410.80780.97680.84000.80110.79660.98950.8368
jinaai/jina-reranker-v3.5597M0.85390.98380.83370.96590.85650.8194—0.98870.8545
jinaai/jina-reranker-v3597M0.85530.97730.77620.96060.84490.8104—0.98590.8546
zeroentropy/zerank-2-reranker4.0B0.87120.94360.83770.97310.80030.80270.71200.97910.8669
mixedbread-ai/mxbai-rerank-large-v21.5B0.85630.95310.84070.96590.79390.87710.67870.96810.8130
lightonai/LightOn-rerank-PW-4B4.5B0.85670.93210.83120.97350.80720.80910.76090.98030.7938
Qwen/Qwen3-Reranker-0.6B596M0.83360.93210.80920.97210.84700.73250.78190.98040.7865
BAAI/bge-reranker-v2-m3568M0.84870.96630.79820.97250.81290.82220.66900.98530.7906
nvidia/llama-nemotron-rerank-1b-v21.2B0.85360.94800.81300.97550.81820.80260.67190.98580.7527
nlpai-lab/LAMAR-600m568M0.84610.95910.80440.97400.82140.79750.56790.98500.7822
dragonkue/bge-reranker-v2-m3-ko568M0.82320.96840.81550.97440.75730.67760.70610.98460.6721
BAAI/bge-reranker-v2-gemma2.5B0.86140.94070.80690.96960.83620.84290.28810.98580.7572
upskyy/ko-reranker-8k568M0.81430.92300.77920.96090.72490.69980.59750.97180.7770
Dongjin-kr/ko-reranker560M0.84680.90140.69760.96550.80170.77720.37210.97850.7343
telepix/PIXIE-Spell-Reranker-Preview-0.6B596M0.83290.97940.82110.96890.84490.76500.18290.98500.6042

Per-dataset PPS

ModelParamsKo-StrategyQAAutoRAGRetrievalPublicHealthQABelebeleRetrievalMIRACLRetrievalMrTidyRetrievalMultiLongDocRetrievalSQuADKorV1RetrievalLawIRKo
Qwen/Qwen3-Reranker-8B8.2B16.57.415.320.525.026.60.710.812.4
Qwen/Qwen3-Reranker-4B4.0B26.211.825.634.540.142.81.117.119.9
KaLM-Embedding/KaLM-Reranker-V1-Large-R27.5B28.612.425.436.939.643.80.818.721.4
nlpai-lab/KURE-Reranker-base1.7B59.227.358.077.089.197.12.639.145.7
nlpai-lab/KURE-Reranker-nano149M475.4233.2529.0750.0765.8855.216.5330.8386.0
jinaai/jina-reranker-v3.5597M141.038.6123.2197.5277.3295.7—68.486.7
jinaai/jina-reranker-v3597M113.825.095.7166.3244.6261.6—48.764.0
zeroentropy/zerank-2-reranker4.0B31.012.729.541.451.056.41.118.822.3
mixedbread-ai/mxbai-rerank-large-v21.5B70.032.968.089.8104.2113.63.247.054.7
lightonai/LightOn-rerank-PW-4B4.5B16.27.317.022.223.426.10.710.712.4
Qwen/Qwen3-Reranker-0.6B596M105.949.4109.5145.8162.6177.44.370.883.6
BAAI/bge-reranker-v2-m3568M420.7195.6440.9651.8653.2724.89.3271.6345.5
nvidia/llama-nemotron-rerank-1b-v21.2B133.754.4131.6186.3220.0243.13.984.995.9
nlpai-lab/LAMAR-600m568M418.0196.5442.5651.1656.7742.59.2275.0343.8
dragonkue/bge-reranker-v2-m3-ko568M416.9195.1434.4641.3653.4716.79.2271.9342.7
BAAI/bge-reranker-v2-gemma2.5B64.726.160.583.899.8106.82.540.044.7
upskyy/ko-reranker-8k568M411.8195.6436.2641.7649.3726.09.2275.1342.8
Dongjin-kr/ko-reranker560M520.8258.0468.3644.1747.6765.2272.7334.4381.2
telepix/PIXIE-Spell-Reranker-Preview-0.6B596M104.649.4106.3141.5160.5175.64.372.182.6

Citation

본 벤치마크를 연구에 활용하셨다면 아래와 같이 인용해 주세요.

@misc{reranker-simple-benchmark,
  title        = {Reranker Simple Benchmark},
  author       = {Sigrid Jin, Youngjoon Jang, Yongbin Choi, Daegon Yu, Kanghyeun Lee, Juna Jung, Junu Moon},
  year         = {2025},
  publisher    = {GitHub},
  journal      = {GitHub repository},
  howpublished = {\url{https://github.com/instructkr/reranker-simple-benchmark}}
}