검색
← 모듈 로드맵

Self-RAG: 검색 · 생성 · 자기 비평을 함께 학습

논문 · 전문가 · Akari Asai 외 4명 · 2023 · arXiv

원제 · Self-RAG: Learning to Retrieve, Generate, and Critique through Self-Reflection

검색 필요 · 관련성 · 근거 · 유용성을 반성 토큰으로 스스로 판단하며 생성하는 RAG

먼저 알아야 할 것

RAG 기본 구조다음 토큰 예측 학습지시 미세조정빔 서치RLHF 개념

다루는 내용

Self-RAG는 Retrieve · ISREL · ISSUP · ISUSE 네 종류의 반성 토큰을 어휘에 추가하고, GPT-4 라벨로 학습한 비평 모델이 이 토큰과 검색 문단을 학습 데이터에 미리 끼워 넣어 생성 모델을 일반 다음 토큰 예측으로 학습합니다. 추론 때는 필요할 때만 검색하고, 문단별 후보를 생성 확률과 비평 점수 가중합으로 비교하는 문장 단위 빔 서치로 고르며, 가중치로 인용 정확도와 유창함을 조절합니다. Llama2 7B · 13B로 공개 모델 중 6개 과제 모두 최고였고 여러 과제에서 ChatGPT를 넘었으며 인용 정확도가 크게 높았습니다.

초록

저자가 쓴 초록을 옮긴 것입니다.

대형 언어 모델(LLM)은 뛰어난 능력에도 불구하고, 자신이 담고 있는 파라미터 지식에만 의존하기 때문에 사실과 다른 응답을 자주 만들어 냅니다. 관련 지식을 검색해 언어 모델을 보강하는 임시방편인 검색 증강 생성(RAG)은 이런 문제를 줄여 줍니다. 하지만 검색이 필요한지, 검색한 문단이 관련 있는지와 상관없이 정해진 개수의 문단을 무분별하게 검색해 넣으면, 언어 모델의 다재다능함이 줄거나 도움이 되지 않는 응답이 생성될 수 있습니다. 우리는 검색과 자기 반성을 통해 언어 모델의 품질과 사실성을 높이는 새로운 프레임워크인 자기 반성 검색 증강 생성(Self-RAG)을 소개합니다. 이 프레임워크는 임의의 언어 모델 하나를 학습시켜, 필요할 때 적응적으로 문단을 검색하고, 반성 토큰이라 부르는 특수 토큰으로 검색한 문단과 자기 생성물을 생성하고 성찰하게 합니다. 반성 토큰을 생성하면 추론 단계에서 언어 모델을 제어할 수 있어, 다양한 과제 요구에 맞게 동작을 조정할 수 있습니다. 실험 결과 Self-RAG(70억 · 130억 파라미터)는 다양한 과제에서 최신 LLM과 검색 증강 모델을 크게 앞섰습니다. 구체적으로 Self-RAG는 오픈 도메인 QA, 추론, 사실 검증 과제에서 ChatGPT와 검색 증강 Llama2-chat을 앞섰고, 긴 글 생성에서 이 모델들에 비해 사실성과 인용 정확도를 크게 높였습니다.

해설

Self-RAG: 검색 · 생성 · 자기 비평을 함께 학습

언어 모델이 "지금 검색이 필요한가?", "이 문서는 관련 있나?", "내 문장이 문서로 뒷받침되나?", "답이 쓸모 있나?" 를 스스로 특수 토큰(반성 토큰)으로 말하도록 학습시킨 방법입니다. 필요할 때만 검색하고, 자기 평가 점수로 가장 근거가 탄탄한 문장을 골라, 7B · 13B 모델로 ChatGPT와 검색을 붙인 Llama2-chat을 여러 과제에서 앞섰습니다.

항목내용
원제Self-RAG: Learning to Retrieve, Generate, and Critique through Self-Reflection
저자Akari Asai 외 4명 (워싱턴대 · Allen AI · IBM 리서치)
발표2023 · arXiv 2310.11511
트랙 · 수준RAG·검색 · 심화
먼저 알면 좋은 것기본 RAG 구조, 다음 토큰 예측 학습, 지시 미세조정, 빔 서치, Contriever 검색기

들어가기 전에

