Self-RAG: 모델이 언제 검색할지 스스로 결정하고, 스스로를 평가하게 하라
요약
Self-RAG는 모델이 검색 여부, 문서 관련성, 답변의 근거를 스스로 판단하고 평가하는 적응형 RAG 프레임워크입니다. 성찰 토큰을 통해 환각을 방지하고 필요한 경우 검색 루프를 수행하여 답변의 정확도를 높입니다.
핵심 포인트
- 모델이 검색 필요 여부를 스스로 결정하는 적응형 방식 도입
- 성찰 토큰을 활용한 문서 관련성 및 답변 근거 자동 평가
- 근거가 부족할 경우 재검색 및 재생성을 수행하는 루프 메커니즘
- 환각 현상을 억제하고 답변의 신뢰성을 강화
일반적인 RAG는 문서가 필요 없는 "17×23은 무엇인가?"와 같은 모든 쿼리에 대해서도 검색을 수행합니다. Self-RAG는 모델이 언제 검색할지(WHEN)를 결정하고, 가져온 문서를 평가하며, 자신의 답변을 스스로 평가하도록 만듭니다. 만약 결과가 미흡하다면 루프(looping)를 수행합니다.
🪞 대화형 데모: https://dev48v.infy.uk/prompt/day11-self-rag.html
성찰 토큰 (The reflection tokens)
Self-RAG는 모델이 출력과 함께 작은 자기 평가(self-assessments)를 내뱉도록 훈련시키며, 사용자는 이를 바탕으로 분기 처리를 할 수 있습니다:
1. Retrieve? (검색할 것인가?) — 이것이 외부 사실을 필요로 하는가?
if (decide(q) === "NO_RETRIEVE") return llm(q); // 검색을 완전히 건너뜀
수학/추론 → 건너뜀. 개인적인 사실, 최근 사건 → 검색. 일괄적인 방식이 아닌 적응형(Adaptive) 방식입니다.
2. IsRelevant? (관련이 있는가?) — 검색된 각 문서를 평가하여 주제에서 벗어난 것은 제외합니다:
const useful = docs.filter(d => isRelevant(q, d) === "yes");
3. IsSupported? (근거가 있는가?) — 답변을 생성한 후, 답변을 문서와 대조하여 확인합니다:
const supported = grade(answer, docs); // FULLY (완전함) | PARTIAL (부분적임) | NO (없음)
이는 출처가 없는 자신감 넘치는 주장, 즉 환각 (hallucinations)을 잡아냅니다.
4. Loop (루프) — 답변이 완전히 뒷받침되지 않거나 유용하지 않다면, 답변을 그대로 내보내는 대신 더 많이 검색하거나, 다시 쓰거나, 다시 생성합니다.
이것이 중요한 이유
그 결과, 질문에 따라 검색을 조정하고, 근거가 없는 자신감 넘치는 답변을 제공하기를 거부하는 RAG 파이프라인이 완성됩니다. 데모를 플레이해보세요 — 질문을 선택하고 성찰 토큰이 결정하는 과정을 지켜보세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기