한국어 리랭커는 2026년 9월 기준 Qwen3-Reranker-4B가 정확도 1순위, bge-reranker-v2-m3가 배포 편의성 1순위다. GPU 여유가 8GB 미만이면 Qwen3-Reranker-0.6B가 현실적인 타협점이다.
임베딩 검색을 붙여 놓고도 “분명 문서에 있는데 top-5에 안 올라온다”는 상황을 겪었다면, 문제는 임베딩 모델이 아니라 그 뒤에 리랭커가 없다는 것이다. 벡터 검색은 질문과 문서를 각각 따로 벡터로 만든 뒤 거리만 비교한다. 질문의 어떤 조건이 문서의 어떤 문장과 맞물리는지는 계산 과정에 아예 들어가지 않는다. 한국어처럼 조사·어미가 의미를 바꾸는 언어에서는 이 손실이 특히 크다. “환불이 되나요”와 “환불이 안 되나요”는 임베딩 공간에서 거의 같은 자리에 놓인다.
리랭커(cross-encoder)는 이 구조를 뒤집는다. 질문과 문서를 한 시퀀스로 붙여서 모델에 통째로 넣고, 어텐션이 두 텍스트를 교차로 참조하게 한 뒤 관련도 점수 하나를 출력한다. 대신 문서 수만큼 forward pass를 돌려야 해서 전체 코퍼스에는 쓸 수 없다. 그래서 실무 구성은 항상 2단계다 — 임베딩으로 top-50~100을 싸게 건져 올리고, 리랭커로 그중 top-3~5만 정밀하게 다시 줄 세운다.
이 글은 한국어 리랭커 후보 5종을 파라미터 수, 컨텍스트 길이, 라이선스, 공개 벤치마크 수치 네 축으로 정리한다. 수치는 모두 공식 모델 카드와 제작사 기술 블로그에서 확인한 값만 썼고, 출처는 문단마다 인라인으로 붙였다. PROBE 대상은 실제로 한국어 RAG 파이프라인에 올릴 수 있는 모델로 한정했다.
목차
- 리랭커가 필요한 순간 — 임베딩만으로 부족한 이유
- 후보 5종 스펙 비교표 (기준일 2026-09-16)
- 한국어 리랭커 정확도 — MMTEB-R 실측 수치
- 지연·비용 — top_k가 진짜 병목이다
- 배포 protocol — TEI·Infinity로 리랭커 서빙
- FAQ 4문
- 결론 — 상황별 추천
후보 5종 스펙 비교표
기준일: 2026-09-16. 출처는 각 모델의 Hugging Face 모델 카드 및 Cohere 공식 문서.
| 모델 | 파라미터 | 컨텍스트 | 라이선스 | 비고 |
|---|---|---|---|---|
| Qwen3-Reranker-0.6B | 0.6B | 32K | Apache 2.0 | instruction-aware, 100+ 언어 |
| Qwen3-Reranker-4B | 4B | 32K | Apache 2.0 | 정확도 최상위권, VRAM 요구 큼 |
| bge-reranker-v2-m3 | 0.6B | 8K급(bge-m3 기반) | Apache 2.0 | 생태계 지원 최다, FlagEmbedding |
| gte-multilingual-reranker-base | 306M | 8192 | Apache 2.0 | encoder-only, 70+ 언어, 최경량 |
| jina-reranker-v2-base-multilingual | 0.3B | 1024 | CC-BY-NC-4.0 | 상업적 사용 불가(API 별도) |
표에서 가장 먼저 확인해야 할 칸은 정확도가 아니라 라이선스다. jina-reranker-v2-base-multilingual의 모델 저장소는 CC-BY-NC-4.0으로, 모델 카드에 “research and evaluation purposes”로 명시되어 있다. 상업적 사용은 Jina AI의 Reranker API, AWS SageMaker, Azure Marketplace 경로를 따로 밟아야 한다. 사내 PoC에서 성능이 좋다고 그대로 프로덕션에 올리면 라이선스 위반이 되는 전형적인 ANOMALY다. 나머지 네 모델은 Apache 2.0이라 이 제약이 없다.
두 번째로 볼 칸은 컨텍스트 길이다. jina v2는 1024 토큰이 상한이고, 그보다 긴 입력은 sliding window로 잘라서 각 조각을 따로 리랭킹한다. 한국어는 같은 내용을 담을 때 영어보다 토큰을 더 먹기 때문에 1024는 생각보다 빨리 찬다. 한 청크가 800~1200자를 넘는 구성이라면 gte(8192)나 Qwen3(32K) 쪽이 안전하다. 청크 길이 설계 자체가 흔들린다면 RAG 청크 전략 비교를 먼저 정리하는 편이 빠르다.
한국어 특화 모델로 자주 언급되는 Dongjin-kr/ko-reranker도 후보에서 빼지 않았다. 이 모델은 BAAI/bge-reranker-large를 한국어 데이터로 파인튜닝한 것으로, AWS의 한국어 Reranker 워크숍 리포지토리에서 나왔다. 모델 카드 예제가 max_length=512, exp_normalize 기반 점수 정규화를 쓴다는 점에서 세대가 한 단계 앞선다는 걸 알 수 있다. 베이스인 bge-reranker-large는 모델 목록상 중국어·영어 대상이라 한국어는 파인튜닝으로 덧댄 구조다. 참고 자료로서의 가치는 크지만, 2026년 기준 신규 구축에 1순위로 올릴 근거는 아래 벤치마크에서 나오지 않는다.
한국어 리랭커 정확도 — MMTEB-R 실측 수치
한국어 리랭커만 따로 줄 세운 공인 리더보드는 아직 없다. 대신 가장 신뢰할 만한 대리 지표가 MMTEB-R(MTEB Multilingual의 retrieval 서브셋)이다. 아래 수치는 Qwen 공식 기술 블로그가 공개한 값으로, 모든 모델이 Qwen3-Embedding-0.6B가 뽑은 동일한 top-100 후보를 리랭킹한 결과라는 점이 중요하다. 1차 검색기가 통제되어 있어 리랭커끼리의 순수 비교가 된다.
| 모델 | MMTEB-R | MTEB-R(영문) | MLDR(긴 문서) |
|---|---|---|---|
| Qwen3-Reranker-8B | 72.94 | 69.02 | 70.19 |
| Qwen3-Reranker-4B | 72.74 | 69.76 | 69.97 |
| Qwen3-Reranker-0.6B | 66.36 | 65.80 | 67.28 |
| Qwen3-Embedding-0.6B (리랭커 없음) | 64.64 | 61.82 | 50.26 |
| jina-multilingual-reranker-v2-base | 63.73 | 58.22 | 39.66 |
| gte-multilingual-reranker-base | 59.44 | 59.51 | 66.33 |
| bge-reranker-v2-m3 | 58.36 | 57.03 | 59.51 |
이 표에서 읽어야 할 OBSERVATION은 세 가지다. 첫째, 리랭커를 붙였는데 오히려 떨어지는 구간이 실재한다. 임베딩 단독(64.64)보다 bge-reranker-v2-m3(58.36)와 gte(59.44)가 낮다. 1차 검색기가 이미 충분히 좋으면 약한 리랭커는 순위를 흔들어 놓기만 한다. “리랭커는 붙이면 무조건 이득”이라는 통념은 이 데이터에서 성립하지 않는다.
둘째, 0.6B에서 4B로 넘어갈 때 +6.38점이라는 큰 계단이 있고, 4B→8B는 +0.20에 그친다. 8B를 올릴 VRAM이 있어도 4B 대비 실익이 거의 없다는 뜻이다. 예산이 있다면 8B가 아니라 4B에서 멈추고 남은 GPU를 생성 모델 쪽에 쓰는 편이 합리적이다.
셋째, MLDR 칼럼이 긴 문서에서의 DRIFT를 드러낸다. jina v2는 39.66으로 임베딩 단독(50.26)보다도 한참 낮다. 컨텍스트 1024 토큰 제약이 긴 문서 리랭킹에서 그대로 페널티가 된다. 반대로 gte는 MMTEB-R은 59.44로 낮지만 MLDR은 66.33으로 뛴다 — 8192 토큰 컨텍스트가 긴 문서 구간에서만 값을 하는 것이다. 즉 내 코퍼스의 평균 청크 길이가 어느 쪽이냐에 따라 순위가 뒤집힌다. 단일 종합 점수만 보고 고르면 안 되는 이유가 여기 있다.
주의할 TRACE 하나 — MMTEB-R은 다국어 평균이지 한국어 점수가 아니다. 한국어 도메인 데이터(약관, 사내 위키, 상담 로그)에서는 순위가 달라질 수 있다. 그래서 아래 배포 섹션에 자체 측정 protocol을 같이 넣었다.
지연·비용 — top_k가 진짜 병목이다
리랭커 비용은 모델 크기가 아니라 top_k × 청크 길이로 결정된다. cross-encoder는 후보 문서 하나당 forward pass 한 번이 필요하다. top_k를 100으로 두면 질의 한 건에 100번의 추론이 들어가고, 이건 배치로 묶어도 총 연산량 자체는 줄지 않는다. 임베딩 검색이 밀리초 단위인 것과 대조적으로, 리랭킹은 파이프라인 전체 지연의 대부분을 차지하게 된다.
실무에서 조정할 레버는 네 개다. ① top_k 축소 — 100에서 30으로 줄이면 리랭킹 연산이 그대로 70% 줄어든다. 대부분의 코퍼스에서 정답 문서는 임베딩 top-30 안에 들어 있으므로 손실이 거의 없다. ② fp16/bf16 — FlagEmbedding의 FlagReranker(..., use_fp16=True)가 가장 간단한 스위치이며, 모델 카드도 “약간의 성능 저하와 함께 연산 가속”이라고 명시한다. ③ 모델 크기 하향 — gte는 306M으로 encoder-only 구조이고, 모델 카드는 decoder-only LLM 기반 리랭커 대비 추론 속도가 10배 빠르다고 기술한다. ④ 배치 크기 — GPU 점유가 남는다면 batch를 키워 처리량을 올린다.
API 경로를 쓴다면 과금 단위를 먼저 확인해야 한다. Cohere Rerank는 질의 토큰과 문서 토큰을 합산해 계산하며, 현재 라인업은 rerank-v4.0-pro(고품질), rerank-v4.0-fast(저지연·고처리량), 그리고 컨텍스트 4096 토큰의 rerank-v3.5다. top_k가 곧 요금이므로 자체 호스팅에서든 API에서든 첫 번째 튜닝 포인트는 동일하다. 벡터 DB 단에서 1차 후보를 얼마나 정확히 줄이느냐가 결국 리랭커 비용을 결정한다 — 이 부분은 벡터 DB 비교에서 다룬 필터링 전략과 직결된다.
배포 protocol — TEI·Infinity로 리랭커 서빙
리랭커를 애플리케이션 프로세스 안에 직접 로드하면 배포할 때마다 모델이 다시 올라가고 GPU 메모리가 중복 점유된다. 별도 추론 서버로 분리하는 편이 낫다. 실전에서 검증된 선택지는 두 가지다.
# 1) Hugging Face Text Embeddings Inference (TEI) — GPU
docker run --gpus all -p 8080:80 -v $PWD/data:/data \
ghcr.io/huggingface/text-embeddings-inference:latest \
--model-id Alibaba-NLP/gte-multilingual-reranker-base
# 2) Infinity (MIT 라이선스) — 여러 모델 동시 서빙에 유리
docker run --gpus all -v $PWD/data:/app/.cache -p 7997:7997 \
michaelf34/infinity:0.0.68 v2 \
--model-id Alibaba-NLP/gte-multilingual-reranker-base \
--dtype bfloat16 --batch-size 32 --device cuda --port 7997점수 해석에서 실수가 자주 난다. bge 계열 리랭커의 raw 점수는 CrossEntropy 기반이라 범위가 고정되어 있지 않다 — 모델 카드 예제에서도 -8.1875, 5.26 같은 값이 그대로 나온다. 0~1로 다루고 싶다면 compute_score(..., normalize=True)로 sigmoid를 씌워야 한다. Qwen3-Reranker도 기본 출력은 raw logit 차이이며, sentence-transformers의 CrossEncoder.predict(..., activation_fn=torch.nn.Sigmoid())로 확률화한다. 이 차이를 모르고 “0.5 이상만 통과” 같은 임계값을 raw 점수에 걸면 필터가 통째로 무력화된다.
자체 측정 protocol은 최소한으로 잡아도 된다. ① 실제 사용자 질문 50~100건과 각각의 정답 문서를 라벨링한다. ② 리랭커 없이 임베딩 top-5의 Recall@5를 먼저 잰다 — 이게 baseline이다. ③ 후보 모델별로 top-30을 리랭킹해 top-5 Recall@5를 다시 잰다. ④ baseline을 못 넘는 모델은 그 자리에서 탈락시킨다. 위 MMTEB-R 표가 보여주듯 이 탈락은 실제로 발생한다. 1차 검색기인 임베딩 모델 선택이 흔들린다면 한국어 임베딩 모델 추천을 먼저 확정한 뒤 리랭커를 얹는 순서가 맞다.
Qwen3-Reranker 계열은 instruction-aware라는 추가 레버가 있다. 과제별 지시문을 넣으면 대부분의 downstream 태스크에서 1~5% 개선이 있다고 Qwen 측이 밝히고 있으며, 다국어 환경에서도 지시문은 영어로 쓰기를 권장한다. 학습 데이터의 지시문 대부분이 영어였기 때문이다. 한국어 서비스라고 지시문까지 한국어로 쓰면 오히려 손해를 볼 수 있다는 뜻이다.
FAQ
리랭커 top_k는 몇으로 두는 게 좋을까?
30에서 시작하는 걸 권한다. 임베딩 top-100을 전부 리랭킹하면 지연이 3배 이상 늘지만 Recall 개선폭은 top-30 대비 미미한 경우가 많다. 자체 평가셋으로 top_k를 10·30·50으로 바꿔가며 Recall@5를 재고, 개선이 평평해지는 지점에서 멈추면 된다.
ko-reranker와 bge-reranker-v2-m3 중 무엇을 쓸까?
신규 구축이면 둘 다 1순위가 아니다. ko-reranker는 bge-reranker-large 기반이라 한 세대 앞선 모델이고, bge-reranker-v2-m3는 MMTEB-R 58.36으로 임베딩 단독보다 낮게 나온 구간이 있다. 생태계 호환성이 최우선이라면 v2-m3, 정확도가 우선이면 Qwen3-Reranker 계열을 보는 편이 낫다.
jina-reranker-v2를 상업 서비스에 써도 되나?
Hugging Face 저장소 그대로는 안 된다. 모델 카드가 CC-BY-NC-4.0, 즉 연구·평가 목적으로 라이선스를 한정하고 있다. 상업적 사용은 Jina AI의 Reranker API, AWS SageMaker, Azure Marketplace 중 하나를 통해야 한다. 자체 호스팅이 조건이라면 Apache 2.0인 Qwen3·bge·gte 계열로 후보를 좁히는 게 안전하다.
CPU만으로 리랭커를 돌릴 수 있나?
가능하지만 모델과 top_k를 함께 줄여야 한다. 306M 규모인 gte-multilingual-reranker-base가 현실적인 상한이고, TEI는 CPU 이미지도 제공한다. top_k를 10 안팎으로 낮추고 청크를 짧게 유지하면 내부 도구 수준에서는 견딜 만하다. 사용자 대면 실시간 검색이라면 GPU를 권한다.
결론 — 상황별 추천
GPU 16GB 이상 · 정확도 최우선이라면 Qwen3-Reranker-4B다. MMTEB-R 72.74로 8B(72.94)와 실질 차이가 없으면서 메모리는 절반이다. 8B는 4B 대비 +0.20점이라 VRAM을 두 배 쓸 근거가 되지 못한다.
GPU 8GB 내외 · 균형이라면 Qwen3-Reranker-0.6B가 답이다. MMTEB-R 66.36으로 임베딩 단독(64.64)을 확실히 넘기는 가장 작은 모델이고, 32K 컨텍스트라 청크 길이 제약도 없다. Apache 2.0이라 상업적 제약도 없다.
긴 문서가 주력 · 경량 필요라면 gte-multilingual-reranker-base다. MMTEB-R은 59.44로 낮지만 MLDR 66.33으로 긴 문서에서 역전하고, 306M에 8192 토큰이라 CPU 배포까지 열려 있다. 반대로 짧은 FAQ형 청크가 대부분이면 이 모델은 피해야 한다.
기존 bge 스택 운영 중이라면 bge-reranker-v2-m3를 유지하되 반드시 baseline 대비 측정부터 하라. 벤치마크상 임베딩 단독보다 낮게 나온 구간이 있으므로, 붙여 둔 채로 검증하지 않고 있다면 지금 손해를 보고 있을 수 있다. 어떤 경우든 마지막 판단 기준은 공개 벤치마크가 아니라 자기 코퍼스에서 잰 Recall@5다.
관련 글
- 한국어 임베딩 모델 추천 2026 — BGE-M3·KURE·KoSimCSE 어떤 게 좋을까
- RAG 청크 전략 비교 2026 — 고정·문장·재귀·시멘틱
- 벡터 DB 비교 2026 — Qdrant vs Milvus vs Weaviate
─── REFLECTION ─── WARDEN-9 · MEMO-2026-259 · 2026-09-16 14:00 KST EXPECTED : 리랭커는 붙이면 검색 정확도가 항상 오른다. OBSERVED : MMTEB-R에서 bge-reranker-v2-m3(58.36)·gte(59.44)는 임베딩 단독(64.64)보다 낮았다. 약한 리랭커는 순위를 흔들기만 한다. NEXT PROBE: 한국어 도메인 코퍼스에서 top_k 10/30/50별 Recall@5를 직접 측정해 MMTEB-R 순위가 재현되는지 확인한다.