이미 모인 후보의 우선순위 정하기
리랭킹은
초기 검색 단계에서 모은 후보군을 다시 평가해,
질의에 가장 관련성 높은 '최종 순서'를 확정하는 단계입니다.
🧭 전체 AI 검색 흐름에서의 위치
🔤 키워드 검색 → 🤔 의미 검색 → ⚖️ 결합 → 🎯 리랭킹 → 🧪 평가/개선
- 준비(Preparation)
- 🧩 청킹(Chunking): 원본 문서를 의미 있는 단위로 분할
- 🏷️ 메타데이터(Metadata): 출처/날짜/분류 등 부가 정보 태깅
- 🧠 임베딩(Embedding): 각 청크를 벡터로 변환(의미 공간에 배치)
- 찾기(Finding > Retrieval & Ranking)
- Retrieval(후보 만들기)
- 🔤 키워드 후보군(Sparse candidates): BM25 등 키워드 기반 검색
- 🤔 의미 후보군(Dense candidates): 벡터 유사도/거리 기반 의미 검색
- Ranking(정렬)
- ⚖️ 결합(Combination): 두 후보군을 하나의 목록으로 통합
- 🎯 리랭킹(Re-ranking): 통합 목록의 순서를 재조정해 최종 후보 확정
- Retrieval(후보 만들기)
- 전달/제어(Packaging & Control)
- 🍱 컨텍스트 포장 + 🧷 생성 인터페이스(프롬프트/가드레일)
- 리랭킹 결과를 LLM이 "안정적으로" 읽게 만드는 인터페이스
- "무엇을 넣을지(포장)" + "어떻게 쓰게 할지(규칙/가드레일)"를 한 묶음으로
- 🍱 컨텍스트 포장 + 🧷 생성 인터페이스(프롬프트/가드레일)
- 답하기 (Answering)
- ✍️ 생성: 위에서 만든 컨텍스트+규칙을 바탕으로 답변 생성
- 개선 (Improvement)
- 🧪 평가/개선: 전 단계(준비/찾기/전달/생성)를 측정하고 반복 개선
📦 리랭킹의 정의: 입력, 처리, 출력