이 해설은 아래 내용을 안다고 보고 씁니다. 처음이라면 먼저 읽고 오면 수식과 손계산을 훨씬 쉽게 따라올 수 있습니다.

  • 검색 증강 생성 (RAG) — 검색기(DPR)와 생성기(BART)를 함께 미세조정해 문서를 보고 답을 생성하는 RAG의 원조 논문

한눈에 보기

  • 기본 RAG가 '항상 정해진 개수만큼 검색해 붙이는' 방식이라 생기는 문제를 알게 됩니다.
  • 반성 토큰(reflection token) 네 종류가 각각 무엇을 판단하는지, 모델이 그것을 어떻게 '그냥 다음 토큰처럼' 배우는지 이해합니다.
  • 비평 모델(critic)로 학습 데이터에 반성 토큰을 미리 끼워 넣는 오프라인 방식이 왜 RLHF보다 싼지 압니다.
  • 추론 때 가중치를 바꿔 '인용 정확도 vs 유창함'을 조절하는 점수식을 손계산으로 확인합니다.

초록 (번역)

대형 언어 모델(LLM)은 뛰어난 능력에도 불구하고, 자신이 담고 있는 파라미터 지식에만 의존하기 때문에 사실과 다른 응답을 자주 만들어 냅니다. 관련 지식을 검색해 언어 모델을 보강하는 임시방편인 검색 증강 생성(RAG)은 이런 문제를 줄여 줍니다. 하지만 검색이 필요한지, 검색한 문단이 관련 있는지와 상관없이 정해진 개수의 문단을 무분별하게 검색해 넣으면, 언어 모델의 다재다능함이 줄거나 도움이 되지 않는 응답이 생성될 수 있습니다. 우리는 검색과 자기 반성을 통해 언어 모델의 품질과 사실성을 높이는 새로운 프레임워크인 자기 반성 검색 증강 생성(Self-RAG)을 소개합니다. 이 프레임워크는 임의의 언어 모델 하나를 학습시켜, 필요할 때 적응적으로 문단을 검색하고, 반성 토큰이라 부르는 특수 토큰으로 검색한 문단과 자기 생성물을 생성하고 성찰하게 합니다. 반성 토큰을 생성하면 추론 단계에서 언어 모델을 제어할 수 있어, 다양한 과제 요구에 맞게 동작을 조정할 수 있습니다. 실험 결과 Self-RAG(70억 · 130억 파라미터)는 다양한 과제에서 최신 LLM과 검색 증강 모델을 크게 앞섰습니다. 구체적으로 Self-RAG는 오픈 도메인 QA, 추론, 사실 검증 과제에서 ChatGPT와 검색 증강 Llama2-chat을 앞섰고, 긴 글 생성에서 이 모델들에 비해 사실성과 인용 정확도를 크게 높였습니다.

무엇을 풀었나

기본 RAG는 질문이 오면 무조건 상위 kk개 문서를 검색해 앞에 붙이고 생성합니다. 이 방식에는 세 가지 문제가 있습니다.

  1. 필요 없는 검색: "가장 좋았던 여름휴가에 대해 에세이를 써 줘" 같은 요청에도 검색을 붙이면, 관계없는 문서가 창의적인 글쓰기를 방해합니다.
  2. 관련 없는 문서: 검색 결과가 질문과 무관해도 모델은 그것을 근거처럼 쓰거나 혼란스러워합니다.
  3. 근거와 어긋나는 출력: 문서를 붙였다고 해서 생성된 문장이 실제로 그 문서에 뒷받침된다는 보장은 없습니다. 인용(citation)이 달려 있어도 내용과 맞지 않을 수 있습니다.

이전 연구 중에는 필요할 때 검색하거나(적응적 검색), 문서를 따로 걸러 내는 모델을 붙이는 방식도 있었습니다. 하지만 외부 모델이 필요하거나 효율 · 관련 없는 문맥에 대한 견고성 · 출처 표시 중 무언가를 희생했습니다.

Self-RAG의 질문은 이것입니다. 언어 모델 하나가 검색 여부 · 문서 관련성 · 근거 여부 · 답의 유용성을 스스로 판단하며 생성하게 할 수 있을까?

핵심 아이디어

