AI가 자료를 검색했는데 엉뚱한 결과가 나올 때가 있어요. 이 방식은 그런 상황을 자동으로 감지하고 교정합니다. 마치 내비게이션이 잘못된 길로 안내하면 자동으로 경로를 다시 계산하는 것과 똑같아요.
검색 결과를 가져온 뒤 "이 자료가 질문과 정말 관련이 있나?" 점수를 매겨봅니다. 점수가 높으면 그대로 사용하고, 낮으면 "이건 쓸모없다"고 판단해서 다른 방법으로 다시 찾아요.
예를 들어, "2026년 최저임금"을 물었는데 2024년 자료만 나왔다면, 이 시스템은 "이건 오래된 정보라 부정확하다"고 판단하고 인터넷에서 최신 정보를 다시 검색합니다. 의료 상담 AI에서 특히 중요합니다. 잘못된 건강 정보를 제공하면 위험하니까요. 금융 상품 추천 서비스에서도 엉뚱한 상품 정보를 걸러내는 안전장치로 활용됩니다.
📚 선수학습: 이 내용을 이해하려면 RAG (Retrieval-Augmented Generation)와 Self RAG를 먼저 읽으면 좋습니다.
**Corrective RAG(CRAG)**는 Yan et al. (2024)이 제안한 방법으로, 검색된 문서의 품질을 **경량 평가 모델(retrieval evaluator)**로 판단하고, 품질이 낮을 경우 **웹 검색으로 폴백(fallback)**하는 자기 교정 메커니즘이다. Self-RAG가 리플렉션 토큰으로 자체 평가하는 것과 달리, CRAG는 별도의 평가 모델을 사용하여 더 명확한 교정 경로를 제공한다.
평가 모델은 각 문서의 관련성을 세 등급으로 분류한다:
분류 결과에 따라 세 가지 **교정 행동(corrective action)**이 수행된다:
검색된 문서 {d₁, d₂, ..., dₖ}
│
┌────┴────┐
▼ ▼
평가 모델 (각 문서별)
│
├─ Correct (하나라도 Correct) ──▶ 지식 정제(Knowledge Refinement)
│ └─ 세분화 → 필터링 → 재조합
│
├─ Incorrect (모두 Incorrect) ──▶ 웹 검색 폴백
│ └─ 쿼리 재작성 → 웹 검색 → 결과 통합
│
└─ Ambiguous (혼재) ──▶ 지식 정제 + 웹 검색 결합
└─ 두 소스의 컨텍스트를 병합
│
▼
LLM 생성 → 답변
지식 정제(Knowledge Refinement) 과정은 검색된 문서를 더 작은 단위(knowledge strip)로 분해한 뒤, 각 단위의 관련성을 재평가하여 노이즈를 제거한다:
여기서 는 연결(concatenation), 는 관련성 임계값1이다.
CRAG는 Self-RAG와 함께 자기 교정 RAG 카테고리에 속하지만, 접근 방식이 다르다:
| 특성 | Self-RAG | CRAG |
|---|---|---|
| 평가 방식 | 리플렉션 토큰 (내재적) | 별도 평가 모델 (외재적) |
| 교정 방식 | 후보 답변 선택 | 소스 교체 (웹 폴백) |
| 파인튜닝 필요 | Yes (특수 토큰 학습) | No (플러그인 방식) |
| 웹 검색 통합 | 없음 | 핵심 기능 |
벤치마크 결과:
| 벤치마크 | 표준 RAG | Self-RAG | CRAG |
|---|---|---|---|
| PopQA | 50.8 | 54.9 | 56.2 |
| Biography | 62.3 | 68.1 | 71.4 |
| PubHealth | 65.7 | 72.4 | 73.8 |
특히 지식이 빠르게 변하는 도메인(뉴스, 인물 정보)에서 웹 검색 폴백의 효과가 두드러진다.
장점:
한계:
bge-reranker 또는 NLI 모델(cross-encoder/nli-deberta-v3-base)을 관련성 평가기로 활용관련성 임계값(relevance threshold) 는 문서 조각이 컨텍스트에 포함될 최소 관련성 점수다. 보통 0.5~0.7 범위에서 설정한다. ↩
Perplexity