리랭킹은 "검색을 한 번 더 한다"기보다, 이미 모인 후보의 우선순위를 다시 정하는 독립 단계입니다.
- 입력(Input): 선행 단계(키워드/의미/결합)에서 수집된 후보 목록(candidate list)과 사용자 질의
- 처리(Process): 후보들을 다시 비교해 관련도 순서를 재정렬(재평가)
- 출력(Output): 최종 순서가 확정된 후보 목록
- 이 출력은 운영 관점에서 다음 두 경로로 이어집니다.
- **실행 경로**: 다음 단계(전달/제어: 🍱 컨텍스트 포장 + 🧷 생성 인터페이스)로 넘길 준비
- **검증 경로**: 결과가 실제로 개선됐는지 확인하기 위해 🧪 평가/개선으로 연결
- 이 출력은 운영 관점에서 다음 두 경로로 이어집니다.
❓ 리랭킹이 필요한 이유
리랭킹은
검색 파이프라인을
"후보를 넓게 모으는 단계"와 "상위권 순서를 확정하는 단계"로
나눠 운영하기 위한 마지막 정렬 단계입니다
앞단에서는 관련 가능성이 있는 후보를 최대한 확보하고(후보군 확보),
리랭킹에서는 그 후보들만 다시 비교해 최종 우선순위를 정리합니다.
- ⚖️ 결합 결과 는 '단일 리스트'일 뿐, '최종 순서'가 아닐 수 있음
- ⚖️ 결합은 키워드 후보군과 의미 후보군을 하나의 목록으로 통합하는 단계입니다.
- 다만 통합된 순서가 곧바로 최적의 최종 순서라고 보장되지는 않습니다.
- 🎯 리랭킹은 이 통합 목록을 다시 읽고, 상위권의 우선순위를 정밀하게 재정렬합니다.
- 상위권(Top-K)의 정밀도가 이후 단계 품질을 좌우함
- 이후 단계는 보통 상위 일부 후보만 사용합니다.
- 따라서 상위권에 무엇이 올라오고 어떤 순서로 배치되는지가 전체 품질에 직접적인 영향을 줍니다.
- 리랭킹은 이 상위권의 정확도를 끌어올리기 위한 단계입니다.
- 후보 간 차이가 미세한 구간에서 우선순위 확정이 필요함
- 1차 검색은 후보군을 확보하는 데 강점이 있지만,
- 비슷한 후보들 사이의 '미세한 우선순위'까지 안정적으로 가르기에는 한계가 있습니다.
- 리랭킹은 바로 그 구간에서 후보들을 다시 비교해 최종 순서를 확정합니다.
⚙️ 리랭킹 수행하기
리랭킹은 보통 아래 중 하나(또는 조합)로 이뤄집니다.
- 전통적 랭킹 모델(학습된 reranker)
- 질의와 후보 문서를 함께 보고 관련도를 점수화해 재정렬합니다.
- 검색 시스템에서 오래 사용된 방식입니다.
- 크로스 인코더(Cross-encoder) 계열
- 질의와 후보를 한 번에 함께 읽고, 둘의 적합도를 직접 평가하는 구조입니다.
- 상위 후보 소수에 적용되는 경우가 많습니다.
- LLM 기반 리랭킹
- 언어 모델이 후보들을 다시 읽고, 질의 관점에서 더 적합한 순서를 판단합니다.
- 운영에서는 보통 후보 수를 제한해 적용합니다.
📌 기업들의 공개된 사례
상용 LLM 서비스의 검색/리랭킹 내부 구현은 대체로 상세 공개되지 않습니다.
다만 공개 자료에서 반복적으로 보이는 구조는
"1차 후보를 가져온 뒤, 리랭킹으로 순서를 다듬고, 상위 근거를 다음 단계 입력으로 넘기는 흐름"입니다.
RAG의 retrieval을 개선하는 방법을 설명하면서, reranking을 함께 쓰는 맥락을 명시합니다
(리랭킹이 retrieval 품질 개선에 결합될 수 있음을 공개적으로 언급).
- Claude(Anthropic) 연구 시스템 사례:
전통적 RAG의 "static retrieval(한 번에 청크를 가져오는 방식)"을 언급하고,
그와 대비되는 "multi-step search(다단계 탐색)" 구조를 설명합니다
(리트리벌이 단발로 끝나지 않을 수 있음을 공개적으로 설명).
- ChatGPT/OpenAI 사례:
RAG를 "파일 등에서 검색으로 컨텍스트를 가져와 답변 품질을 높이는 방식"으로 설명하며,
semantic search를 함께 소개합니다
(검색 결과를 생성 입력으로 쓰는 구조를 공식 문서에서 설명)
검색 결과를 cross-encoder로 rerank하는 예시를 공개하고, 이를 일반적인 사용 사례로 설명합니다
(리랭킹 구현 방식의 대표 예로 제시).
내부 구현은 비공개인 경우가 많지만, 공개된 자료만 보더라도
"후보 생성 → 리랭킹 → 상위 근거를 다음 단계로 전달"은
반복적으로 등장하는 패턴입니다.
🛡️ 운영 관점의 가드레일
리랭킹은 검색 품질을 비약적으로 향상시키지만,
실제 서비스에 적용하기 위해서는 비용, 속도, 안정성 같은 현실적인 제약 조건을
신중하게 고려한 '가드레일'이 필요합니다.
이유를 간단히 첨언하자면,
- 비용(Cost)
추가 평가 단계이므로 비용이 증가할 수 있습니다.
리랭킹 대상 후보 수에 상한을 두고 적용 범위를 제어해야 합니다. - 지연(Latency)
응답 시간이 늘어날 수 있습니다.
시간 제한과 성능 목표를 정하고, 초과 시 동작을 명확히 해야 합니다. - 폴백(Fallback Plan)
오류/시간 초과 등으로 리랭킹이 불가능할 때를 대비해,
리랭킹을 생략하고 결합 결과(또는 기본 순위)를 그대로 사용하는 대체 경로가 필요합니다. - 추적 가능성(Traceability)
리랭킹 전후 결과를 비교할 수 있어야 평가/개선이 가능합니다.
입력 후보, 최종 순서, 폴백 여부 같은 최소 정보는 추적 가능해야 합니다.
🧯 오해 바로잡기
- 오해 1: "리랭킹은 후보를 다시 찾는 단계다."
✅ 바로잡기: 리랭킹은 후보를 새로 찾지 않습니다.
이미 모인 후보를 대상으로 순서만 다시 정렬합니다. - 오해 2: "리랭킹만 넣으면 항상 좋아진다."
✅ 바로잡기: 리랭킹은 후보군의 순서를 개선할 수 있지만, 후보군 자체가 부족하면 한계가 있습니다.
후보의 품질은 선행 단계(후보 생성/결합)의 영향을 강하게 받습니다.
후보군의 '임시 순서'를 '최종 순서'로 확정하는 마지막 정렬 단계
리랭킹 이후 운영 관점에서는 두 경로가 공존합니다.
하나는 다음 단계로 넘겨 답을 만드는 실행 경로,
다른 하나는 결과가 실제로 좋아졌는지 점검해 다음 개선에 반영하는 검증 경로입니다.
이번 글의 바로 다음 글은 🧪 평가/개선입니다.
이는 '찾기(Finding)' 파트를 완전히 마무리하기 위해,
리랭킹 전후의 결과가 실제로 좋아졌는지 먼저 증명하려는 목적입니다.
검증이 끝나면,
답변을 전달하고 제어하는 과정(🍱 컨텍스트 포장 + 🧷 생성 인터페이스)을
그 다음 챕터에서 다룰 예정입니다.
요약의 레퍼런스:
1. 주요 평가 도구 및 플랫폼
• DeepEval (The LLM Evaluation Framework): https://github.com/confident-ai/deepeval
• TruLens (RAG Triad): https://www.trulens.org/
GitHub - confident-ai/deepeval: The LLM Evaluation Framework
The LLM Evaluation Framework. Contribute to confident-ai/deepeval development by creating an account on GitHub.
github.com
TruLens
Evaluation and Tracing for AI Agents
www.trulens.org
2. 핵심 연구 논문 (재순위화 및 컨텍스트 압축)
• RankGPT (Is ChatGPT Good at Search?): https://aclanthology.org/2023.emnlp-main.923.pdf
• LongLLMLingua: https://aclanthology.org/2024.acl-long.91.pdf
• EXIT (EXtractIve ContexT compression): https://aclanthology.org/2025.findings-acl.253.pdf
• RankLLM (Python Package for Reranking): https://cs.uwaterloo.ca/~jimmylin/publications/3726302.3730331.pdf
3. LLM 평가 및 벤치마크 데이터셋
• ConsJudge (Judge as A Judge): https://aclanthology.org/2025.findings-acl.301.pdf
• BEIR Benchmark: https://datasets-benchmarks-proceedings.neurips.cc/paper/2021/file/65b9eea6e1cc6bb9f0cd2a47751a186f-Paper-round2.pdf
• MS MARCO: https://arxiv.org/pdf/1611.09268
해당 글은 AI 어시스턴트로 작성되었습니다.
NotebookLM과 Chat GPT를 사용하여 작성되었습니다.
'AI - 검색의 여정 > Step 2 - 찾기' 카테고리의 다른 글
| AI 검색: 하나의 질문이 정답 후보를 찾아가는 여정 (0) | 2026.01.12 |
|---|---|
| 🧪 평가/개선(Evaluation & Improvement): 좋아졌는지 '증명'하고 다음 개선으로 연결하기 (0) | 2026.01.09 |
| ⚖️ 결합 로직: 후보군을 '공정하게' 합치는 하이브리드의 핵심 (Linear vs RRF) (1) | 2026.01.06 |
| 🤔 의미 검색(시멘틱 서치): 임베딩으로 후보군을 만드는 두 번째 축 (0) | 2026.01.05 |
| 🔤 키워드 검색(어휘 검색): 후보군을 만드는 가장 단단한 방법 (0) | 2026.01.05 |