mermaid
flowchart TD
  X[질문 x + 지금까지 생성 y<t] --> RT{Retrieve 토큰: 검색할까?}
  RT -->|No| G0[다음 문장 바로 생성]
  RT -->|Yes| RET[Contriever로 문단 K개 검색]
  RET --> P1[문단 1로 병렬 생성]
  RET --> P2[문단 2로 병렬 생성]
  P1 --> C1[ISREL · ISSUP 토큰 생성]
  P2 --> C2[ISREL · ISSUP 토큰 생성]
  C1 --> S[점수 = 생성 확률 + 비평 가중합]
  C2 --> S
  S --> B[문장 단위 빔 서치로 상위 문장 선택]
  G0 --> U[끝에 ISUSE: 유용성 1~5]
  B --> U

1. 반성 토큰 네 종류

직관. 꼼꼼한 기자가 기사를 쓰며 한 문장마다 스스로 묻는 네 가지 질문을 모델의 말버릇으로 만든 것입니다. "이건 자료를 찾아봐야 하나?", "찾은 자료가 이 얘기와 관련 있나?", "방금 쓴 문장이 자료로 뒷받침되나?", "전체 기사가 독자에게 쓸모 있나?"

토큰판단하는 것값
Retrieve지금 검색이 필요한가yes · no · continue(이전 검색 계속 사용)
ISREL검색한 문단 dd가 질문 xx를 푸는 데 쓸모 있는가relevant · irrelevant
ISSUP생성한 문장 yy의 검증할 만한 내용이 모두 dd로 뒷받침되는가fully · partially · no support
ISUSE응답 yy가 질문 xx에 유용한가5 · 4 · 3 · 2 · 1

단계별 설명 (추론 시).

  1. 질문과 지금까지의 생성을 보고 모델이 먼저 Retrieve 토큰을 냅니다.
  2. 검색이 필요 없으면 일반 언어 모델처럼 다음 문장(논문은 문장 하나를 한 '세그먼트'로 봄)을 생성합니다.
  3. 검색이 필요하면 문단 KK개를 가져와 문단마다 따로(병렬) 다음 문장 후보를 만들고, 각각에 ISREL · ISSUP 토큰을 붙입니다.
  4. 반성 토큰 점수로 후보를 비교해 가장 좋은 문장을 고릅니다.
  5. 응답 끝에서 ISUSE로 전체 유용성을 평가합니다.

왜 '토큰'으로 만들었나. 판단을 별도 분류기로 두면 추론 때 모델을 하나 더 돌려야 합니다. 반성 토큰을 어휘에 추가해 다음 토큰 예측의 일부 로 만들면, 생성 모델 하나가 글쓰기와 자기 평가를 함께 합니다.

2. 학습: 비평 모델이 반성 토큰을 미리 끼워 넣는다

직관. 선생님(비평 모델)이 모범 답안에 "여기서 자료 찾음 / 이 자료 관련 있음 / 이 문장 자료로 뒷받침됨" 같은 빨간 펜 표시를 미리 다 달아 두면, 학생(생성 모델)은 그 표시까지 포함한 답안을 그대로 따라 쓰며 배웁니다.

단계별 설명.

  1. 비평 모델 데이터 만들기: 원래 학습 데이터에서 예시를 뽑아, 반성 토큰 종류별 지시문과 함께 GPT-4에 넣어 적절한 반성 토큰을 예측하게 합니다. 종류별로 4천~2만 개를 모았습니다.
  2. 비평 모델 CC 학습: Llama 2-7B에서 시작해, 입력과 출력을 보고 반성 토큰을 생성하도록 일반 조건부 언어 모델 목표로 학습합니다. 대부분 범주에서 GPT-4 예측과 90% 넘게 일치했습니다.
  3. 생성 모델 데이터 만들기: 입력-출력 쌍마다 문장 단위로 CC에게 검색 필요 여부를 묻고, 필요하면 검색기 RR로 문단을 가져와 ISREL · ISSUP를 붙이고, 끝에 ISUSE를 붙입니다. 이렇게 반성 토큰과 문단이 끼워진 학습 데이터를 오프라인으로 만듭니다.
  4. 생성 모델 MM 학습: 이 데이터로 일반 다음 토큰 예측 학습을 합니다. 검색된 문단 부분은 손실 계산에서 가리고(외우지 않게), 어휘에 반성 토큰을 추가합니다.

