Paper Review

RAFT:Adapting Language Model to Domain Specific RAG Review

뚜둔뚜둔 2025. 2. 12. 14:44

https://arxiv.org/abs/2403.10131

 

RAFT: Adapting Language Model to Domain Specific RAG

Pretraining Large Language Models (LLMs) on large corpora of textual data is now a standard paradigm. When using these LLMs for many downstream applications, it is common to additionally bake in new knowledge (e.g., time-critical news, or private domain kn

arxiv.org

 

Abstract

  • 특정 도메인에서 LLM을 사용할 때 새로운 지식을 RAG-Based-Prompting 이나 fine-tuning을 통해 추가하는 것이 일반적임
  • RAFT(Retrieval Augmented Fine Tuning)는 특정 도메인 RAG에 대해 언어 모델의 성능을 향상시키기 위한 훈련 기법
  • RAFT는 질문에 대답하는데 도움이 되지 않는 문서(Dustractor documents)를 무시하도록 모델을 훈련시킴
  • RAFT는 관련 문서에서 질문에 대답하는데 도움이 되는 올바른 시퀀스를 인용하고, chain-of-thought 스타일 응답을 통해 모델의 추론 능력을 향상시킴
  • RAFT는 PubMed, HotpotQ, Gorilla데이터 셋에서 지속적으로 성능을 향상시킴

test domain을 알고 있다면, 모델을 도메인에 특화하여 retriever가 가져온 문서를 스스로 필터링 하도록 훈련할 수 있다.

 

 

Introduction

  • how to adpt pre-trained LLMs for Retrieval Augmented Generation (RAG) in specialized domains?
  • 이 논문에서는 특정 도메인에서 "Open-book" 설정으로 질문에 답하는 모델의 능력을 향상시키는 RAFT(RAG+SFT)를 제안함
  • RAFT는 fine-tuning을 통해 특정 domain의 답변을 잘하게 할 뿐만 아니라 Retrueval이 잘못 뽑혔을 때, robustness하게 답변하도록 학습(retrieval된 output들 중 도움이 되지 않는 distractor 문서를 무시하도록 훈련함) 
  • LLM 적응 방법론
    • RAG 기반 학습
      • LLM이 문서를 참조하여 질문에 답변할 수 있게 하지만, 
      • 고정된 도메인 설정과 테스트할 문서(test documents)에 대한 초기 접근으로 제공되는 학습기회를 활용하지 못한다.
      • -> 훈련과정에서 모델이 해당 도메인에 더 깊이 적용하고(adpat), 학습 기회를 최대한 활용하는 것에 제한적
    • Supervised Fine-Tuning 기반 학습
      • 문서의 더 일반적인 패턴을 학습하고, 최종 작업 및 사용자 선호도에 더 잘 맞추는 기회를 제공하지만, 
      • 시험 시간(test time)에 문서를 활용하지 못하거나 훈련 중 검색 과정의 불완전성을 고려하지 못함

 

LLMs for Open-Book Exam

  • Closed-Book Exam
    • LLM이 추가적인 정보 소스 없이, 사전에 훈련된 지식만을 바탕으로 질문에 답변할 수 있다.
    • 이 환경에서 LLM의 성능은 오직 모델이 훈련 중에 접했던 정보와 얼마나 효과적으로 그 정보를 학습했는지에 의존
  • Open Book Exam에
    • LLM이 외부 문서나 데이터를 참조하여 질문에 답변할 수 있다.
    • 이 환경에서 LLM은 특정 질문에 가장 관련성이 높은 정보를 검색하고, 해당 정보를 기반으로 답변을 구성
  • Domain Specific Open-Book Exam
    • LLM이 테스트될 도메인을 사전에 알고 있고, 특정 도메인 내 정보를 활용하여 질문에 답변할 수 있다.
    • 이 환경에서 LLM은 문서 컬렉션 내에서 찾을 수 있는 질문에 대해 답변하고, 검색 기술 자체는 매커니즘에 거의 영향을 미치지 않음

 논문은 주로 Domain Specific Open-Book Exam과 사전 훈련된 LLM에 대해 

특정 도메인에 적용하는 방법(검색된 문서와 방해 요소의 수가 다양할 때 모델을 더욱 Robust하게 만드는 방법)을 연구함

 

RAFT

  • Supervised Fine-tuning(SFT)는 Dataset(D)에서 유도된 Question(Q)과 Answer(A)쌍을 통해 모델을 훈련시킴
    • classical SFT에서 모델은 pre-training Phase 에서 학습한 Knowlegde의 Q에 대답하는 능력을 향상시키도록 학습
    • inference시에 RAG를 활용하여 학습된 지식에 대해 더 대답을 잘 하도록 하기도 함
  • RAFT에서는 모델이 RAG된 결과를 잘 활용하도록 Fine-tuning data를 준비
    • Question(Q), documnets(D_k), Chain-of-thought 스타일 answer(A*)
      • Chain-of-Tought(CoT): 환각을 방지하기 위해 답변에서 ##begin_quote##와 ##end_quote##를 사용하여 context에서 직접 복사한 인용구의 시작과 끝을 나타냄
    • 2가지 타입의 documents
      • 'Oracle' documents(D*): 질문에 대한 답을 할 수 있는 문서
      • 'distractor' documents (D_i): 답과 관련 없는 정보의 문서
      • P% 비율의 데이터는 distractor문서와 함께 oracle 문서 (D*)를 포함하고, (1-P)% 비율은 oracle문서 없이 distractor문서만 포함함
        • P% of data : Q + D* + D2 + ... + Dk   A*
        • (1-P) % of data: Q + D1 + D2 + ... + Dk A*
      • 이러한 방식으로 언어 모델에 supervised Fine-Tuning(SFT, 지도 파인튜낭) 기법을 사용하여, 제공된 문서와 질문으로부터 답변을 생성하도록 학습


Evaluation

  • 데이터셋
    • Natural Questions (NQ), Trivia QA, Hotpot QA: Wikipedia 기반의 오픈 도메인 질문, 일반 지식(예: 영화, 스포츠 등)
    • HuggingFace, Torch Hub, TensorFlow Hub: Gorilla 논문에서 제안된 APIBench에 포함된 데이터셋, 문서 기반으로 정확하고 기능적인 API 호출을 생성하는 방법
    • PubMed QA: 생물의학 연구 질문 응답(의료 및 생물학)
  • 모델
    • LlaMA2-7B-chat 모델 with 0-shot prompting: QA 작업에 사용되는 지시문이 포함된 모델로, 참조 문서 없이 명확하게 작성된 지시사항을 사용합니다.
    • LlaMA2-7B-chat 모델 with RAG (Llama2 + RAG): 도메인 특화 QA 작업에서 사용되는 참조 context를 추가된 모델입니다.
    • Domain-Specific Finetuning with 0-shot prompting (DSF): context 없이 표준 지시문 파인튜닝을 수행합니다.
    • Domain-Specific Finetuning with RAG (DSF + RAG): domain-specific finetuned 모델에 RAG를 사용하여 외부 지식을 통합하기 때문에 모델이 알지 못하는 "지식"에 대해서도 context를 참조할 수 있습니다.

 

Results

  • RAFT가 모든 도메인 특화 데이터셋 (PubMed, HotpotQA, HuggingFace, Torch Hub, TensorFlow Hub)에서 baseline보다 훨씬 좋은 성능을 보임
  • GPT-3.5와 비교해도 RAFT가 유의미한 성능 향상을 보임
  • DSF만으로는 QA스타일에 align되는 것에는 도움이 되지만 context에서 정보를 추출하는데에는 한계가 있음
  • RAFT는 QA 스타일 Align과 document processing을 동시에 잘하도록 학습시킬 수 있음


Effect of CoT

  • QA만 제공하는 것보다 reasoning chain을 함께 제공하는 것이 모델 성능 향상에 큰 도움이 됨
  • Chain-of-thought를 활용하면 학습 안정성도 높일 수 있음


Qualitative Analysis

  • DSF는 질문에 대한 답을 직접적으로 제공하지 못하고 엉뚱한 답변을 하는 경우가 있음
  • RAFT는 주어진 context에서 정확한 답을 찾아낼 수 있음
  • 이는 QA pair로만 학습하는것보다 context를 함께고려하며 학습하는것이 중요함을 시사함


Should we train the LLM always with the oracle context for RAG?

  • 실험을 통해 학습 데이터의 p%에만 oracle document 를 포함시키고 (1-p)%에는 포함시키지 않는 것이 성능 향상에 도움이 된다는 것을 발견함
  • 이는 oracle document만으로 학습하는 것보다 일부 학습 데이터에서는 oracle document없이 학습하는 것이 모델의 RAG성능을 높이는데 도움이 된다는 것을 의미함


RAFT Generalizes to Top-K RAG

  • Retriever가 제공하는 문서의 개수가 몇 개인지에 따라 RAFT의 robutness가 어떻게 달라지는지 실험함
  • LLM은 irrelevant text가 취약하다고 알려져 있는데, 이는 LLM + RAG에서 특히 중요한 문제임 (top-k RAG가 높은 recall을 위해 자주 사용되기 떄문)
  • 이러한 문제를 다루기 위해 RAFT에서는 학습 시 distractor document를 함께 사용함


Making Model Robust to top-K RAG

  • Oracle documnet 와 함께 다양한 개수의 distractor document로 학습 시키는 것이 모델이 test time에 다양한 개수의 문서가 주어졌을 때에도 robust하게 만드는데 도움이 됨
  • 실험 결과, Oracle document만으로 학습시키는 것보다 distractor document와 함께 학습시키는 것이 더 좋은 성능을 보임
  • RAFT에서는 일반적으로 1개의 oracle document와 4개의 distractor document로 학습시키는 것이 가장 좋은 벨런스를 보임


Generalization to a variable number of test-time documents

  • 학습 시 사용한 distractor document 의 개수에 따라 모델이 test time에 다양한 개수의 문서가 주어졌을 때 얼마나 잘 generalize되는지 실험함
  • 실험 결과, 학습 시 distractor document를 사용하는 것이 test time에 다양한 개수의 문서가 주어졌을 때에도 일관된 성능을 보일 수 있도록 해줌
  • 이는 실제 응용에서 마주칠 수 있는 다양한 상황에 대한 robustness를 높여줌


Conclusion

  • RAFT는 특정 도메인에서 "open-book" 설정으로 질문에 답하는 모델의 성능을 향상시키기 위한 훈련 전략으로, 선택된 문서를 기반으로 하여 질의응답 작업을 위한 LLM의 파인튜닝 방안을 제시
  • 중요한 설계 설정
    • distractor 문서와 함께 모델을 훈련
    • 데이터셋의 context에서 oracle문서가 일부 부족하도록 구성
    • 관련 텍스트의 직접 인용을 통해 chain-of-thought으로 답변을 공식화
  • 일반적인 RAG와 달리, RAFT는 LLM이 특정 도메인 지식을 사용하여 질문에 답변하는 실질적인 시나리오를 다룸
  • 더 작은 파인튜닝된 모델도 일반적인 LLM에 비해 domain-specific question-answering tasks에서도 잘 수행할 수 있다는 것을 시사

 

 

 

도메인별 특수한 경우에 활용하면 좋을 것으로 보임
실제로 아래의 코드를 적용해보며 실험하면서 적용가능한지 확인 해볼 필요가 있어보임.

 

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

 

 

참고 : 

https://gorilla.cs.berkeley.edu/blogs/9_raft.html

https://happy-jihye.github.io/nlp/nlp-25/

https://dwin.tistory.com/162

 

 

 

 

 

 

반응형