왕구아니다

[논문 리뷰] RAFT : Adapting Language Model to Domain Specific RAG 본문

Paper Review/RAG

[논문 리뷰] RAFT : Adapting Language Model to Domain Specific RAG

Psalms 12:6-7 2025. 5. 20. 01:37
본 논문 리뷰는 저의 개인적인 해석과 의견을 바탕으로 작성된 글입니다.
내용 중 해석의 오류나 개념적인 착오가 있다면, 망설이지 마시고 댓글로 혼내주시면 감사하겠습니다~

Preview

- RAFT는 "Open-book" 도메인 설정에서 질문과 관련 없는 문서는 무시하도록 모델을 학습시켜 답변의 성능을 높이는 학습법
- 전체 질문 데이터에서 P%는 golden 문서 + distractor 문서, (1-p)%는 distractor 문서로만 구성
- 답변은 CoT 형식으로 구성하고 질문에 대한 명확한 근거를"##begin_quote## and ##end_quote##" 사이에 넣어줌

Link

- 논문 : https://arxiv.org/abs/2403.10131
- 블로그 : https://gorilla.cs.berkeley.edu/blogs/9_raft.html
- 코드 : https://github.com/ShishirPatil/gorilla
 

GitHub - ShishirPatil/gorilla: Gorilla: Training and Evaluating LLMs for Function Calls (Tool Calls)

Gorilla: Training and Evaluating LLMs for Function Calls (Tool Calls) - ShishirPatil/gorilla

github.com

 

자 드가보자 😁😎

 

📍0. Abstract

  • 지금까지 downstream한 application에 LLM을 사용하기 위해서 fine-tuning과 RAG 기법을 사용함
  • 그러나 무엇이 최적의 방법인지는 open question으로 남아 있는 상태
  • 본 논문에서 특정 도메인에서 ‘open-book’을 바탕으로 한 질문에 잘 대답하는 모델의 능력을 향상시키는 Retrieval Augmented Fine Tuning(RAFT)를 제안
  • RAFT의 학습 과정은, 질문과 검색된 문서들을 주고 모델이 대답에 필요없는 문서를 무시하게 학습함
  • 모델이 질문에 적합한 대답을 생성할 때 관련 있는 문서에서 알맞은 sequence를 문자 그대로 인용함으로써 RAFT를 수행

 

📍1. Introduction

  • 기존 LLM은 방대한 양의 공개 데이터로 학습했기 때문에 일반적인 지식 추론 작업에서는 상당한 성능을 발휘함
  • 그러나 요즘 LLM은 특정한 도메인에 많이 활용되고 있으며 이때 일반적인 지식 추론보다는 주어진 문서를 바탕으로 정확하게 답변을 생성해내는 정확도가 중요해지고 있음
  • 이 논문의 시발점이 된 질문
    • 특정 도메인에 특화된 RAG를 위해, 사전학습된 LLM을 어떻게 활용할 수 있을까?
  • 특정 도메인에 특화된 LLM을 적용하는 두 가지 방법론
    1. RAG = Open-Book Exam
      • 고정된 도메인 설정과 테스트할 문서(test documents)에 대한 초기 접근으로 제공되는 학습 기회를 활용하지 못함( = 훈련 과정에서 모델이 해당 도메인에 더 깊이 적용하고(adapt), 학습 기회를 최대한 활용하는 것에 제한적일 수 있음)
    2.  Supervised Fine-Tuning = Close-Book Exam
      • 문서의 더 일반적인 패턴을 학습하고 최종 작업 및 사용자 선호도에 더 잘 맞추는 기회를 제공하지만,
      • 시험 시간(test time)에 문서를 활용하지 못하거나 훈련 중 검색 과정의 불완전성을 고려하지 못함
  • RAFT = instruction fine-tuning + RAG
    • 목표 : fine-tuning을 통해 model이 domain-specific 한 지식만 학습할 뿐만 아니라 검색된 distracting 한 정보들로부터 강건함을 보장

 

📍2. LLMs for Open-Book Exam

RAFT

[Closed-Book Exam]

  • 이미 학습된 데이터를 바탕으로 모델이 답변 생성

[Open-Book Exam]

  • 외부 소스(website or book chapter)를 바탕으로 답변
  • k개의 문서를 검색하고 사용자의 프롬프트와 더함
  • 검색한 문서로부터 domain-specific한 정보를 얻음
  • retriever 성능에 LLM 퍼포먼스가 달려있음

[Domain-Specific Open-Book Exam]

  • LLM이 테스트될 도메인을 사전에 알고 있고, 특정 도메인 내 정보를 활용하여 질문에 답변
  • 이 논문에서는 아래 내용들을 연구
    • domain-specific open book setting
    • 어떻게 사전 학습된 LLM을 적용시킬 것인지
    • 어떻게 모델을 검색된 다양한 문서(관련 O, 관련 X)에 강건하게 만들 것인지

 

📍3. RAFT

[Supervised Finetuning]

SFT 과정

  • 기존 LLM에 SFT 후 RAG에 적용 과정 :  먼저 QA 데이터 준비 → 학습 → RAG에 적용

[RAFT]