수식. 비평 모델과 생성 모델 모두 일반 언어 모델 목표를 씁니다.

max⁡C  E((x,y),r)∼Dcriticlog⁡pC(r∣x,y),max⁡M  E(x,y,r)∼Dgenlog⁡pM(y,r∣x)\max_{C}\; \mathbb{E}_{((x, y), r) \sim \mathcal{D}_{\text{critic}}} \log p_C(r \mid x, y), \qquad \max_{M}\; \mathbb{E}_{(x, y, r) \sim \mathcal{D}_{\text{gen}}} \log p_M(y, r \mid x)
기호뜻
xx, yy입력, 출력
rr반성 토큰
Dcritic\mathcal{D}_{\text{critic}}GPT-4로 반성 토큰을 붙인 비평 모델 학습 데이터
Dgen\mathcal{D}_{\text{gen}}비평 모델로 반성 토큰 · 검색 문단을 끼워 넣은 생성 모델 학습 데이터

왜 이렇게 했나. RLHF(PPO)는 학습 중에 보상 모델을 계속 돌려야 해 비쌉니다. Self-RAG는 비평을 미리 계산해 데이터에 넣고 일반 언어 모델 학습만 하므로 학습 비용이 훨씬 낮다고 논문은 설명합니다. 또 학습 후에는 비평 모델 없이 생성 모델 혼자 반성 토큰을 냅니다.

3. 추론: 비평 점수를 섞은 문장 단위 빔 서치

직관. 여러 자료를 각각 참고해 쓴 문장 초안 몇 개 중에서, "글이 자연스러운가"와 "자료와 맞는가"를 함께 따져 가장 좋은 초안을 고릅니다. 어떤 기준을 더 중요하게 볼지는 그때그때 정할 수 있습니다.

단계별 설명.

  1. 검색 여부: Retrieve=Yes 토큰의 (Retrieve 토큰들 안에서 정규화한) 확률이 임곗값 δ\delta를 넘으면 검색합니다. 임곗값이 클수록 검색을 덜 합니다.
  2. 후보 생성: 문단 KK개 각각으로 다음 문장 후보를 만듭니다.
  3. 점수 매기기: 각 후보의 생성 확률에 비평 점수 SS를 더합니다.
  4. 빔 서치: 문장 단위로 상위 BB개 후보를 유지하며 끝까지 생성하고, 최고 점수 시퀀스를 반환합니다.

수식.

f(yt,d,Critique)=p(yt∣x,d,y<t)+S(Critique),S(Critique)=∑G∈GwGstGf(y_t, d, \text{Critique}) = p(y_t \mid x, d, y_{<t}) + S(\text{Critique}), \qquad S(\text{Critique}) = \sum_{G \in \mathcal{G}} w^{G} s_t^{G}
stG=pt(r^)∑i=1NGpt(ri),G={ISREL, ISSUP, ISUSE}s_t^{G} = \frac{p_t(\hat{r})}{\sum_{i=1}^{N^G} p_t(r_i)}, \qquad \mathcal{G} = \{\text{ISREL},\, \text{ISSUP},\, \text{ISUSE}\}
기호뜻
yty_ttt번째 문장(세그먼트) 후보
dd그 후보를 만들 때 참고한 문단
stGs_t^G비평 종류 GG에서 '가장 바람직한 값'(예: ISREL=relevant)의 정규화 확률
NGN^G종류 GG의 가능한 값 개수
wGw^G종류별 가중치. 기본값 ISREL 1.0, ISSUP 1.0, ISUSE 0.5

숫자로 해 보기 (설명용 예시, 논문 수치 아님). 두 문단으로 만든 후보 A · B가 있다고 합시다.

  • A: 생성 확률 0.6, ISREL relevant 확률 0.9, ISSUP fully 확률 0.4, ISUSE 5점 확률 0.5

    → 0.6+1.0×0.9+1.0×0.4+0.5×0.5=2.150.6 + 1.0 \times 0.9 + 1.0 \times 0.4 + 0.5 \times 0.5 = 2.15

  • B: 생성 확률 0.5, ISREL 0.8, ISSUP 0.9, ISUSE 0.4

    → 0.5+0.8+0.9+0.2=2.400.5 + 0.8 + 0.9 + 0.2 = 2.40

