스터디 · 2026-10-07 · 심화
하이브리드 검색과 리랭킹: 찾고 다시 줄 세우기
하이브리드 검색은 키워드 검색과 의미 검색을 함께 써서 후보를 넓게 모으고, 리랭커는 그 후보를 더 비싼 모델로 하나씩 다시 평가해 순서를 정한다. 두 단계로 나누면 정확도와 비용 사이에서 균형을 잡을 수 있어, RAG에서 근거를 찾는 기본 구조가 됐다.
- 키워드 검색(BM25)은 단어가 달라지면 놓치고, 임베딩 기반 의미 검색은 낯선 분야에서 약해질 수 있어 둘을 섞는 하이브리드 검색을 쓴다.
- 검색은 '넓고 싸게 모으기'와 '좁고 비싸게 다시 줄 세우기' 두 단계로 나뉘며, 리랭커는 두 번째 단계를 맡는다.
- BERT 리랭커는 질문과 문서를 한 번에 읽어 정확하지만 느리고, ColBERT는 문서 표현을 미리 계산해 두는 늦은 상호작용으로 속도를 높였다.
- BEIR 벤치마크는 BM25가 여전히 강한 기준선이며, 리랭킹은 정확하지만 계산 비용이 크다는 점을 보여 줬다.
- 최근에는 LLM·비전-언어 모델을 리랭커로 쓰면서 비용을 줄이는 연구가 이어지고, 검색이 좋아져도 답변 정확도는 그만큼 오르지 않는다는 보고도 나온다.
왜 필요했나: 한 가지 검색 방식만으로는 부족하다
오랫동안 문서 검색은 TF-IDF나 BM25 같은 어휘 기반(lexical) 방식이 주로 맡았다. 질문에 나온 단어가 문서에 얼마나 자주, 얼마나 드물게 나오는지를 따져 점수를 매기는 방식이다. 빠르고 튼튼하지만, BEIR 논문(2104.08663)이 짚듯 '어휘 격차(lexical gap)'라는 약점이 있다. 질문에 쓴 단어가 문서에 없으면 뜻이 같아도 찾지 못하고, 단어 순서도 고려하지 않는다.
이 약점을 메우려고 나온 것이 신경망 기반 검색이다. 문장을 숫자 벡터인 임베딩(Embedding)으로 바꿔, 뜻이 가까운 문서를 찾는 시맨틱 검색(Semantic search, 의미 검색)이 대표적이다. 그런데 BEIR가 18개 데이터셋에서 10개 검색 시스템을 비교해 보니, 학습하지 않은 새 분야(zero-shot)에서는 밀집(dense) 임베딩 검색이 오히려 BM25보다 못한 경우가 적지 않았다. 어느 한 방식이 모든 데이터셋에서 이기지도 못했다.
그래서 실무에서는 두 가지를 겹쳐 쓴다. 키워드 검색과 의미 검색이 각자 찾은 후보를 합치는 하이브리드 검색(Hybrid search)으로 놓치는 문서를 줄이고, 합쳐진 후보를 리랭커(Reranker, 재순위화 모델)로 다시 정밀하게 줄 세운다. 이 글은 이 두 단계가 왜 이렇게 나뉘었는지를 다룬다.
핵심 아이디어: 넓게 건지고, 꼼꼼히 고른다
채용 과정에 비유하면 쉽다. 지원서가 수만 장 들어오면 면접관이 전부 읽을 수 없다. 먼저 서류 필터로 조건에 맞는 사람을 넓게 추리고(1차), 남은 수십 명만 면접관이 한 명씩 깊이 본다(2차). 1차는 빠르지만 거칠고, 2차는 정확하지만 비싸다. 둘을 이어 붙이면 '전부 깊이 보는 것'에 가까운 품질을 훨씬 싼 비용으로 얻는다.
검색도 똑같다. 1차 검색기(retriever)는 수백만 문서에서 수백~수천 개 후보를 빠르게 건진다. 하이브리드 검색은 이 1차 그물을 두 겹으로 만드는 일이다. 단어가 정확히 맞는 문서는 키워드 그물이, 표현은 다르지만 뜻이 맞는 문서는 의미 그물이 건진다.
2차 리랭커는 질문과 후보 문서를 함께 읽고 '이 문서가 이 질문에 정말 답이 되는가'를 다시 판단한다. Passage Re-ranking with BERT(1901.04085)는 이 구조를 세 단계 파이프라인으로 정리했다. BM25로 약 1,000개 후보를 찾고, 더 계산이 많은 방법으로 다시 점수를 매기고, 상위 10~50개만 답을 만드는 단계로 넘긴다.
어떻게 작동하나: 질문에서 답변 근거까지
첫째, 문서를 미리 준비한다. 긴 문서는 청킹(Chunking, 문서 분할)으로 적당한 길이의 조각으로 나눈다. 같은 조각을 두 번 색인한다. 한 번은 단어 목록으로(BM25용), 한 번은 임베딩 벡터로(벡터 DB용) 저장한다.
둘째, 질문이 들어오면 두 검색기가 동시에 후보를 찾는다. BM25는 단어 일치로, 임베딩 검색은 벡터 거리로 각자 순위 목록을 만든다. 두 점수는 단위가 달라 그대로 더하기 어렵다. 그래서 흔히 점수 대신 '몇 등이었나'를 기준으로 합치는 방법을 쓴다. 상호 순위 융합(RRF, reciprocal rank fusion)은 각 목록에서 높은 순위일수록 큰 가산점을 주고 이를 더하는 방식이다. 임상 기록 질의응답 연구(2610.01324)도 PubMedBERT 밀집 검색과 BM25 결과를 가중치를 둔 RRF로 합쳤다.
셋째, 합쳐진 후보를 리랭커가 다시 채점한다. 가장 흔한 형태는 크로스 인코더(cross-encoder)다. BERT 리랭커(1901.04085)는 질문을 문장 A, 문서를 문장 B로 붙여 한 번에 모델에 넣고, 맨 앞 [CLS] 벡터로 '관련 있을 확률'을 계산한다. 질문은 최대 64토큰, 질문과 문서를 합쳐 512토큰까지만 넣는다. 후보마다 따로 확률을 구한 뒤 그 확률 순으로 다시 정렬한다.
넷째, 상위 몇 개만 LLM의 컨텍스트 윈도(Context window)에 넣어 답을 만든다. 리랭킹의 목적은 결국 한정된 자리에 가장 쓸모 있는 근거를 올리는 것이다.
발전 흐름: 정확도, 속도, 일반화, 그리고 LLM
BERT 리랭커(1901.04085, 2019): 사전학습된 BERT를 질문-문서 관련성 분류기로 파인튜닝(Fine-tuning, 미세조정)해 MS MARCO 문단 순위 과제에서 1위에 올랐다. 이전 최고 성능보다 MRR@10(정답이 몇 번째에 나오는지 보는 지표)이 상대적으로 27% 높았고, 개발 세트에서 BM25의 16.7에 비해 BERT Large는 36.5를 기록했다. 전체 학습 데이터의 2%도 안 쓰고 얻은 결과라는 점도 눈에 띈다. 다만 후보마다 질문과 문서를 통째로 거대한 모델에 넣어야 해서 비용이 크다.
ColBERT(2004.12832, 2020): 이 비용 문제를 '늦은 상호작용(late interaction)'으로 풀었다. 질문과 문서를 BERT로 따로 인코딩하고, 마지막에 가벼운 계산으로 단어 단위 유사도를 비교한다. 문서 쪽 표현을 미리 계산해 둘 수 있어 질문이 올 때 할 일이 줄어든다. BERT 기반 모델과 비슷한 정확도를 내면서 두 자릿수(100배 안팎) 빠르고, 질문당 연산량(FLOPs)은 네 자릿수 적었다. 리랭킹뿐 아니라 벡터 유사도 색인을 써서 대규모 문서 모음에서 바로 검색하는 데도 쓸 수 있다.
BEIR(2104.08663, 2021): 모델들을 18개 공개 데이터셋, 9가지 과제(사실 확인, 인용 예측, 생의학 검색 등)에서 학습 없이 평가했다. BM25는 튼튼한 기준선이었고, 리랭킹과 늦은 상호작용 모델이 평균적으로 가장 좋았지만 계산 비용이 컸다. 밀집·희소 검색은 효율적이지만 일반화에서 뒤처지는 경우가 많았다. 이 결과는 '1차는 싸게, 2차는 비싸게'라는 분업에 근거를 더한다.
RankGPT(2304.09542, 2023): ChatGPT, GPT-4 같은 생성형 LLM에게 직접 문단 순위를 매기게 했다. 적절히 지시하면 지도학습 최고 방법과 맞먹거나 더 나은 결과를 냈다. 모델이 시험 문제를 미리 봤을 가능성(데이터 오염)을 따지려고 최신 지식 기반의 NovelEval 세트를 새로 만들었다. 또 순위 매기는 능력을 작은 모델로 옮기는 '순열 증류'로, 440M 크기 모델이 BEIR에서 3B 지도학습 모델을 앞섰다.
요즘 어디로 가고 있나: 현장 검증과 비용 줄이기
첫째, 하이브리드 검색과 리랭킹을 실제 현장에서 끝까지 이어 붙여 보는 연구다. 장기 임상 기록 질의응답 연구(2610.01324)는 PubMedBERT 밀집 검색 + BM25 + 가중 RRF + MedCPT 크로스 인코더 리랭킹으로 이어지는 RAG 파이프라인을 병원 내부에 두고 평가했다. 비만 수술 환자 200명의 질문-답 1,000쌍에서 리랭킹은 상위 10개 안에 정확한 근거 조각이 들어오는 비율(Hit@10)을 46.6%에서 60.6%로, MRR을 0.2371에서 0.3252로 올렸다. 그런데 Qwen3-8B로 만든 답변의 정확도는 44.8%에서 48.6%로 오르는 데 그쳤다. 검색이 좋아진 만큼 답이 좋아지지는 않는다는 뜻이다.
둘째, 비싼 리랭커를 싸게 쓰려는 연구다. RidgeRank(2609.34192)는 문서 페이지 이미지를 다루는 멀티모달(Multimodal) 리랭커가 느리다는 문제를 다뤘다. 리랭커를 압축하면 정확도가 떨어지는데, 이때 리랭커 점수에 빠진 신호를 1차 검색기 점수에서 되찾아 오는 닫힌 형태의 융합 공식을 제안했다. 검색 점수와 리랭킹 점수를 버리지 않고 섞는다는 점에서 하이브리드의 발상을 2단계에도 적용한 셈이다. ViDoRe 2·3의 12개 데이터셋에서 전체 크로스 인코더와의 NDCG@5 차이를 1.2%p 안으로 줄이면서 최대 48배 빨랐다.
셋째, 리랭커에 넣는 입력 자체를 줄이는 시도다. RenderRank(2609.35069)는 문서 텍스트를 이미지로 그려 비전-언어 모델의 시각 토큰(Token)으로 넣는다. 리랭킹은 질문 하나에 후보를 여러 개 채점하므로, 토큰을 줄이면 그 절약이 후보 수만큼 쌓인다. BEIR의 11개 데이터셋에서 입력 토큰을 16.5~35.5% 덜 쓰면서 평균 NDCG@10 55.96을 기록해, 평가한 4B 미만 텍스트 리랭커들을 앞섰다.
한계와 쟁점
비용과 정확도의 줄다리기는 여전하다. BEIR에서 가장 정확했던 리랭킹과 늦은 상호작용 모델은 가장 비싼 축이기도 했다. 후보 수를 늘리면 정답을 놓칠 확률은 줄지만 리랭커 호출 비용은 그만큼 늘어난다. 최근 연구 상당수가 정확도를 크게 올리기보다 '비슷한 정확도를 더 싸게'를 목표로 하는 이유다.
리랭커는 1차 검색이 건진 후보 안에서만 고를 수 있다. BERT 리랭커 논문(1901.04085)도 MS MARCO의 일부 정답 문단은 BM25가 애초에 찾지 못했을 수 있다고 적었다. 1차 그물이 놓친 문서는 아무리 좋은 리랭커도 되살리지 못한다. 하이브리드 검색으로 1차 그물을 두 겹으로 짜는 이유가 여기에 있다.
평가 자체에도 함정이 있다. BEIR는 데이터셋을 만들 때 어휘 기반 검색을 주로 썼기 때문에 정답 표시에 어휘 쪽 편향이 있을 수 있고, TREC-COVID에서 빠진 정답을 직접 채워 넣자 비어휘 방식의 점수가 크게 올랐다고 보고했다. LLM 리랭커는 시험 데이터를 학습 중에 봤을 가능성도 따져야 해서 RankGPT가 NovelEval을 따로 만들었다.
마지막으로, 검색 지표가 오른다고 최종 답변이 그만큼 좋아지지는 않는다. 임상 기록 연구(2610.01324)가 그 간격을 수치로 보여 줬다. 근거를 잘 찾아 줘도 LLM이 그것을 제대로 쓰지 못하거나 환각(Hallucination)을 일으킬 수 있으므로, RAG는 검색 지표와 답변 지표를 함께 봐야 한다.
더 공부하려면
처음이라면 Passage Re-ranking with BERT(1901.04085)부터 읽는 것이 좋다. 분량이 짧고, '1차 검색 → 리랭킹 → 답변 생성' 세 단계 구조와 크로스 인코더의 입력 방식을 가장 간단하게 보여 준다.
다음으로 BEIR(2104.08663)를 읽으면 어휘·희소·밀집·늦은 상호작용·리랭킹 다섯 가지 방식이 서로 어떻게 다른지, 왜 BM25를 쉽게 버릴 수 없는지 감이 잡힌다. 하이브리드 검색을 왜 쓰는지 설명하는 데 가장 좋은 근거가 된다. 이어서 ColBERT(2004.12832)로 '정확도를 지키면서 미리 계산해 두기'라는 속도 개선 아이디어를, RankGPT(2304.09542)로 LLM을 리랭커로 쓰는 흐름과 증류를 익히면 된다.
실무 감각을 원하면 임상 기록 RAG 연구(2610.01324)가 BM25 + 밀집 검색 + RRF + 크로스 인코더의 전형적인 조합을 실제 데이터로 평가한 사례로 유용하다. 비용 문제에 관심이 있다면 RidgeRank(2609.34192)와 RenderRank(2609.35069)를 함께 보며, 하나는 점수 융합으로, 다른 하나는 입력 압축으로 비용을 줄였다는 차이를 비교해 보면 좋다.
관련 용어
참고 문헌
핵심 논문
- Passage Re-ranking with BERT (2019) arXiv 1901.04085
- ColBERT: Efficient and Effective Passage Search via Contextualized Late Interaction over BERT (2020) arXiv 2004.12832
- BEIR: A Heterogenous Benchmark for Zero-shot Evaluation of Information Retrieval Models (2021) arXiv 2104.08663
- Is ChatGPT Good at Search? Investigating Large Language Models as Re-Ranking Agents (2023) arXiv 2304.09542
최근 연구
- Evaluating Biomedical Reranking for LLM-Based Question Answering over Longitudinal Clinical Notes (2026) arXiv 2610.01324
- RidgeRank: Efficient Visual Document Reranking via Score Fusion and a Shallow Linear Readout (2026) arXiv 2609.34192
- RenderRank: Learning to Rerank Text with Compressed Visual Tokens (2026) arXiv 2609.35069
AI가 참고 문헌을 바탕으로 작성하고 검수를 거친 해설입니다. 정확한 내용은 원문을 확인해 주세요.