"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. 학습 목표

  1. 고정 top-K의 한계를 설명한다.
  2. adaptive top-K가 필요한 상황을 안다.
  3. conditional reranking의 의미를 이해한다.
  4. 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. 메커니즘 — 언제 더 깊게 찾고, 언제 멈출까

보통 다음 신호를 본다.

  1. query type이 복잡한가
  2. top-1과 top-2 score gap이 큰가
  3. dense와 sparse가 같은 문서를 지지하는가
  4. 현재 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다.

댓글

이 블로그의 인기 게시물

"LLM 핵심 학습 (1/6) — 기본: 토큰화·임베딩·어텐션·위치 인코딩"

"LLM 핵심 학습 (2/6) — 파인튜닝: LoRA·QLoRA·증류·Adapter"

"ML 기초 학습 (1/9) — 머신러닝과 sklearn: 학습의 좌표계"