리랭킹(Reranking)은 벡터 검색이나 키워드 검색이 1차로 뽑아 놓은 문서 후보를 질문과 하나씩 다시 대조해 관련도 점수를 매기고 순위를 고치는 2단계 검색 기법으로, RAG와 AI 검색에서 답변에 쓸 문서의 정확도를 높이는 데 쓰인다.
이 일을 하는 모델이 리랭커(Reranker)다. BAAI의 bge-reranker 모델 카드는 임베딩 모델과의 차이를 “리랭커는 질문과 문서를 입력으로 받아 임베딩 대신 유사도를 직접 출력한다”고 설명한다 (Hugging Face, BAAI/bge-reranker-v2-m3 모델 카드).
리랭킹이 필요한 이유는 1차 검색이 빠른 대신 거칠기 때문이다. RAG 파이프라인에서 1차 검색은 수백만 문서 중 후보 수십에서 수백 개를 밀리초 안에 추리고, 리랭킹은 그 후보만 정밀하게 다시 본다.
리랭킹은 “넓게 뽑고 좁게 고르는” 두 단계로 돌아간다. Sentence-Transformers 문서는 이 구조를 “먼저 효율적인 바이인코더로 질문과 가장 유사한 상위 100개를 찾고, 그다음 크로스인코더로 (질문, 문서) 조합마다 점수를 계산해 100개를 다시 정렬한다”고 설명한다 (Sentence-Transformers, Cross-Encoder Applications: Retrieve & Re-Rank).
Anthropic은 2024년 9월 공개한 컨텍스추얼 리트리벌 실험에서 1차로 150개 청크를 뽑은 뒤 리랭커로 상위 20개를 골랐다. 같은 글은 “리랭킹은 실행 시점에 단계를 하나 더하므로, 리랭커가 모든 청크를 병렬로 점수 매겨도 약간의 지연이 불가피하다”며 “더 많은 청크를 리랭킹해 성능을 올릴지, 더 적게 리랭킹해 지연과 비용을 줄일지의 트레이드오프가 있다”고 적었다 (Anthropic, Introducing Contextual Retrieval (2024-09-19)).
임베딩 검색은 질문과 문서를 따로 벡터로 만들어 거리를 재고, 리랭킹은 질문과 문서를 한꺼번에 모델에 넣어 관련도를 직접 계산한다. 앞의 구조를 바이인코더(Bi-Encoder), 뒤를 크로스인코더(Cross-Encoder)라 부른다.
| 구분 | 임베딩 검색 (바이인코더) | 리랭킹 (크로스인코더) |
|---|---|---|
| 입력 방식 | 질문과 문서를 따로 인코딩 | 질문과 문서를 한 쌍으로 함께 인코딩 |
| 출력 | 벡터, 이후 코사인 유사도 등으로 비교 | 0~1 사이 관련도 점수 |
| 사전 계산 | 문서 벡터를 미리 저장 가능 | 질문이 와야 계산 가능, 미리 저장 불가 |
| 속도 | 수백만 문서도 밀리초 | 후보 수십 |
| 정확도 | 의미를 벡터 하나로 압축해 손실 발생 | 질문 맥락을 반영해 더 정확 |
| 역할 | 1단계 후보 추출 | 2단계 정밀 정렬 |
속도 차이는 극단적이다. Sentence-Transformers 문서는 문장 10,000개를 묶는 작업에 크로스인코더를 쓰면 약 5,000만 번의 비교가 필요해 65시간이 걸리지만 바이인코더는 5초면 끝난다고 비교한다. 그런데도 “크로스인코더가 바이인코더보다 성능이 좋다”고 못 박는다 (Sentence-Transformers, Cross-Encoder Applications: Retrieve & Re-Rank).
정확도 차이의 원인은 정보 손실이다. Pinecone은 “바이인코더는 문서가 가질 수 있는 모든 의미를 벡터 하나에 압축해야 하므로 정보를 잃는다”며, 질문을 받기 전에 벡터를 만들어 두기 때문에 “질문에 대한 맥락이 없다”고 설명한다. 반대로 리랭커는 “원본 정보를 트랜스포머 연산에 직접 넣으므로 정보 손실이 적다” (Pinecone, Rerankers and Two-Stage Retrieval).
그래서 둘은 경쟁 관계가 아니라 분업 관계다. 임베딩이 넓은 바다에서 그물을 던지고, 리랭커가 그물에 걸린 것 중 진짜를 고른다.
공개된 실험들은 1차 검색만 쓸 때보다 검색 실패율이 절반 이하로 떨어진다고 보고한다.
| 실험 | 비교 조건 | 결과 | 출처 |
|---|---|---|---|
| Anthropic (2024-09) | 컨텍스추얼 임베딩 + BM25에 리랭킹 추가 | 상위 20개 청크 검색 실패율 5.7%에서 1.9%로 67% 감소 | Anthropic |
| Elastic (2024-12) | BM25 대비 Elastic Rerank 모델 | 다양한 검색 과제에서 40% 향상, 질의응답 데이터셋에서 최대 90% 향상 | Elastic Search Labs |
| Allganize (2025-07) | 자사 데이터, 리랭커 적용 전후 | 1위 결과에 정답이 포함된 비율 약 22%에서 44%로 2배 | Allganize |
Anthropic 실험에서 컨텍스추얼 임베딩만 쓰면 실패율이 35% 줄고, BM25를 합치면 49%, 리랭킹까지 더하면 67%가 줄었다 (Anthropic, Introducing Contextual Retrieval (2024-09-19)). 리랭킹 한 단계가 나머지 개선을 합친 것과 비슷한 폭의 효과를 냈다는 뜻이다.
Elastic은 자사 리랭크 모델이 BM25 대비 “넓은 범위의 검색 과제에서 40%, 질의응답 데이터셋에서는 최대 90%의 향상”을 보였고, 21개 이상 데이터셋에서 더 큰 경쟁 모델보다 nDCG@10이 평균 13점 높았다고 밝혔다 (Elastic Search Labs, Introducing Elastic Rerank (2024-12-10)).
한국어 환경의 수치도 있다. Allganize는 크로스인코더 리랭커를 적용한 뒤 자사 데이터에서 “Top-1 정답 포함율이 약 22%에서 44% 수준으로 2배 향상”됐다고 보고했다 (Allganize, 의미 기반 검색의 진화와 Cross-Encoder Reranker의 역할 (2025-07-02)).
구현 방식으로 나누면 네 갈래이고, 2026년 기준 실무에서 가장 많이 쓰는 것은 크로스인코더와 상용 API다. 분류는 AutoRAG 팀의 정리를 따랐다 (AutoRAG, RAG에서 사용하는 리랭커 총정리 (2024-07-04)).
| 종류 | 원리 | 대표 모델과 서비스 | 특징 |
|---|---|---|---|
| 크로스인코더 (LM 기반) | BERT 계열 모델을 질문-문서 쌍으로 학습해 점수 출력 | BAAI bge-reranker-v2-m3, cross-encoder/ms-marco-MiniLM-L6-v2 | 오픈소스, 자체 서버에서 실행, 다국어 모델 존재 |
| 상용 API | 호스팅된 리랭커를 API로 호출 | Cohere Rerank 4.0, Google Vertex AI Ranking API, NVIDIA NeMo Retriever | 인프라 불필요, 요청당 과금 |
| LLM 기반 | LLM에 후보 목록을 주고 프롬프트로 순위를 생성 | RankGPT 방식 | 학습 없이 작동하지만 비용과 지연이 크다 |
| 임베딩 기반 (후기 상호작용) | 토큰 단위 벡터를 보존해 질문 토큰과 문서 토큰을 대조 | ColBERT | 바이인코더보다 정확하고 크로스인코더보다 빠르다 |
오픈소스 크로스인코더의 성능과 속도는 공개 표로 비교할 수 있다. ms-marco-MiniLM-L6-v2는 MS MARCO 개발 세트에서 MRR@10 39.01, 초당 1,800개 문서를 처리하고, 더 작은 TinyBERT-L2-v2는 MRR@10 32.56에 초당 9,000개를 처리한다 (Sentence-Transformers, Pretrained Cross-Encoders). 정확도와 처리량이 반비례하는 전형적인 관계다.
상용 API는 한도와 언어 범위가 다르다. Cohere Rerank는 “질문과 문서 목록이 주어지면 질문과 의미적으로 가장 관련 있는 것부터 덜 관련 있는 순으로 문서를 정렬”하며 100개 이상 언어를 지원한다 (Cohere, Rerank Overview). 구글 Vertex AI Ranking API는 “문서 목록을 가져와 문서가 쿼리와 얼마나 관련성이 있는지에 따라 문서의 순위를 다시 지정”하고 요청당 최대 1,000개 레코드를 받는다 (Google Cloud, Ranking API를 사용하여 검색결과 순위 개선).
후보 수, 최종 개수, 모델 세 가지를 정하면 적용은 끝난다. 각 결정의 기준은 다음과 같다.
리랭킹은 GEO 관점에서도 의미가 있다. AI 검색 엔진이 인용할 문서를 고르는 마지막 관문이 리랭커라면, 질문에 직접 답하는 문단이 문서 앞에 있고 한 청크 안에서 뜻이 완결되는 글이 높은 점수를 받는다.
리랭킹은 순위를 다시 매기는 작업이고 리랭커는 그 작업을 하는 모델이다. “리랭커 모델”, “리랭킹 알고리즘”처럼 섞어 쓰지만 가리키는 것은 같은 2단계 검색이다.
다국어로 학습된 크로스인코더가 기본 선택이다. BAAI의 bge-reranker-v2-m3가 오픈소스 중 널리 쓰이고, 상용으로는 100개 이상 언어를 지원하는 Cohere Rerank와 구글 Vertex AI Ranking API가 있다. 한국어 질문 세트로 Recall@K를 직접 재서 고르는 것이 가장 확실하다.
GPT 같은 LLM에 후보 문서 목록을 주고 “관련도 순으로 정렬하라”고 프롬프트해 순위를 얻는 방식이다. 별도 학습 없이 작동하고 제로샷 성능이 좋지만, 후보마다 LLM 토큰을 쓰므로 크로스인코더보다 비용과 지연이 크다.
문서가 적고 1차 검색 정확도가 충분하면 없어도 된다. 그러나 문서가 수만 건 이상이거나 비슷한 문서가 많아 1차 검색이 정답을 상위에 못 올릴 때는 리랭킹이 가장 비용 대비 효과가 큰 개선책이다. Anthropic 실험에서는 리랭킹 추가로 검색 실패율이 2.9%에서 1.9%로 더 내려갔다.
서치폴라리스가 AI 검색 가시성을 진단하고 GEO 실행까지 대행합니다.