RAFT 데이터 준비

  • 데이터 준비
    • 질문(Q)
    • 관련 문서들(Dk)
    • chain-of-though style answer(A*)
      • 환각을 방지하기 위해 답변에서 **##begin_quote##**와 **##end_quote##**를 사용하여 context에서 직접 복사한 인용구의 시작과 끝을 나타냄
  • 문서를 준비할 때 두 가지로 준비함
    • golden(D*)→ 질문에 관련 있음 → 하나 이상의 문서 준비
    • distractor(Di) → 관련 없음
  • 데이터 중 P% 질문에는 golden document와 distractor document를 섞어서 보여주면서 답변을 생성하게 학습
  • 나머지 1-P% 데이터에는 distractor document만 포함시킴
  • 학습 quality를 향상시킬 수 있는 주요 원인은 reasoning process에 있음. CoT 방식처럼

데이터 예시

 

📍4. Evaluation

  • 본 논문에서 사용한 데이터셋과 베이스라인 그리고 결과

[Datasets]

  • Common knowledge based on Wikipedia
    • NQ
    • Trivia QA
    • HotpotQA
  • API
    • HuggingFace
    • Torch Hub
    • TensorFlow Hub
  • Medical
    • PubMed QA

 

[Baselines]

  1. LlaMA2-7B-chat model with 0-shot prompting
    • 일반적인 instruction-tuning된 QA용 모델
    • 명확한 질문에는 답하지만 참고 문서 없이 작동
  2. LlaMA2-7B-chat model with RAG (Llama2 + RAG)
    • 위 모델과 동일하지만, 참고 문서 포함
    • 도메인 특화 QA에서 자주 사용되는 방법
  3. Domain-Specific Finetuning with 0-shot prompting (DSF)
    • 특정 도메인에 대해 지도학습 방식으로 파인튜닝
    • 문서는 사용하지 않음
    • 모델의 답변 스타일을 도메인에 맞게 조정하거나, 문맥에 익숙해지게 하는 데 유용
  4. Domain-Specific Finetuning with RAG (DSF + RAG)
    • 도메인 특화로 학습된 모델에 외부 지식(RAG)을 추가
    • 모델이 모르는 내용이 나오면 RAG를 통해 문서를 참조할 수 있도록 구성

 

[Results]

  • RAFT는 질문에 대한 답변을 잘할(Fine-Tuning)뿐만 아니라 Document processing capabilities(RAG)를 향상시킴

 

[Effect of CoT]

  • 단지 답변만 제공하는 것은 loss는 줄일 수 있지만 overfiting 발생
  • CoT로 답변을 제공하는 것이 모델한테 답변을 하는 가이드를 제공할 뿐만 아니라 모델의 이해도를 향상시킴. 그러다 보니 전반적으로 정확도 올라가고 과적합까지 방지

 

[Qualitative Analysis]

RAFT vs DSF

  • 위 예시처럼 단지 QA pairs만 제공하는 것은 제공된 문서에서 관련된 context를 뽑는 능력을 손상시킴
  • 결론적으로 training data set에 기본적인 tuning과 문맥 이해도를 반영시키는 것이 중요함(다시 말해 QA set + relevant documents = CoT)

 

[Should we train the LLM always with the golden context for RAG?]

훈련 시 정답 문서를 얼마나 자주 넣어야 최적의 성능이 나오는가?

  • 과연 몇 퍼센트의 golden documents를 포함시키는 것(P)이 좋을까?
  • 직관적으로 무조건 포함시키는(P=100%) 것이 좋을 것 같지만 그렇지 않음.
  • P=80% 일 때 RAG tasks에서 성능 향상
  • 논문에서는 training/test에서 4개의 distractor documents를 포함시킴
  • 결론적으로 질문과 관련 있는 문서만 주지 말고 관련 없는 문서도 섞어서 주자

 

📍5. RAFT Generalizes to Top-K RAG

  • Top-k RAG를 통해 평가를 진행할 때 RAFT에 몇 개의 distractor documents를 포함시켜 학습을 해야 할까?
    • LLM은 irrelevant text에 취약하다는 연구 결과가 있음
    • 위 이슈는 top-k RAG에서 LLM+RAG를 활용할 때 치명적임(top-K의 문서를 가져올 때 관련 없는 문서도 있기 때문)

테스트할 때 몇 개의 문서를 LLM에 넣는 것이 성능에 가장 좋은지를 실험

📍6. Conclusion

  • RAFT는 특정 도메인 내에서 질문에 답하는 모델의 성능을 ‘오픈북(Open-book)’ 환경에서 향상시키기 위해 고안된 학습 전략
  • RAFT 설계에서 몇 가지 핵심적인 결정 사항을 강조
    • 혼란을 주는(distractor) 문서들과 함께 모델을 학습시키는 것
    • 데이터셋의 일부는 정답(golden) 문서가 문맥에 포함되지 않도록 구성하는 것
    • 관련 문장에서 직접 인용하며 Chain-of-Thought 방식으로 답변을 구성하는 것

 

💬 7. Takeaway

이 논문은 인턴 생활 중 사내 챗봇 개발 업무를 수행하면서, 질문과 무관한 문서가 검색되었을 때 LLM의 판단력을 어떻게 향상시킬 수 있을까 고민하던 중 발견하게 되었다. 사실 RAG 파이프라인에서 이미 상용화된 LLM API를 사용할 경우, 질문과 관련 없는 문서를 어느 정도 스스로 걸러내는 능력은 갖추고 있다. 하지만 그 정확도가 100%는 아니기 때문에, 이에 대한 보완 방법이 필요하다고 느끼고 있었다. 이 논문을 읽으며 이런 방식도 가능하겠구나라는 인사이트를 얻었고, 특히 Synthetic Data와 결합해 현재 인턴십에서 진행 중인 작업에 적용해 볼 수 있는 가능성이 있다는 점에서 흥미롭게 읽었다.