SELF-RAG: Self-Reflective Retrieval-Augmented Generation
SELF-RAG는 Retrieval-Augmented Generation(RAG)에 자기반영(Self-reflection) 기능을 결합한 프레임워크임. 기존 RAG가 항상 K개 문서를 붙이는 방식이었던 것과 달리, SELF-RAG는 “검색이 필요한 시점”과 “검색 결과가 답변에 어떻게 기여하는지”를 모델이 스스로 평가하도록 설계했음.
1. 문제 설정
대규모 언어 모델(LLM)은 파라메트릭 지식만으로 답변을 생성하다가, 사실 오류를 포함하는 결과를 자주 만들어냈음. 이를 보완하기 위해 검색을 결합한 RAG가 등장했지만, 무조건 정해진 개수만큼 문서를 가져오는 방식이라, 불필요한 맥락을 끼워 넣거나, 중요한 검증을 놓치곤 했음.
2. SELF-RAG의 핵심 아이디어
2.1 Reflection Tokens
SELF-RAG는 모델이 답변을 생성하면서 Reflection Tokens를 중간중간 예측하게 하는 기법임. 대표적으로 다음 네 가지 유형이 존재:
Retrieve
: “검색이 필요한가?” (yes / no / continue)ISREL
: “검색 문서가 실제로 관련 있는가?” (relevant / irrelevant)ISSUP
: “출력이 해당 문서로 충분히 뒷받침되는가?” (fully / partially / no support)ISUSE
: “전체적으로 출력이 유용한가?” (1~5 점 척도)
이런 특수 토큰을 통해, 모델이 검색과 생성, 그리고 자기 평가 과정을 한 흐름으로 묶어낼 수 있음.
2.2 확률적 구조
기존 RAG에서 답변 y
가 입력 x
에 대한 분포는 보통 아래처럼 표현됨:
$$ p(y \mid x) \;=\; \sum_{z} \; p_\eta(z \mid x)\; p_\theta(y \mid x, z). $$
SELF-RAG 역시 이 구조를 유지하지만, “모델이 언제 검색할지, 검색 문서를 어떻게 반영할지”를 Reflection Tokens 예측 단계에서 세분화함. 이 과정을 on-demand retrieval + self-critique라 부름.
3. SELF-RAG 학습 과정 (Training)
SELF-RAG는 크게 Critic 모델(C)과 Generator 모델(M)을 이용해 학습함. 두 모델을 순차적으로 준비하고, 최종적으로 Generator가 Critic 없이도 Reflection Tokens를 생성하도록 만듦.
3.1 Critic(C) 학습
- GPT-4 같은 대형 모델에게 (입력
x
, 출력y
) 쌍을 주고, “검색이 필요한지(Retrieve
), 문서가 실제로 관련 있는지(ISREL
), 문서가 답변을 지지하는지(ISSUP
), 최종 답변이 유용한지(ISUSE
)” 등 Reflection Tokens 라벨을 얻어냄. - 이렇게 수집된 대량의 (x, y, reflection tokens) 데이터를 바탕으로, Critic 모델을 지도학습(Supervised Learning)함. 즉, Critic은 (x, y) → (reflection tokens)를 예측하도록 최적화됨.
이 단계는 대체로 오프라인에서 이뤄지며, 모델이 직접 “이건 검색 필요 없어”라든지 “이 문서로부터 충분히 지원됨” 같은 결정을 내리도록 학습됨.
3.2 Generator(M) 학습
- Critic에서 나온 Reflection Tokens를 기존 (x, y) 쌍에 삽입해, “입력 + 중간중간 Reflection Tokens + 최종 출력” 형태로 학습 데이터를 구성.
- Generator(M)은 이 데이터를 보고, 원문 텍스트와 Reflection Tokens를 동시에 예측하도록 학습됨. 즉,
M
이 “답변 + 자기반영” 과정을 한 번에 생성하는 구조가 됨.
결과적으로, 추론 시에는 Critic 없이도 Generator가 “Retrieve=yes
”를 결정하고, “문서가 relevant인지, support되는지, 최종 유용성은 어떤지”까지 Reflection Tokens로 표현하게 됨.
4. Experimental Detail
4.1 태스크 & 데이터셋
SELF-RAG를 평가하기 위해, 총 6개 다운스트림 태스크를 설정함:
- Closed-set:
- PubHealth (Zhang et al. 2023): 건강 관련 문장의 사실 여부를 검증하는 데이터셋. 정확도를 평가하고, 타겟 클래스 확률을 집계(Appendix B.2) 방식으로 비교.
- ARC-Challenge (Clark et al. 2018): 과학 시험 MC 문제(4지선다). 마찬가지로 정확도가 평가 지표. 질문과 답변 후보를 입력받아 올바른 선택지를 골라야 함.
- Short-form Generation:
- PopQA (Mallen et al. 2023): 희소한 엔티티(long-tail) 질의응답. 1,399개의 월간 조회수 낮은 위키 엔티티를 포함. 모델 답변에 gold 정답이 포함됐는지로 성능 측정.
- TriviaQA-unfiltered (Joshi et al. 2017): 정형화되지 않은 오픈 QA. 기존 연구(예: Guu et al. 2020)에서 쓰이던 dev/test 분할(11,313개 테스트)을 기반으로 진행.
- Long-form Generation:
- Biography Generation (Min et al. 2023): 특정 인물에 대한 전기(bio)를 생성. FactScore를 통해 사실성을 정량 평가.
- ALCE-ASQA (Gao et al. 2023; Stelmakh et al. 2022): 장문 QA에서 정확도(str-em)와 MAUVE(유창성), 인용 정확도(citation precision/recall) 등을 측정.
평가는 모두 Zero-shot으로 진행(추가 few-shot 예시 없이, 태스크 지침만 제공)되었고, 자세한 실험 설정은 논문 Appendix B.1에 기술되어 있음.
4.2 비교 대상 (Baselines)
두 가지 범주로 나눠서 비교함:
- 검색 없는 모델 (Non-Retrieval)
- Llama2-7B,13B (Touvron et al. 2023), Alpaca-7B,13B (Dubois et al. 2023)
- ChatGPT (사설 데이터로 미세조정됨), Llama2-chat13B 등
- CoVE65B (Dhuliawala et al. 2023): Llama2 65B 모델을 반복 프롬프팅으로 factulity 향상
- 검색 사용하는 모델 (Retrieval-based)
- Standard RAG Baselines: Llama2, Alpaca 등 + Top-K 문서 prepend
- Llama2-FT: Reflection Tokens 없이 동일 데이터로 학습 (단순 “(x + 문서) → y”)
- Ret-ChatGPT / Ret-Llama2-chat: ChatGPT/Llama2-chat에 외부 검색 부착
- SAIL, Toolformer 등: 컨커런트 기법
- SAIL (Luo et al. 2023): Alpaca에 retrieved documents 삽입 후 instruction-tuning
- Toolformer (Schick et al. 2023): API call 학습해서, LLM이 필요 시 툴 사용
- Perplexity.ai: InstructGPT 기반의 검색 시스템
이렇게 폭넓은 베이스라인과 SELF-RAG를 비교해, 자기반영(token) 접근이 어느 정도 유의미한 성능향상을 주는지 확인함.
4.3 모델 학습 & 세팅 (Training Data & Settings)
논문에서는 다음 같은 방식으로 학습을 진행했다고 함:
- 학습 데이터: Open-Instruct (Wang et al. 2023)에서 추출한 Instruction-following 데이터와, 지식집약(Knowledge-intensive) 데이터(NQ, FEVER, etc.)를 혼합해 총 15만(150k) 쌍의 (입력, 출력) 사용.
- Generator Base LM: Llama2 7B 혹은 13B (Touvron et al. 2023) Critic에는 Llama2-7B를 기본으로 사용 (Reflection Tokens 분류)
- Retriever: Contriever-MS MARCO (Izacard et al. 2022a) 오프더셸프(Off-the-shelf) 버전을 사용. 한 입력당 최대 10개의 문서까지 가져올 수 있음.
더 자세한 하이퍼파라미터(학습 에폭, 배치 사이즈, LR, warmup 등)는 본문 Section 3.2와 Appendix B.1에 수록되었다고 명시.
4.4 추론 시 설정 (Inference Settings)
추론 단계에선 Reflection Tokens을 어떻게 다루는지, 문서 몇 개를 가져오는지 등을 설정해야 함:
- Weight terms:
ISREL = 1.0
,ISSUP = 1.0
,ISUSE = 0.5
. 즉, “문서 관련성”과 “문서 지지”를 중시하고, “유용성”은 가중치가 좀 더 낮음. - Retrieval threshold: 대체로
0.2
로 설정해,Retrieve=yes
확률이 0.2 이상일 때 검색. 단, ALCE-ASQA처럼 인용이 꼭 필요한 태스크에선0
으로 둬서 항상 검색하도록 함. - Decoding:
- Segment-level beam width = 2, token-level greedy를 병행
- Top 5 문서를 가져오되, Bio/Open-domain QA에선 추가로 검색엔진(top5)도 활용(Luo et al. 2023 참고)
- ASQA에선 저자 제공 GTR-XXL top5 문서( Ni et al. 2022 )를 사용
추론 속도 향상을 위해 vllm (Kwon et al. 2023)을 사용했다고 명시돼 있음. 이를 통해 긴 문서와 Reflection Tokens 처리를 효율화했다고 함.
4.5 구현 상세 (학습 파이프라인)
- (x, y) 원본 데이터를 수집 (QA, 요약, 지시따르기 등 복합).
- GPT-4 같은 모델에게 “Reflection Token 라벨링”을 요청해 Critic용 데이터셋을 만듦. (x, y) → (reflection tokens).
- Critic 모델(C)을 지도학습: Llama2-7B로 초기화 후, 수 epoch 정도 fine-tuning.
- Critic을 활용해 (x, y)에 reflection tokens를 삽입 → Generator 학습용 데이터(
Dgen
) 구성. - Generator(M) 모델(Llama2 7B/13B)을 “원문 + Reflection Tokens”을 모두 예측하도록 파인튜닝.
이 과정을 통해 오프라인에서 Critic이 자동라벨링한 Reflection Tokens를 Generator가 받아들이고, 추론 시점에는 Critic 없이도 “Retrieve 여부, 문서 관련성, 지지 여부”를 스스로 판단하는 구조가 완성됨.
4.6 하드웨어 & 계산 비용
- A100 80GB GPU(여러 장)나 V100 여러 대를 이용해 학습했다고 가정.
- Critic 단계에서 GPT-4를 활용해 라벨을 대량으로 생산하는 것은 비용이 큼. 따라서 필요한 만큼만 샘플링하여 라벨링받고, 그 뒤는 오프라인 학습으로 대규모 확장.
- 추론 시, 일반 RAG(무조건 K개 문서)보다 Reflection Token이 추가 예측되어 계산이 약간 늘어나지만, 불필요한 검색을 줄일 수 있어 실제로는 더 효율적일 수도 있음.
5. 추론(Inference) 과정
SELF-RAG 추론 단계는 다음 흐름임:
- 모델이 입력
x
와 이전 세그먼트 등을 보고Retrieve=yes
또는no
를 결정. - “yes”면 Retriever가 문서 K개를 가져오고, 모델은 각 문서에 대해
ISREL
을 판단. - 관련 문서로 답변을 생성한 뒤,
ISSUP
과ISUSE
로 “문서와 출력의 일치도” 및 “전체 품질” 평가. - 이 과정을 반복해 최종 답변을 확정함.
추론 시점에 beam search 내부에서 Reflection Tokens의 확률을 가중치로 사용해, 사실성을 중시할지(증거 일치) 혹은 답변을 간결하게 할지 등을 조정 가능.
6. SELF-RAG 실험 결과
여기서는 SELF-RAG가 다양한 다운스트림 태스크(Closed-set, Open-domain QA, Long-form Generation 등)에서 어떻게 성능을 보였는지 구체적으로 살펴봄. 각 태스크별로 정확도, 사실성, 인용 정확도 등 핵심 지표들을 평가했고, 비교 대상으로는 (1) 검색 없이 파라메트릭 지식만 쓰는 모델들, (2) 기존의 RAG 모델들, (3) ChatGPT를 포함한 더 큰 규모 혹은 사설 데이터로 학습된 모델들 등을 폭넓게 포함함.
6.1 학습 & 추론 설정
학습 데이터: 약 15만(150k) 정도의 instruction-following + 지식집약적 QA 데이터를 결합하여 Generator를 학습. Critic은 GPT-4에게서 뽑은 Reflection Token 라벨로 지도학습됨(Llama2-7B 사용).
추론 시 설정:
- ISREL, ISSUP, ISUSE 가중치를 (1.0, 1.0, 0.5)로 설정해, 모델이 “문서 관련도”와 “문서 지지”를 크게 반영하도록 함.
- Retrieval threshold 0.2(대부분 태스크), ALCE-ASQA에서는 0(무조건 검색) 사용.
- Decoding: greedy + beam width=2를 혼합. top5 문서를 받아서 각각 병렬 후보 생성.
이런 세부 사항은 부록(논문 Appendix B.1)에 자세히 나와 있음.
6.2 주요 결과
아래 표에서 PopQA, TQA(TriviaQA), PubHealth, ARC-Challenge, Biography, ASQA 순으로 성능이 나열됐고, SELF-RAG(7B/13B)는 다른 모델 대비 거의 모든 지표에서 우수한 성능을 보임.
* FS = FactScore, em = exact-match, rg = rouge, mau = MAUVE 등
Baselines vs. SELF-RAG
- Non-retrieval 모델(Llama2, Alpaca 등)은 지식 부족으로 점수가 전반적으로 낮음. ChatGPT처럼 큰 모델도 PubHealth, PopQA 등 몇몇 태스크에서 SELF-RAG보다 낮은 성능.
- Retrieval 모델 중 기존 RAG나 Llama2-FT7B, Alpaca13B 등보다 SELF-RAG(7B/13B)가 뛰어난 결과를 보였음.
- Biography나 ASQA처럼 인용 정확도(citation precision, recall)가 중요한 태스크에서도 SELF-RAG가 ChatGPT에 근접하거나 더 나은 성능을 보이는 경우가 있었음.
6.3 추가 분석
6.3.1 Ablation Studies
연구진은 SELF-RAG를 구성하는 요소(“Retrieve=yes/no” 결정, Critic Token, ISSUP 등)가 성능에 어떻게 기여하는지 실험적으로 확인했음.
- No Retriever: 검색 없이 학습 → 팝퀴즈성 질문(PopQA) 같은 곳에서 성능 큰 폭 하락
- No Critic: Reflection Tokens 없이 검색 → Irrelevant 문서를 무분별하게 쓰며 점수 하락
- ISSUP 제거: 인용 근거(문서)와 출력의 일치도 점수가 없으므로, 장문 태스크(ASQA) 등에서 제대로 평가 불가 → 성능저하
6.3.2 가중치 조절 & Threshold
추론 단계에서 ISSUP
가중치를 높이면 인용 정확도는 오르나, 생성 문장이 길어지며 MAUVE(유창성)가 낮아지는 트레이드오프가 관찰됨. 또한 Retrieval Threshold(δ)를 조절해, 검색 빈도를 높이거나 줄일 수 있음. PopQA처럼 지식 의존도가 높은 경우 검색을 자주 하는 편이 유리, PubHealth처럼 특정 정해진 문장만 판별하는 태스크는 검색을 적게 해도 성능이 크게 떨어지지 않음.
6.3.3 데이터 크기
훈련 데이터(Reflection Tokens 포함)를 5k, 10k, 20k, 50k, 150k로 늘려본 결과, PopQA나 ASQA 같은 지식 의존 태스크에서 데이터가 늘어날수록 모델 성능이 확연히 증가함. 이는 SELF-RAG가 다양한 상황에서 학습될수록, “언제 검색을 해야 하고, 어떤 문서를 활용해야 하는지”를 정확히 파악하게 된다는 뜻임.
6.3.4 인간 평가(Human Eval)
PopQA와 Bio generation 결과 중 샘플 50개를 선택해, 사람이 “답변이 타당하고, 문서로 충분히 지지되나?”를 직접 확인했음. SELF-RAG 모델이 ISREL=relevant
, ISSUP=fully
로 표시하는 부분이 대체로 실제로 근거와 합치된다는 결과가 나옴. 즉, Reflection Tokens가 사람의 직관적 판단과 잘 일치한다는 점에서 가치가 있다고 말함.
결론
SELF-RAG는 다양한 규모(7B~13B), 다양한 태스크(오픈QA, 폐쇄형 QA, 장문 생성 등)에서 기존 RAG 접근이나 ChatGPT, Alpaca 등의 모델보다 뛰어난 성능을 보였음. 검색 on-demand 결정과 자기반영(Critic)을 결합한 것이 사실성과 인용 정확도를 높이는 핵심으로 작용했다는 결론. 또한 가중치 조절, Retrieval Threshold, Ablation 등 분석으로 모델 내부 메커니즘을 상세히 검증했다는 점도 인상적임.