개요
검색 결과를 LLM에 전달한 이후 에 수행하는 품질 개선 기법들입니다. 환각(Hallucination)을 줄이고 답변의 신뢰성을 높이는 데 핵심적인 역할을 합니다. 아래 표는 주요 후처리 전략을 비교합니다.| 전략 | 설명 | ML 모델 | Databricks 지원 | 환각 감소 효과 |
|---|---|---|---|---|
| Self-RAG | LLM이 스스로 검색 관련성, 답변 충실도, 질문 충족도를 평가하고 반복. 자기 교정 메커니즘 | LLM | ✅ | 높음 |
| Corrective RAG (CRAG) | 검색 결과를 “정확/모호/틀림”으로 분류. 틀리면 외부 웹 검색으로 보완 | LLM/Classic | ✅ | 높음 |
| FLARE | 생성 중 확신도가 낮은 부분에서 자동으로 추가 검색 수행. 긴 문서 작업에 효과적 | LLM | ✅ | 중간 |
| 출력 가드레일 | JSON 포맷 검증, 보안 가이드라인 위반 체크, 편향성/욕설 필터링 | Classic | ✅ | - |
Self-RAG (자기 교정 RAG)
Self-RAG는 2023년 워싱턴대학교에서 발표한 기법(논문: “Self-RAG: Learning to Retrieve, Generate, and Critique through Self-Reflection”)으로, LLM이 스스로 검색 결과의 관련성과 답변의 품질을 평가 하고, 필요하면 재검색하는 반복적 자기 교정 프로세스입니다. 왜 필요한가? 기본 RAG는 검색 결과를 무조건 신뢰하고 답변을 생성합니다. 그러나 검색 결과가 질문과 무관하거나, LLM이 검색 결과에 없는 내용을 지어내는(환각) 경우가 빈번합니다. Self-RAG는 이 두 가지 문제를 생성 후 자체 검증 을 통해 해결합니다. 동작 원리 (4단계 반복 루프):- 검색(Retrieve): 질문에 대해 관련 문서를 검색합니다
- 관련성 평가(Relevance Check): 검색된 문서가 질문에 실제로 관련 있는지 LLM이 판단합니다. 관련 없으면 쿼리를 재작성하여 1단계로 돌아갑니다
- 답변 생성(Generate): 관련 문서를 기반으로 답변을 생성합니다
- 충실도 평가(Faithfulness Check): 생성된 답변이 검색 결과에 근거 하는지 검증합니다. 검색 결과에 없는 정보가 답변에 포함되어 있으면 환각으로 판단하고, 재생성하거나 반복합니다
Corrective RAG (CRAG)
Corrective RAG는 2024년 발표된 기법(논문: “Corrective Retrieval Augmented Generation”)으로, 검색 결과를 “정확/모호/틀림” 3단계로 분류하고, 결과가 부정확하면 외부 웹 검색으로 보완 하는 전략입니다. 왜 필요한가? 기본 RAG와 Self-RAG는 내부 벡터 DB에서만 검색합니다. 내부 문서에 답이 없는 질문이 들어오면, 관련 없는 문서를 억지로 참고하여 부정확한 답변을 생성하게 됩니다. CRAG는 검색 결과의 품질을 먼저 진단 하고, 내부 검색으로 충분하지 않으면 외부 소스(웹 검색 등)로 자동 전환합니다. 왜 3단계 분류인가?- CORRECT(정확): 검색 결과가 질문에 대한 답을 직접 포함 → 그대로 사용
- AMBIGUOUS(모호): 부분적으로 관련 있지만 불완전 → 내부 검색 결과 + 외부 검색 결과를 결합 하여 보완
- INCORRECT(틀림): 질문과 무관하거나 잘못된 정보 → 내부 결과를 폐기 하고 외부 검색으로 완전 대체
FLARE (Forward-Looking Active REtrieval)
FLARE는 2023년 CMU에서 발표한 기법(논문: “Active Retrieval Augmented Generation”)으로, LLM이 답변을 생성하는 도중에 확신도가 낮은 부분을 감지하고, 해당 부분에 대해 추가 검색을 자동 수행 하는 기법입니다. 특히 긴 문서를 생성할 때 효과적입니다. 왜 필요한가? Self-RAG와 CRAG는 답변을 생성한 후 전체를 평가합니다. 그러나 긴 답변을 생성할 때, 앞부분은 정확하지만 뒷부분에서 환각이 발생하는 경우가 흔합니다. FLARE는 답변을 문장 단위로 생성하면서 실시간으로 확신도를 모니터링하고, 불확실한 부분이 나타나면 즉시 추가 검색을 수행합니다. “확신도”는 어떻게 측정하는가? 원래 논문에서는 LLM이 생성하는 각 토큰의 생성 확률(logit probability) 을 관찰합니다. 특정 토큰의 확률이 임계값(보통 0.5) 아래로 떨어지면, 해당 문장을 “확신도 낮음”으로 판정합니다. 아래 구현 예시에서는 이를 단순화하여 LLM에게 직접 불확실한 부분을 표시하도록 프롬프트합니다. 동작 흐름:- LLM이 답변을 문장 단위로 생성합니다
- 각 문장 생성 시 토큰 확률을 확인합니다
- 확률이 낮은(불확실한) 문장이 발견되면, 해당 문장의 내용으로 추가 검색 쿼리 를 생성합니다
- 추가 검색 결과를 컨텍스트에 추가하고, 해당 문장을 재생성합니다
- 이 과정을 답변이 완성될 때까지 반복합니다
출력 가드레일
왜 필요한가? RAG 시스템이 정확한 답변을 생성하더라도, 그 답변이 안전하고 적절한 형태 로 사용자에게 전달되는지는 별도로 검증해야 합니다. 답변에 개인정보(PII)가 포함되어 있거나, 보안 가이드라인을 위반하거나, 출처 없이 단정적으로 주장하는 경우가 있을 수 있습니다. 출력 가드레일은 LLM이 아닌 규칙 기반(Classic ML/정규식) 으로 동작하므로 빠르고 결정적(deterministic)이며, 환각이나 판단 오류가 없습니다. 주요 검증 항목:- PII 감지/마스킹: 주민등록번호, 이메일, 전화번호 등 개인정보를 정규식으로 탐지하여 자동 마스킹
- 출처 인용 확인: 답변에 근거 문서에 대한 출처가 명시되어 있는지 확인
- 유해 콘텐츠 필터: 편향, 차별, 욕설 등 부적절한 내용을 ML 분류기 또는 키워드로 탐지
- 포맷 검증: JSON, SQL 등 구조화된 출력의 형식 유효성 검사