앞 편에서 크로스 인코더는 품질이 최고지만 너무 느려 전체 검색에는 못 쓴다고 했다. 그 크로스 인코더를 1차 검색 결과에만 적용하는 것이 리랭킹(reranking)이다. 벡터 DB가 처음 반환한 문서를, 성능은 높지만 비싼 모델로 다시 점수 매기고 재정렬하는 검색 후(post-retrieval) 과정이다.

 

 

1. 리랭킹이란

리랭킹은 문서·chunk가 이미 검색된 뒤, LLM으로 보내지기 전에 검색 품질을 끌어올린다. 벡터 DB가 결과를 반환하면, 리랭커가 더 뛰어난 모델로 그 문서들에 다시 점수를 매기고 순위를 조정한다. 재평가할 문서가 소수뿐이므로, 전체 knowledge base 검색에는 쓸 수 없던 고성능·고비용 모델을 쓸 수 있다.

그림 1. 리랭킹 — 1차 검색 결과를 고성능 모델로 다시 점수·순위화해, 진짜 관련 문서만 남긴다.

 

 

2. 왜 필요한가

단순한 예로 "캐나다의 수도는?"이라는 프롬프트를 보자. 벡터 DB는 의미상 관련은 있지만 질문에 직접 답하지 않는 문서를 가져올 수 있다 — "Toronto is in Canada", "the capital of France is Paris", "Canada is the maple syrup capital of the world" 같은 것들이다. 모두 프롬프트와 어느 정도 의미가 겹치지만, 정작 답은 아니다. 이때 리랭커가 개입해 재점수·재정렬하여 진짜 관련 있는 문서만 최종 반환되게 한다.

그림 2. "캐나다 수도?"에 대해 1차 검색은 의미상 비슷하지만 답이 아닌 문서를 섞어 온다 — 리랭킹이 필요한 지점.

 

 

 

3. 동작 방식 — over-fetch 후 재정렬

리랭커를 쓰는 시스템은 보통 1차 검색에서 문서를 넉넉히(over-fetch) 가져온다. 예를 들어 하이브리드 검색으로 20~100개를 검색한 뒤, 리랭커로 재점수해 최종 순위를 만든다. 최종적으로는 그중 5~10개만 반환하지만, 리랭커 덕분에 단순 하이브리드 검색보다 훨씬 관련성 높은 문서가 남는다.

그림 3. 흐름 — knowledge base → 1차 검색(넉넉히) → 리랭킹 → 최종 소수 문서를 LLM에 전달.
그림 4. 리랭킹 후 — "캐나다의 수도는 오타와"처럼 실제로 답하는 문서가 상위로 올라온다.

 

4. 크로스 인코더 리랭커

 

리랭커는 보통 크로스 인코더 구조다. 크로스 인코더는 bi-encoder보다 결과가 좋지만 훨씬 느려서 수백만~수십억 문서에는 못 쓴다. 하지만 bi-encoder가 이미 후보를 좁혀 놓았다면, 품질과 시간의 trade-off가 훨씬 합리적이 된다. 20~100개만 재정렬하더라도 약간의 latency가 추가되지만, 이 교환은 거의 항상 그만한 가치가 있다.

그림 5. 크로스 인코더 리랭커 — 1차로 좁혀진 소수 문서에만 적용하면 "느리지만 정확한" 장점을 살릴 수 있다.

 

5. LLM 기반 리랭킹

 

LLM 기반 리랭킹도 점점 많이 쓰인다. 아이디어는 크로스 인코더와 비슷하되, prompt-document 쌍을 크로스 인코더가 아니라 LLM에 직접 준다. 이 작업용으로 설계된 LLM은 쌍을 분석해 관련성을 평가하고 숫자 점수로 답한다. 유망하지만 본질적으로 크로스 인코더만큼 비효율적이다 — 둘 다 프롬프트를 받아야 점수를 시작할 수 있고, 개별 문서 점수 계산도 비교적 비싸다. 그래서 LLM 기반 점수화도 결국 벡터 검색이 목록을 좁힌 뒤에만 쓰는 리랭킹 기법으로 남는다.

그림 6. LLM 기반 리랭킹 — prompt-document 쌍을 LLM에 직접 주고 관련성 점수를 받는다(크로스 인코더만큼 비쌈).

 

실전. 리랭킹은 RAG에 필수는 아니지만 구현이 쉽고 성능이 크게 오른다. 많은 벡터 DB에서 검색 쿼리에 한 줄만 추가하면 될 정도다. 검색 관련성을 높이고 싶다면 가장 먼저 시도해 볼 기법 중 하나다 — 보통 15~25개를 over-fetch한 뒤 재정렬하면 약간의 latency로 관련성을 크게 끌어올릴 수 있다.

 

이로써 Module 3(벡터 데이터베이스로 검색)을 마친다 — ANN(HNSW) → 벡터 DB → 청킹 → 고급 청킹 → 쿼리 파싱 → 크로스 인코더·ColBERT → 리랭킹까지, 검색을 대규모에서 빠르고 정확하게 만드는 도구들을 훑었다. 다음 Module 4부터는 검색된 맥락으로 실제 답을 만드는 LLM과 텍스트 생성(트랜스포머·샘플링·프롬프트 엔지니어링·환각·평가)으로 넘어간다.

'AI > RAG' 카테고리의 다른 글

LLM Sampling 전략  (0) 2026.07.03
Transformer Architecture  (0) 2026.07.03
Cross Encoder & ColBERT  (0) 2026.07.02
Query Parsing  (0) 2026.07.02
고급 청킹 기법  (0) 2026.07.02

+ Recent posts