리랭킹이란 무엇인가

리랭킹(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).

  1. 사용자의 질문을 받는다.
  2. 1차 검색기가 벡터 검색, BM25, 또는 둘을 합친 하이브리드 검색으로 후보 N개를 뽑는다. N은 보통 수십에서 수백이다.
  3. 리랭커가 질문과 후보 문서를 한 쌍으로 묶어 모델에 넣고, 쌍마다 관련도 점수를 낸다.
  4. 점수순으로 다시 정렬해 상위 K개만 남긴다. K는 보통 3에서 20이다.
  5. 남은 K개를 LLM의 컨텍스트로 넘겨 답변을 만든다.

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를 사용하여 검색결과 순위 개선).

실무에서는 어떻게 적용하는가?

후보 수, 최종 개수, 모델 세 가지를 정하면 적용은 끝난다. 각 결정의 기준은 다음과 같다.

  1. 1차 검색을 하이브리드로 넓힌다. 벡터 검색과 BM25를 합쳐 후보 50~150개를 뽑는다. 리랭커는 1차에서 빠진 문서를 살려 내지 못하므로 1차 재현율이 상한선이다.
  2. 최종 개수 K를 LLM 컨텍스트에 맞춘다. Anthropic은 150개에서 20개, Pinecone 예제는 25개에서 3개로 줄였다. 청킹 크기가 클수록 K는 작아진다.
  3. 모델은 언어와 운영 조건으로 고른다. 한국어 문서라면 다국어 크로스인코더(bge-reranker-v2-m3 등)나 100개 이상 언어를 지원하는 상용 API가 후보다. 자체 GPU가 없으면 API, 데이터가 외부로 나가면 안 되면 오픈소스다.
  4. 점수 임계값을 둔다. 리랭커 점수가 낮은 문서는 K개 안에 들어도 버려야 LLM이 무관한 문맥으로 할루시네이션을 만드는 일을 줄인다.
  5. 효과를 숫자로 확인한다. 리랭킹 전후로 정답 문서가 상위 K 안에 든 비율(Recall@K), MRR, nDCG@10을 같은 질문 세트로 측정한다. Anthropic이 쓴 “상위 20개 검색 실패율”이 그 예다.
  6. 지연 예산을 정한다. 후보 100개를 크로스인코더로 보면 GPU에서 수십 밀리초, CPU에서는 초 단위가 걸릴 수 있다. 응답 시간 상한이 있으면 후보 수를 줄이거나 작은 모델을 쓴다.

리랭킹은 GEO 관점에서도 의미가 있다. AI 검색 엔진이 인용할 문서를 고르는 마지막 관문이 리랭커라면, 질문에 직접 답하는 문단이 문서 앞에 있고 한 청크 안에서 뜻이 완결되는 글이 높은 점수를 받는다.

자주 묻는 질문

리랭커와 리랭킹은 어떻게 다른가?

리랭킹은 순위를 다시 매기는 작업이고 리랭커는 그 작업을 하는 모델이다. “리랭커 모델”, “리랭킹 알고리즘”처럼 섞어 쓰지만 가리키는 것은 같은 2단계 검색이다.

한국어 리랭커 모델은 무엇을 쓰나?

다국어로 학습된 크로스인코더가 기본 선택이다. BAAI의 bge-reranker-v2-m3가 오픈소스 중 널리 쓰이고, 상용으로는 100개 이상 언어를 지원하는 Cohere Rerank와 구글 Vertex AI Ranking API가 있다. 한국어 질문 세트로 Recall@K를 직접 재서 고르는 것이 가장 확실하다.

LLM 리랭킹이란 무엇인가?

GPT 같은 LLM에 후보 문서 목록을 주고 “관련도 순으로 정렬하라”고 프롬프트해 순위를 얻는 방식이다. 별도 학습 없이 작동하고 제로샷 성능이 좋지만, 후보마다 LLM 토큰을 쓰므로 크로스인코더보다 비용과 지연이 크다.

RAG에 리랭킹이 꼭 필요한가?

문서가 적고 1차 검색 정확도가 충분하면 없어도 된다. 그러나 문서가 수만 건 이상이거나 비슷한 문서가 많아 1차 검색이 정답을 상위에 못 올릴 때는 리랭킹이 가장 비용 대비 효과가 큰 개선책이다. Anthropic 실험에서는 리랭킹 추가로 검색 실패율이 2.9%에서 1.9%로 더 내려갔다.

참고 자료

우리 브랜드는 AI 답변에 나오고 있을까?

서치폴라리스가 AI 검색 가시성을 진단하고 GEO 실행까지 대행합니다.

GEO 최적화 서비스 보기