Reranker-centric
Reranker-centric은 복수의 retriever로 넓게 후보를 수집한 뒤(broad recall), 별도의 reranker 모델이 쿼리와 각 문서의 관련성을 정밀하게 평가하여 최종 순위를 결정하는 병합 방식이다. 1차 검색의 병합 방식(Naive/RRF/Score Fusion)에 무관하게 최종 품질을 reranker가 보장한다.
핵심 개념
Retriever(bi-encoder)는 쿼리와 문서를 독립적으로 임베딩해 코사인 유사도를 계산한다. 속도가 빠르지만 쿼리-문서 상호작용을 포착하지 못한다. Reranker(cross-encoder)는 쿼리와 문서를 함께 입력받아 관련성 점수를 계산한다. 느리지만 정밀도가 훨씬 높다.
Reranker-centric은 이 두 모델의 역할을 분리한다. Retriever는 재현율(recall)을 책임지고, Reranker는 정밀도(precision)를 책임진다.
[복수의 Retriever] → 후보 Pool (top-100~1000)
│
▼
[Reranker] → 최종 상위 문서 (top-5~20)
│
▼
[LLM] → 최종 답변
Reranker 모델 유형
Cross-encoder
쿼리와 문서를 [CLS] query [SEP] document [SEP] 형태로 이어 붙여 BERT 계열 모델에 입력하고, 관련성 점수를 출력한다. 정밀도가 높지만 후보 수에 비례해 레이턴시가 증가한다.
from sentence_transformers import CrossEncoder
reranker = CrossEncoder("cross-encoder/ms-marco-MiniLM-L-6-v2")
def rerank(query: str, candidates: list[Document]) -> list[Document]:
pairs = [(query, doc.content) for doc in candidates]
scores = reranker.predict(pairs)
ranked = sorted(zip(candidates, scores), key=lambda x: x[1], reverse=True)
return [doc for doc, _ in ranked]LLM 기반 Reranker
LLM에게 후보 문서들의 관련성 순위를 매기도록 요청한다. 비용이 높지만 복잡한 추론이 필요한 경우 가장 정밀하다. Listwise Reranking 방식(목록 전체를 한 번에 평가)과 Pairwise 방식(두 문서씩 비교)이 있다.
프롬프트: 다음 쿼리에 대해 아래 문서들을 관련성이 높은 순으로 정렬하라.
쿼리: {query}
문서 목록: {candidates}
Learned Sparse Reranker (SPLADE 등)
희소 벡터 기반으로 확장된 쿼리-문서 매칭을 수행한다. Cross-encoder보다 빠르면서 BM25보다 정밀하다.
후보 풀 크기 결정
Reranker는 후보 수만큼 모델을 실행하므로 후보 풀이 클수록 레이턴시와 비용이 증가한다. 일반적으로 다음 기준을 사용한다.
| 환경 | 권장 후보 수 |
|---|---|
| 실시간 응답 (< 1초) | 20~50 |
| 준실시간 응답 (< 3초) | 50~200 |
| 배치/오프라인 | 200~1000 |
병합 전략과의 조합
Reranker-centric은 1차 병합 전략에 독립적이다. 어떤 방식으로 후보를 모아도 reranker가 최종 정렬을 맡는다.
[Naive Merge 또는 RRF 또는 Score Fusion]
│
▼
후보 Pool
│
▼
Reranker
│
▼
최종 결과
RRF로 후보를 모으고 Cross-encoder로 재순위화하는 조합이 실전에서 가장 많이 사용된다.
장단점
| 항목 | 내용 |
|---|---|
| 장점 | 최고 수준의 정밀도, 1차 병합 방식에 무관하게 품질 보장 |
| 단점 | 추가 레이턴시 (후보 수 × reranker 추론 시간) |
| 단점 | 1차 검색에서 누락된 문서는 복구 불가 |
관련 개념
- Reciprocal Rank Fusion: Reranker-centric의 1차 병합 단계로 자주 사용되는 방식
- Hierarchical Retrieval: 계층적으로 후보를 좁혀가는 방식 (마지막 단계로 Reranker 배치 가능)
- Score Fusion: 점수 기반의 1차 병합 방식