"RAG 핵심 학습 (21/26) — Adaptive Top-K와 Conditional Reranking"
쉬운 질문에 20개 문서를 늘어놓는 것도 낭비고, 어려운 질문에 3개만 주는 것도 낭비다.
Adaptive Top-K는 질문마다 검색 깊이를 다르게 두는 전략이다. Conditional Reranking은 후보가 충분히 애매할 때만 reranker를 켜는 전략이다. 둘의 공통 목적은 품질을 유지하면서 비용과 latency를 아끼는 것이다.
0. Prerequisites
- 13편 reranker
- 20편 dynamic weighting
- 16편 실험 자동화
1. 학습 목표
- 고정 top-K의 한계를 설명한다.
- adaptive top-K가 필요한 상황을 안다.
- conditional reranking의 의미를 이해한다.
- token budget과 latency 사이의 trade-off를 설명한다.
2. 핵심 요약
모든 질문에 같은 top-K를 쓰면 쉬운 질문에는 과회수, 어려운 질문에는 과소회수가 생긴다. Adaptive Top-K는 query type, retrieval confidence, score gap을 보고 K를 조정한다. Conditional Reranking은 후보가 충분히 명확할 때 reranker를 생략하고, 애매할 때만 rerank를 수행한다. 핵심은 비용 절감이 아니라 질문 난이도에 맞는 검색 깊이 제어다.
3. 직관 — 쉬운 질문과 어려운 질문의 차이
-
쉬운 질문: "PR-2024-Q3 보고서 결론?"
exact match가 강하므로 top-3만으로도 충분할 수 있다. -
어려운 질문: "외부 공유 예외와 법무 검토의 관계는?"
여러 문서를 함께 봐야 하므로 top-10 이상이 필요할 수 있다.
고정 K는 이 차이를 반영하지 못한다.
4. 정의 — 깊이 제어의 핵심 용어
| 용어 | 정의 |
|---|---|
| Adaptive Top-K | 질문별로 검색 후보 수 K를 조정하는 방식 |
| Conditional Reranking | 조건이 맞을 때만 reranker 실행 |
| Token Budget | 생성 단계에 투입 가능한 총 문맥 토큰 예산 |
| Confidence Threshold | 추가 검색이나 rerank 여부를 정하는 임계값 |
5. 메커니즘 — 언제 더 깊게 찾고, 언제 멈출까
보통 다음 신호를 본다.
- query type이 복잡한가
- top-1과 top-2 score gap이 큰가
- dense와 sparse가 같은 문서를 지지하는가
- 현재 context 길이가 token budget을 넘는가
이 네 신호로 K와 rerank 여부를 조정할 수 있다.
6. 원리 워크스루 — 간단한 adaptive policy
6.1 top-K 결정
def choose_top_k(query_type, confidence):
if query_type == "comparison":
return 12
if confidence > 0.8:
return 4
if confidence < 0.4:
return 15
return 8
6.2 조건부 reranking
def should_rerank(confidence, candidate_count):
return confidence < 0.75 and candidate_count >= 5
6.3 token budget와 연결
if total_context_tokens > 3000:
top_k = min(top_k, 5)
자기 설명: adaptive top-K가 단순 비용 절감 기능이 아닌 이유를 한 문장으로 설명해 보라.
7. 변형과 사례
7.1 Confidence-based Top-K
검색기가 이미 매우 확신 있을 때는 작은 K로 끝내고, 확신이 약할 때만 더 넓게 본다.
7.2 Query-type Based Top-K
비교형과 절차형은 더 많은 문서가 필요하고, 고유명사형은 적은 문서로 충분한 경우가 많다.
7.3 Conditional Reranking
고유명사형 질문에서 sparse top-1이 압도적이면 reranker를 건너뛸 수 있다. 반대로 hybrid 결과가 뒤섞이면 reranker를 켠다.
8. 한계와 실패 양상
8.1 confidence 추정이 잘못되면 깊이 제어도 잘못된다
잘못된 자신감은 과소회수나 과도한 생략으로 이어질 수 있다.
8.2 작은 K가 항상 빠른 답을 보장하지는 않는다
K를 줄였다가 후속 재검색이 잦아지면 오히려 전체 latency가 늘 수 있다.
8.3 budget 중심으로만 최적화하면 품질이 떨어진다
비용 최적화가 과도해지면 필요한 근거 자체를 잘라낼 수 있다.
8.4 다음 단계 — 검색 자체의 확신을 측정해야 한다
이제 자연스럽게 남는 질문은 "지금 검색 결과를 얼마나 믿을 수 있나"다. 22편은 search confidence와 corrective RAG를 다룬다.
8.5 입문자가 자주 빠지는 함정 5선
| # | 함정 | 증상 | 빠른 점검 |
|---|---|---|---|
| 1 | 모든 질문에 같은 K | 과회수/과소회수 혼재 | 유형별 top-K 실험 |
| 2 | reranker 항상 켬 | latency 상승 | 조건부 실행 규칙 추가 |
| 3 | token budget 미반영 | context overflow | budget 계산 로그화 |
| 4 | confidence 정의 모호 | 정책 흔들림 | threshold 기준 문서화 |
| 5 | 온라인 검증 없이 rollout | 체감 품질 악화 | shadow mode 검증 |
9. 정리된 결론 — 보지 않고 답해 보라
Q1. adaptive top-K의 목적은?
정답 질문 난이도와 검색 확신도에 맞춰 회수 깊이를 조정하는 것이다.
왜 모든 질문이 같은 양의 근거를 필요로 하지 않기 때문이다.
Q2. conditional reranking은 언제 유용한가?
정답 후보가 명확할 때는 건너뛰고, 애매할 때만 정밀 정렬하고 싶을 때다.
왜 비용과 latency를 줄이면서도 필요한 경우 정밀도를 확보할 수 있기 때문이다.
Q3. adaptive top-K가 실패할 수 있는 핵심 이유는?
정답 confidence 추정 자체가 틀릴 수 있기 때문이다.
왜 잘못된 확신은 더 적은 근거 회수로 이어질 수 있다.
Cheat Sheet — 이 편의 식·정의 1페이지
정의 - Adaptive Top-K: 질문별 후보 수 조정 - Conditional Reranking: 조건부 재정렬 - Token Budget: 생성에 허용된 문맥 토큰 한도
최소 코드
top_k = choose_top_k(query_type, confidence)
언제 무엇을 | 상황 | 정책 | |---|---| | 고유명사형 + high confidence | 작은 K | | 비교형 / 절차형 | 큰 K | | 후보 애매 | reranker 실행 |
참고 자료
보조 자료
- 사용자 노트 18장 adaptive top-k
다음 편으로 이어지는 흐름
적응적으로 더 찾을지 덜 찾을지 결정하려면, 먼저 검색 결과의 확신도를 읽어야 한다. 다음 22편은 search confidence와 corrective RAG다.
댓글
댓글 쓰기