"RAG 핵심 학습 (22/26) — Search Confidence와 Corrective RAG"

RAG가 실패하는 큰 이유는 "잘못 찾은 것을 잘못 찾았다고 모른 채" 답을 생성하는 데 있다.

Search Confidence는 현재 검색 결과를 얼마나 믿을 수 있는지 추정하는 단계다. Corrective RAG는 confidence가 낮을 때 재검색, query rewrite, 다른 retriever, 웹 fallback 같은 보정 동작을 수행하는 구조다. 이번 글은 retrieval failure를 "그냥 틀린 답"으로 끝내지 않고 교정 가능한 상태로 바꾸는 방법을 다룬다.


0. Prerequisites

  • 21편 adaptive top-K
  • 19편 query routing
  • 18편 query rewrite

1. 학습 목표

  1. search confidence가 무엇인지 설명한다.
  2. confidence가 낮을 때 어떤 corrective action을 취할 수 있는지 안다.
  3. corrective RAG가 왜 중요한지 이해한다.
  4. 언제 멈추고 언제 재시도할지 기준을 생각할 수 있다.

2. 핵심 요약

RAG는 검색 품질이 낮아도 그 위에 답을 생성해 버리기 쉽다. 그래서 검색 결과의 확신도를 추정하고, 낮으면 재검색이나 경로 변경을 수행하는 corrective loop가 필요하다. confidence 신호는 score gap, dense/sparse agreement, source authority, query type, answer-grounding consistency 등이 될 수 있다. Corrective RAG는 한 번의 실패를 즉시 hallucination으로 연결하지 않고, "다시 찾아 볼 기회" 를 만든다는 점에서 중요하다.


3. 직관 — 애매한 top-1을 그대로 답으로 쓰면 생기는 일

질문: "현재 외부 공유 예외 승인권자는 누구인가?"

검색 결과 top-3: 1. 2023 정책 문서 2. 2022 회의록 3. 2024 교육 자료

셋 다 관련은 있지만 "현재"와 "정책 원문" 기준으로는 애매하다. 이 상태에서 바로 답하면 위험하다. confidence는 이런 애매함을 감지해야 한다.


4. 정의 — confidence와 corrective action

용어 정의
Search Confidence 현재 검색 결과를 신뢰할 수 있는 정도
Corrective RAG confidence가 낮을 때 검색을 수정하거나 재실행하는 구조
Fallback 대체 collection, 대체 retriever, 외부 검색 등 2차 경로
Abstention 답하지 않고 "근거 부족"을 선언하는 선택

5. 메커니즘 — confidence를 어디서 읽을까

대표 신호:

  1. top-1과 top-2 점수 차이
  2. dense와 sparse가 같은 문서를 지지하는가
  3. 상위 문서의 source authority가 높은가
  4. query type에 필요한 filter가 제대로 적용됐는가
  5. 생성 답변이 retrieved context와 잘 맞는가

confidence는 단일 숫자라기보다 여러 신호의 조합이다.


6. 원리 워크스루 — corrective loop의 최소 구조

6.1 confidence 계산 예시

def estimate_confidence(score_gap, overlap, has_authoritative_source):
    score = 0.4 * score_gap + 0.3 * overlap + 0.3 * int(has_authoritative_source)
    return min(1.0, score)

6.2 corrective action

if confidence < 0.4:
    query = rewrite_query(query)
    result = hybrid_search(query, top_k=12)
elif confidence < 0.6:
    result = rerank_more_candidates(query, top_k=20)
else:
    result = result

6.3 마지막 선택지: abstention

if confidence < 0.2:
    return "근거가 충분하지 않아 현재는 확정적으로 답할 수 없습니다."

자기 설명: corrective RAG가 단순한 "재검색 버튼"이 아닌 이유를 한 문장으로 설명해 보라.


7. 변형과 사례

7.1 Rewrite-based Correction

질문이 너무 짧거나 표현이 어긋났을 때 18편의 rewrite를 다시 시도한다.

7.2 Route-based Correction

잘못된 collection으로 갔다고 판단되면 19편의 routing을 다시 수행한다.

7.3 Abstain-first Pattern

고위험 도메인에서는 애매한 답을 억지로 하지 않고, 근거 부족을 먼저 선언하는 전략이 더 낫다.


8. 한계와 실패 양상

8.1 confidence 추정이 틀릴 수 있다

높은 점수라도 틀릴 수 있고, 낮은 점수라도 맞을 수 있다. 그래서 confidence는 항상 경험적으로 검증돼야 한다.

8.2 corrective loop가 너무 길면 latency가 폭증한다

재검색, rerank, rewrite를 반복하면 사용자 경험이 나빠진다. 재시도 횟수 상한이 필요하다.

8.3 correction이 같은 오류를 반복할 수 있다

collection 자체가 잘못됐거나 source authority 설계가 틀리면 correction도 같은 공간 안에서만 맴돈다.

8.4 다음 단계 — 단일 문서 그래프를 넘는 관계 검색

confidence와 correction 이후에는 더 복잡한 연결 관계를 다루고 싶어진다. 23편은 graph RAG다.


8.5 입문자가 자주 빠지는 함정 5선

# 함정 증상 빠른 점검
1 confidence 없이 바로 생성 hallucination 증가 score/authority 기록
2 correction 무한 반복 latency 폭증 retry limit 설정
3 abstention 없음 근거 부족 답변 강행 low-confidence fallback 마련
4 correction 원인 미분석 같은 실패 반복 route/rewrite trace 비교
5 source authority 미반영 약한 출처 우선 authoritative source 규칙 추가

9. 정리된 결론 — 보지 않고 답해 보라

Q1. search confidence의 목적은?

정답 현재 검색 결과를 얼마나 믿을 수 있는지 판단하는 것이다.
애매한 검색 결과 위에 바로 답을 생성하면 hallucination 위험이 커지기 때문이다.

Q2. corrective RAG가 하는 일은?

정답 confidence가 낮을 때 재검색, rewrite, reroute, abstain 같은 보정 행동을 수행하는 것이다.
한 번의 retrieval failure를 바로 최종 실패로 만들지 않기 위해서다.

Q3. abstention이 중요한 이유는?

정답 근거가 부족한데도 답을 억지로 하지 않게 해 주기 때문이다.
특히 고위험 도메인에서 잘못된 자신감이 더 위험하기 때문이다.


Cheat Sheet — 이 편의 식·정의 1페이지

정의 - Search Confidence: 검색 결과 신뢰도 - Corrective RAG: 저신뢰 검색의 보정 루프 - Abstention: 근거 부족 시 답변 보류

최소 코드

if confidence < 0.4:
    result = rewrite_and_search(query)

언제 무엇을 | 상황 | 행동 | |---|---| | 표현 모호 | rewrite | | route 의심 | reroute | | 후보 애매 | 더 깊은 rerank | | 근거 매우 약함 | abstain |


참고 자료

1차 자료

  • Yan, X. et al. Corrective Retrieval Augmented Generation. 2024.

보조 자료

  • 사용자 노트 19장 confidence / corrective

다음 편으로 이어지는 흐름

이제 문서 한 조각씩 찾는 구조를 넘어, 개체와 관계를 따라가며 찾는 방식으로 넘어갈 수 있다. 다음 23편은 graph RAG다.

댓글

이 블로그의 인기 게시물

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

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

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