리랭킹 (Reranking): 빠르게 검색하고, 정밀하게 재정렬하기 (더 나은 RAG)
요약
RAG 시스템의 검색 품질을 높이기 위해 바이-인코더로 후보를 빠르게 검색하고, 크로스-인코더로 정밀하게 재정렬하는 리랭킹(Reranking) 기법을 설명합니다. 이를 통해 속도와 정확도 사이의 균형을 맞추며 답변 품질을 개선할 수 있습니다.
핵심 포인트
- 바이-인코더는 빠른 검색을, 크로스-인코더는 정밀한 재정렬을 담당함
- 넓게 검색하고 좁게 리랭킹하는 패턴이 효율적임
- 리랭킹은 RAG 품질을 높이는 가장 비용 효율적인 방법 중 하나임
- 지연 시간과 재현율 사이의 트레이드오프를 고려한 설정이 필요함
당신의 RAG 검색기(retriever)는 밀리초 단위로 50개의 후보 문서를 가져오지만, 가장 좋은 문서는 1위가 아닌 7위에 있는 경우가 많습니다. 리랭킹 (Reranking)은 더 느리지만 더 똑똑한 모델을 사용하여 순서를 바로잡습니다. 이는 RAG 품질을 높이는 가장 저렴하고 큰 승리입니다.
🥇 재정렬 과정 보기: https://dev48v.infy.uk/prompt/day14-reranking.html
두 개의 인코더, 두 개의 역할
- 바이-인코더 (Bi-encoder, 검색용): 쿼리(query)와 모든 문서를 각각 임베딩(embed)한 다음, 가장 가까운 벡터를 찾습니다. 빠르고 확장 가능하여 수백만 개를 인덱싱할 수 있습니다. 하지만 쿼리와 문서를 함께 보지는 않기 때문에 순위가 거칠게(coarse) 매겨집니다.
- 크로스-인코더 (Cross-encoder, 리랭킹용): 쿼리와 문서 하나를 모델에 함께 입력하여 실제 관련성 점수(relevance score)를 출력합니다. 정확하지만, 전체 코퍼스(corpus)를 대상으로 실행하기에는 너무 느립니다.
패턴: 넓게 검색하고, 좁게 리랭킹하기
바이-인코더 (bi-encoder)를 사용하여 상위 약 50개를 저렴하게 검색한 다음, 오직 그 50개의 (쿼리, 문서) 쌍에 대해서만 크로스-인코딩 (cross-encode)을 수행합니다. 그 후 새로운 점수에 따라 다시 정렬하고, 상위 5개를 LLM에 전달합니다. 진정으로 가장 좋은 문서가 1위로 올라오며, 답변의 품질이 눈에 띄게 향상됩니다.
트레이드오프 (Trade-off)
리랭킹 (Reranking)은 쿼리당 지연 시간(latency)과 비용을 추가하지만, 이는 오직 소수의 후보 목록(shortlist)에 대해서만 발생합니다. 재현율 (recall)과 속도 사이의 균형을 맞추기 위해 "K개 검색, N개 유지" 설정을 조정하세요.
🔨 전체 파이프라인 (벡터 검색 top-k → 크로스-인코더 리랭킹 → top-n → LLM)은 다음 페이지에서 확인 가능합니다: https://dev48v.infy.uk/prompt/day14-reranking.html
PromptFromZero의 일부입니다. 🌐 https://dev48v.infy.uk
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기