생성 확률은 A가 높지만, 근거 뒷받침이 탄탄한 B가 선택됩니다. ISSUP 가중치를 0으로 낮추면 A가 1.751.75, B가 1.501.50이 되어 A가 선택됩니다. 이렇게 추가 학습 없이 가중치만 바꿔 동작을 조절합니다.

하드 제약도 가능합니다. 점수로 부드럽게 섞는 대신, 예를 들어 ISSUP=no support인 후보는 아예 버리는 식으로 강제할 수도 있습니다.

4. 설정 (논문 기준)

  • 학습 데이터: Open-Instruct와 지식 집약적 데이터셋에서 모은 지시-출력 쌍 15만 개
  • 생성 모델: Llama2 7B · 13B / 비평 모델: Llama2 7B / 검색기: Contriever-MS MARCO(입력마다 최대 10개 문서)
  • 추론: 검색 임곗값 대부분 0.2(인용이 필요한 ALCE는 0), 문장 단위 빔 폭 2, 토큰 단위는 탐욕적 디코딩, 기본 상위 5개 문서
  • 모든 평가는 예시 없는 제로샷 지시로 진행

결과

여섯 과제 종합 (일부 발췌)

모델PopQA 정확도TriviaQA 정확도PubHealth 정확도ARC-C 정확도전기 FactScoreASQA 인용 정밀도ASQA 인용 재현율
ChatGPT29.374.370.175.371.8——
ChatGPT + 검색50.865.754.775.3—65.176.6
Llama2-chat 13B + 검색51.859.852.137.979.919.836.1
Alpaca 13B + 검색46.166.951.157.677.72.03.8
Llama2-FT 7B + 검색48.757.364.365.878.25.07.5
Self-RAG 7B54.966.472.467.381.266.967.8
Self-RAG 13B55.869.374.573.180.270.371.3
  • 공개 모델 중에서는 모든 과제에서 최고였고, PubHealth · PopQA · 전기 생성 · ASQA(Rouge · MAUVE)에서는 ChatGPT보다도 좋았습니다.
  • 인용 정확도 가 특히 두드러졌습니다. 다른 공개 모델은 검색을 붙여도 ASQA 인용 정밀도 · 재현율이 한 자릿수~20%대였지만 Self-RAG는 60~70%대였고, 인용 정밀도는 ChatGPT(65.1)보다 높았습니다.
  • 같은 데이터로 학습만 한 Llama2-FT 7B 가 Self-RAG에 뒤졌습니다. 성능 향상이 데이터 때문만이 아니라 프레임워크 덕분이라는 근거입니다.
  • 검색을 붙인 일반 모델은 PubHealth · ARC-Challenge처럼 문서에서 답을 그대로 베낄 수 없는 과제에서 거의 나아지지 않았습니다.

절제 실험 (5만 개 데이터로 학습한 7B 기준): 검색기나 비평을 빼고 학습하면 성능이 크게 떨어졌고, 기존 RAG처럼 관련성과 상관없이 상위 1개 문서만 쓰면 PopQA · ASQA에서 크게 떨어졌습니다. 빔 서치에서 ISSUP 점수를 빼면 ASQA 성능이 나빠졌습니다.

추론 시 조절: ISSUP 가중치를 높이면 인용 정밀도는 오르고 MAUVE(유창함)는 내려갔습니다. 검색 임곗값을 바꾸면 검색 빈도가 크게 바뀌었고, 검색을 줄였을 때의 성능 하락은 PubHealth보다 PopQA에서 컸습니다.

왜 중요한가 · 이후 영향

  • "언제 검색할지, 무엇을 믿을지"를 모델이 스스로 판단하는 RAG 의 대표 사례가 됐습니다. 이후 검색 결과를 평가 · 교정하는 방법(CRAG 등)과 에이전트형 RAG 논의에 자주 인용됩니다.
  • 추론 시 조절 가능성: 같은 모델로 사실성이 중요한 과제에서는 근거 가중치를 높이고, 창작에서는 검색을 줄이는 식의 조절을 재학습 없이 할 수 있음을 보였습니다.
  • 비평을 오프라인 데이터로 증류 하는 방식은 RLHF보다 저렴한 '자기 평가 능력 심기' 방법의 예가 됐습니다.

