AI 용어집 · 심화 · 언어 모델
리랭커 Reranker, 재순위화 모델
리랭커는 검색으로 먼저 추려 낸 후보 문서들을 질문과 하나씩 꼼꼼히 비교해서, 정말 관련 있는 순서대로 다시 줄 세우는 모델입니다. 주로 RAG처럼 검색 결과를 AI에게 넘겨주는 시스템에서 '2차 심사' 역할을 합니다.
어떻게 작동하나
보통 검색은 두 단계로 나뉩니다. 1단계에서는 벡터 검색 같은 빠른 방법으로 수많은 문서 가운데 후보 수십~수백 개를 추립니다. 이때 각 문서의 뜻을 숫자 묶음(벡터) 하나로 압축해 두고 질문 벡터와의 거리만 비교하므로 빠르지만, 압축 과정에서 정보가 일부 사라집니다. 2단계에서 리랭커는 질문과 후보 문서를 한 쌍씩 함께 읽고 '얼마나 관련 있는지' 점수를 매긴 뒤, 점수 순서로 다시 정렬합니다. 질문과 문서를 같이 보기 때문에 더 정확하지만 계산량이 커서, 전체 문서가 아니라 1단계에서 추린 후보에만 씁니다.
왜 중요한가
RAG 시스템에서 검색 결과 상위 몇 개만 AI에게 넘기면, 정말 필요한 문서가 조금 아래 순위에 있어 빠지는 일이 생깁니다. 그렇다고 후보를 너무 많이 넘기면 AI가 한 번에 읽을 수 있는 분량(컨텍스트 윈도)을 넘기거나, 내용이 많아져 오히려 중요한 정보를 놓칠 수 있습니다. 리랭커는 많은 후보를 넓게 가져온 뒤 정말 쓸모 있는 몇 개만 골라 앞에 세워 줘서 이 문제를 줄여 줍니다. 그래서 기대만큼 잘 작동하지 않는 RAG를 개선할 때 비교적 쉽고 빠르게 적용할 수 있는 방법으로 자주 꼽힙니다.
어떻게 발전해 왔나
2019년 Rodrigo Nogueira와 Kyunghyun Cho의 논문 'Passage Re-ranking with BERT'는 언어 모델 BERT에 질문과 문단을 함께 넣어 관련도를 매기는 간단한 방식으로 검색 순위를 크게 끌어올렸습니다. 다만 이런 방식은 질문-문서 쌍마다 큰 모델을 돌려야 해서 느렸습니다. 2020년 Omar Khattab과 Matei Zaharia의 'ColBERT'는 질문과 문서를 따로 미리 처리해 두고 마지막에 단어 단위로 가볍게 비교하는 '늦은 상호작용' 방식을 내놓아, 정확도는 비슷하게 유지하면서 속도를 크게 높였습니다. 2023년 'Is ChatGPT Good at Search?' 논문은 ChatGPT 같은 대규모 언어 모델에게 지시만 잘 주어도 문서 순위를 잘 매길 수 있음을 보였고, 그 능력을 작은 모델에 옮겨 담는(증류) 방법도 제시했습니다.
알아 둘 점
리랭커는 1단계 검색이 가져온 후보 안에서만 순서를 바꿀 뿐, 후보에 아예 없는 문서를 찾아 주지는 못합니다. 또 후보마다 모델을 돌리므로 후보 수가 많을수록 응답이 느려지고 비용이 늘어납니다. 그래서 실제로는 1단계에서 몇 개를 가져오고 리랭커로 몇 개를 남길지 균형을 맞추는 일이 중요합니다.
예시
검색·RAG 도구를 제공하는 회사들이 리랭커를 별도 기능으로 내놓고 있습니다. 예를 들어 Cohere의 Rerank API는 질문 하나와 문서 목록을 넘기면 질문과 의미상 가장 관련 있는 문서부터 덜 관련 있는 문서 순으로 다시 정렬해 돌려준다고 설명합니다. 벡터 DB 회사 Pinecone도 벡터 검색으로 후보를 넓게 가져온 뒤 리랭커로 다시 순위를 매기는 '2단계 검색'을 RAG 성능을 높이는 대표 방법으로 소개합니다.
함께 보면 좋은 용어
참고
- Passage Re-ranking with BERT (2019)
- ColBERT: Efficient and Effective Passage Search via Contextualized Late Interaction over BERT (2020)
- Is ChatGPT Good at Search? Investigating Large Language Models as Re-Ranking Agents (2023)
- Rerankers and Two-Stage Retrieval | Pinecone
- An Overview of Cohere's Rerank Model | Cohere