3분
Advanced RAG 패턴: Self-RAG와 CRAG 비교
Day 4: 프로덕션 RAG
Advanced RAG 패턴: Self-RAG와 CRAG 비교
RAG 심화 > Day 4: 프로덕션 RAG
학습 목표
- Self-RAG의 네 토큰(Retrieve·ISREL·ISSUP·ISUSE)이 각각 무엇을 판단하는지 구분한다
- Self-RAG와 Corrective RAG(CRAG)의 차이점을 명확히 이해한다
- 제조 현장에서 두 패턴을 언제 사용해야 하는지 결정할 수 있다
- Adaptive RAG에서 주제 축과 복잡도 축을 분리해 전략을 선택하는 방법을 안다
Advanced RAG 패턴 비교
Self-RAG: 스스로 판단하는 RAG
원논문(Asai et al., 2023)의 반영 토큰은 Retrieve · ISREL · ISSUP · ISUSE 네 개다.
이 네 이름을 그대로 쓴다. 오늘 만드는 SelfRAG 클래스의 메서드 이름과도 같다.
[Self-RAG 흐름]
1. 질문 수신
2. 검색 필요성 판단 (Retrieve 토큰)
→ No: LLM 자체 지식으로 답변
→ Yes: 문서 검색
3. 검색된 문서의 관련성 평가 (ISREL 토큰)
→ 관련 없음: 쿼리 수정 후 재검색
4. 답변 생성
5. 답변이 컨텍스트에 뒷받침되는지 검증 (ISSUP 토큰)
→ 뒷받침 안 됨: 답변 재생성
6. 답변이 질문에 유용한지 평가 (ISUSE 토큰, 1~5점)
7. 최종 답변 선택이름을 헷갈리지 말 것. ISREL 은 「검색이 필요한가」가 아니라 「검색된 문서가 관련있는가」이고, 답변의 충실도는 ISSUP 이 맡는다.
ISCRIT이라는 토큰은 없다. 원논문은 ISREL·ISSUP·ISUSE 셋을 묶어 critique 토큰이라 부르는데, 그 총칭을 개별 토큰 이름으로 쓰면 안 된다.
Self-RAG 특성:
- 모델이 검색 여부를 스스로 결정
- 각 단계에서 자체 평가 → 할루시네이션 감소
- 단점: LLM 호출 횟수 증가 (느리고 비용 높음)
CRAG: 검색 결과를 교정하는 RAG
[CRAG 흐름]
1. 질문 수신 + 문서 검색
2. 관련성 평가 (각 문서)
→ 관련: 핵심 정보 추출 (Knowledge Refinement)
→ 무관: 웹 검색 또는 쿼리 재작성
→ 혼합: 두 전략 결합
3. 교정된 지식으로 답변 생성CRAG 특성:
- 검색 실패 시 대안 전략 자동 실행
- 관련 없는 문서를 필터링하여 품질 향상
- 단점: 외부 검색 API 필요 (또는 내부 대안 검색)
제조 현장 적용 가이드
| 상황 | 권장 패턴 | 이유 |
|---|---|---|
| 안전 지침 질의 | Self-RAG | 검색 품질 자체 검증 필수 |
| 에러 코드 진단 | CRAG | 코드 없으면 다른 문서로 대체 |
| 일반 설비 정보 | 기본 RAG | 빠른 응답 우선 |
| 복잡한 고장 분석 | Adaptive | 복잡도에 따라 전략 선택 |
Adaptive RAG: 최적 전략 선택기
복잡도와 주제는 서로 다른 축이다. 「안전」은 복잡도가 아니라 주제 분류이므로 복잡도 분기 안에 섞어 넣으면 안 된다. 오늘 코드 태스크가 둘을 따로 처리하는 이유다.
def adaptive_rag(question):
# 축 1: 주제 — 안전 질의는 복잡도와 무관하게 검색을 강제한다
if is_safety_query(question): # KOSHA, 보호구, 유해물질 …
return self_rag(question, strict=True)
# 축 2: 복잡도
complexity = classify_complexity(question)
if complexity == "simple": # 일반 개념·정의, 검색 불필요
return llm_direct(question)
elif complexity == "standard": # 규격 조회, 에러 코드 — 단순 RAG
return basic_rag(question)
else: # complex — 비교·분석, 분해 후 다중 검색
return self_rag(question)
복잡도 세 값의 뜻은 오늘 코드 태스크의 QueryComplexity 와 같다.
| 값 | 뜻 | 예 |
|---|---|---|
| SIMPLE | 일반 개념·정의, 검색 불필요 | "OEE란?", "BM25란?" |
| STANDARD | 특정 장비·규격·절차 조회 | "CNC-M500 주축 공차는?" |
| COMPLEX | 비교·분석·복합 질문 | "CNC-M500과 SPN-200 사양 비교" |
핵심: 하나의 패턴만 고집하지 말고, 쿼리 유형에 따라 최적 전략을 선택하라. 그리고 「무엇으로 나누는가」의 축을 섞지 마라.
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의 반영 토큰은 Retrieve·ISREL·ISSUP·ISUSE 넷이다. ISCRIT 이라는 토큰은 없다
- • Self-RAG는 각 단계에서 자체 평가하여 할루시네이션을 줄이지만 LLM 호출이 늘어 느리다
- • CRAG는 검색 실패 시 대안 전략으로 품질을 유지한다
- • Adaptive RAG는 주제(안전 여부)와 복잡도를 서로 다른 축으로 두고 전략을 고른다