20분
Advanced RAG 패턴: Self-RAG와 CRAG 비교
Day 4: 프로덕션 RAG
Advanced RAG 패턴: Self-RAG와 CRAG 비교
RAG 심화 > Day 4: 프로덕션 RAG
학습 목표
Self-RAG와 Corrective RAG(CRAG)의 차이점을 명확히 이해한다 제조 현장에서 두 패턴을 언제 사용해야 하는지 결정할 수 있다 Adaptive RAG로 쿼리 복잡도에 따라 전략을 선택하는 방법을 안다
Advanced RAG 패턴 비교
Self-RAG: 스스로 판단하는 RAG
[Self-RAG 흐름]
1. 질문 수신
2. 검색 필요성 판단 (ISREL 토큰)
→ 필요 없음: LLM 자체 지식으로 답변
→ 필요: 문서 검색
3. 검색된 문서 관련성 평가 (ISSUP 토큰)
4. 답변 생성
5. 답변 충실도 검증 (ISCRIT 토큰)
6. 최종 답변 선택
Self-RAG 특성:
- 모델이 검색 여부를 스스로 결정
- 각 단계에서 자체 평가 → 할루시네이션 감소
- 단점: LLM 호출 횟수 증가 (느리고 비용 높음)
CRAG: 검색 결과를 교정하는 RAG
[CRAG 흐름]
1. 질문 수신 + 문서 검색
2. 관련성 평가 (각 문서)
→ 관련: 핵심 정보 추출 (Knowledge Refinement)
→ 무관: 웹 검색 또는 쿼리 재작성
→ 혼합: 두 전략 결합
3. 교정된 지식으로 답변 생성
CRAG 특성:
- 검색 실패 시 대안 전략 자동 실행
- 관련 없는 문서를 필터링하여 품질 향상
- 단점: 외부 검색 API 필요 (또는 내부 대안 검색)
제조 현장 적용 가이드
| 상황 | 권장 패턴 | 이유 |
|---|---|---|
| 안전 지침 질의 | Self-RAG | 검색 품질 자체 검증 필수 |
| 에러 코드 진단 | CRAG | 코드 없으면 다른 문서로 대체 |
| 일반 설비 정보 | 기본 RAG | 빠른 응답 우선 |
| 복잡한 고장 분석 | Adaptive | 복잡도에 따라 전략 선택 |
Adaptive RAG: 최적 전략 선택기
def adaptive_rag(question):
complexity = classify_complexity(question)
if complexity == "simple": # 규격 조회 등
return basic_rag(question)
elif complexity == "complex": # 복합 고장 진단
return self_rag(question)
elif complexity == "safety": # KOSHA 관련
return self_rag(question, strict=True)
else: # 불명확
return crag(question) # 폴백 포함
핵심: 하나의 패턴만 고집하지 말고, 쿼리 유형에 따라 최적 전략을 선택하라.
AI로 학습하기 — 꿀팁
🤖Self-RAG vs CRAG 의사결정 플로우차트AI 학습 팁
제조 현장 쿼리에서 Self-RAG와 CRAG 중 어떤 패턴을 선택할지 결정하는 플로우차트를 만들면 설계 판단이 명확해집니다.
제조 설비 유지보수 RAG 시스템에서 Self-RAG와 CRAG(Corrective RAG)를 선택하는 의사결정 플로우차트를 마크다운 텍스트 다이어그램(ASCII 또는 Mermaid)으로 만들어줘. 포함할 분기 조건: (1) 검색된 컨텍스트 신뢰도 점수 임계값, (2) 쿼리 유형(안전 절차 vs 일반 정보), (3) 컨텍스트 개수 부족 여부, (4) 외부 검색 허용 여부(내부망 제약). 각 분기 결과에서 어떤 행동(재검색/답변생성/거절/외부검색)을 취하는지 명시하고, 이 플로우를 LangGraph로 구현할 때 노드 이름도 함께 적어줘.
이 팁이 도움이 됐나요?
핵심 포인트
- • Self-RAG는 각 단계에서 자체 평가하여 할루시네이션을 줄이지만 속도가 느리다
- • CRAG는 검색 실패 시 대안 전략으로 품질을 유지한다
- • Adaptive RAG는 쿼리 복잡도에 따라 기본/Self/CRAG 중 최적 전략을 선택한다