한계 · 주의할 점

  • 학습이 필요합니다. 이미 서비스 중인 API 모델(예: GPT 계열)에 그대로 적용할 수 없고, 반성 토큰을 배운 모델을 따로 학습해야 합니다.
  • 비평 데이터는 GPT-4에 기댑니다. 비평 모델의 판단 품질이 GPT-4 라벨의 품질에 묶여 있습니다.
  • 추론 비용: 문단마다 병렬로 후보를 만들고 빔 서치를 하므로, 단순 RAG보다 계산이 많습니다(논문은 vllm으로 속도를 높였습니다).
  • 자기 평가도 틀릴 수 있습니다. ISSUP가 'fully supported'라고 해도 실제로는 아닐 수 있으므로, 중요한 용도에서는 별도 검증이 필요합니다.
  • 작은 7B가 13B보다 사실 정밀도에서 가끔 나은 것은, 더 짧고 근거에 딱 붙은 답을 내는 경향 때문이라고 논문이 설명합니다. 지표가 '짧은 답'을 유리하게 볼 수 있다는 점도 감안해야 합니다.

스스로 점검

  1. Retrieve 토큰 임곗값 δ\delta를 높이면 어떤 일이 생기나요?

    Retrieve=Yes 확률이 더 높아야 검색하므로 검색 빈도가 줄어듭니다. 사실 확인이 중요한 과제에서는 정확도가 떨어질 수 있습니다.

  2. 후보 A(생성 0.7, ISREL 0.5, ISSUP 0.3, ISUSE 0.6)와 B(생성 0.5, ISREL 0.9, ISSUP 0.8, ISUSE 0.4)를 기본 가중치(1, 1, 0.5)로 비교하면?

    A는 0.7+0.5+0.3+0.3=1.80.7 + 0.5 + 0.3 + 0.3 = 1.8, B는 0.5+0.9+0.8+0.2=2.40.5 + 0.9 + 0.8 + 0.2 = 2.4이므로 B가 선택됩니다.

  3. 학습 데이터에 반성 토큰을 '오프라인으로' 넣는 것의 장점은?

    학습 중에 비평(보상) 모델을 따로 돌리지 않아도 되어 RLHF보다 학습 비용이 낮고, 학습 후에는 생성 모델 하나만으로 반성 토큰을 낼 수 있습니다.

용어 정리

용어쉬운 뜻
반성 토큰(reflection token)검색 필요 여부 · 관련성 · 근거 여부 · 유용성을 나타내도록 어휘에 추가한 특수 토큰
비평 모델(critic)학습 데이터에 반성 토큰을 붙이는 데 쓰는 별도의 모델
적응적 검색(adaptive retrieval)필요하다고 판단될 때만 검색하는 방식
세그먼트(segment)생성 단위. 이 논문에서는 문장 하나
빔 서치(beam search)점수가 높은 후보 몇 개를 유지하며 생성해 가는 탐색 방법
하드 제약 · 소프트 제약조건을 어기면 버리기 · 점수에 반영해 덜 선호하기
인용 정밀도 · 재현율인용한 근거가 주장을 뒷받침하는 비율 · 주장 중 인용으로 뒷받침되는 비율
FactScore생성된 전기 글의 사실 정확도를 재는 지표
MAUVE생성 글이 사람 글처럼 자연스러운지 재는 지표
RLHF사람 선호를 보상으로 삼아 강화학습으로 모델을 조정하는 방법

이어서 읽을 것

다음에 볼 것

이 글을 이해했다면 이어서 보면 좋은 항목입니다.

출처

AI 원리부터 이해하기 · RAG·검색 모듈

RAG·검색 모듈 학습

이 글은 RAG·검색 모듈의 학습 자료입니다. 전체 21개 자료 중 16번째입니다.

AI 기초 과정은 현재 진도 저장을 지원하지 않습니다.

출처·원문

원문 보기

요약만

arXiv (논문별 상이)

arXiv 2310.11511