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

open book 환경에서 도메인에 특화된 LLM 모델을 조정하는 방법
논문리뷰
avatar
2025.03.14
·
12 min read

Abstract

  • 우리는 downstream 적용을 위해 LLM을 사용할 때, 일반적으로 RAG 기반 프롬프팅 또는 파인튜닝을 통해 사전훈련된 모델에 새로운 정보를 추가적으로 통합한다.

  • 하지만, 해당 task에 대한 가장 좋은 방법론은 여전히 해결되지 않은 문제로 남아있다.

  • 해당 연구에서는 "오픈북" 방식인 도메인 환경에서 질문에 응답하는 능력을 향상시키는 훈련 레시피인 Retrieval Augmented Fine Tuning(RAFT)` 을 제안한다.

  • RAFT 훈련에서는. 주어진 질문과 검색된 문서를 바탕으로 질문을 대답하는데 도움이 되지 않는 문서, 즉 방해문서를 무시하도록 훈련된다. ( → 응답을 하는데 도움이 되는 문서의 정확한 구절을 그대로 인용함으로써 가능하게 한다는 것이다.)

  • 또한, CoT 응답스타일을 결합하여 모델의 추론 능력을 향상하는데 기여한다.

Introduction

방대한 양의 데이터로 훈련된 대형언어모델(LLM)은 광범위한 일반 지식 추론 작업에서 중요한 진전을 이루었다. 하지만 LLM을 특화된 도메인에 사용하는 경우가 점차 증가하고 있으며, 이러한 환경에서는 일반적인 지식 추론 보다는 주어진 문서에서 정확성을 최대화 하는 것이 주요 목표이다.

보통은 특화된 도메인에 LLM을 조정하고자 할 때, 다음 2가지 전략을 고려한다.

  • RAG를 활용한 in-context learning

  • Supervised Fine-Tuning(SFT)

해당 논문에서는 각 전략의 문제점으로 다음을 언급한다.

  • RAG 기반 방법론의 경우에는 고정된 도메인 설정테스트 문서에 대한 조기 접근이 제공하는 학습 기회를 충분히 활용하지 못한다.

    • 일반적으로 RAG는 질문과 관련된 정보를 외부 소스에서 검색하기 때문에, 모델이 훈련과정에서 미리 특정된 도메인과 관련된 문서들을 접할 기회를 가지지 못한다는 의미

  • Fine-Tuning의 경우에는 테스트 문서를 활용하지 못하거나 ( RAG 사용하지 않을 시) 학습 과정에서 검색 과정의 불완전성을 고려하지 못한다.

    • 기존의 Fine-Tuning 방법들은 정제된 Q-A pair 로 모델을 훈련한다. 이는 모델이 실제 환경에서 Noise가 있는 (불완전한 정보)에 노출되었을 때 제대로 대응하지 못하는 문제점이 발생한다는 의미

이 연구에서는 어떻게 RAG 와 Instruction Tuning을 결합할지에 대해서 연구한다.

RAFT

  • RAF는 LLM을 특정한 도메인 환경에 맞게 훈련하는 Fine-Tuning 기법으로, 특히 “open book” 환경에서 (모델이 외부 지식에 접근할 수 있는 환경) LLM의 성능을 향상시키는데 초점을 맞춘다.

  • RAFT의 데이터 구성

    • RAFT 데이터 셋은 질문( Q)Q) , 문서 집합, 정답 문서에서 생성된 CoT 스타일의 답변 으로 구성된다.

      4010
    • 데이터의 P%에는 golden 문서 (D*)와 distractor 문서(D1, D2, ..., Dk)이 포함되며, (1-P)%의 데이터에는 golden 문서 없이 distractor 문서(D1, D2, ..., Dk)만 포함된다.

    • 여기서 golden 문서는 질문에 대한 답변과 관련된 문서이며, distractor 문서는 관련된 문서를 포함하지 않는 문서이다.

    • 몇몇의 데이터에서 golden 문서를 제거함으로써, 문맥에서 유추하는 것을 대신하여 모델이 답변을 암기하도록 강요한다.

  • 이러한 접근 방식은 모델이 관련없는 문서를 구별하는 방법을 학습하여, 검색과정의 불완전성에에 대응을 할 수 있는 것으로 이해할 수 잇다.

4012

Evaluation

  • 사용한 데이터 셋

    • 위키피디아 기반 일반상식 관련 데이터 셋 : Natural Questions (NQ) , Trivia QA , HotpotQA

    • 특정 도메인 지식과 관련 데이터 셋 : HuggingFace, Torch Hub, TensorFlow Hub,PubMed QA

4013
  • 비교실험

    • LLaMA2-7B (0-shot): 사전 학습된 모델을 직접 사용하여 질문에 답변

    • LLaMA2-7B + RAG: LLaMA2 모델에 검색된 문서를 추가하여 응답하도록 설정

    • (DSF, Domain-Specific Finetuning): 특정 도메인 데이터로 미세 조정한 모델

    • DSF + RAG: 미세 조정된 모델에 검색된 문서를 추가하여 질문 응답

    • RAFT (Ours): RAFT 방식으로 훈련된 모델

RAFT는 해당 데이터 셋에서 기존 방법들 보다 높은 성능을 기록한다고 주장

  • CoT 기법의 효과

    • RAFT는 정답을 단순히 제공하는 것이 아닌, chain-of-thought 적용하여 문서를 근거로 논리적인 추론을 수행하도록 학습하며, 해당 방법을 적용했을 때 더 좋은 성능을 보인다고 주장

  • RAFT Prompt

    • 상세한 추론 답변에서는 원본 context 에서의 인용이 ##begin_quote####end_quote## 사이에 포함되도록 한다. 또한, 인용을 기반으로 결론에 도달하는 방법에 대한 상세한 설명을 포함한다.

4011

질문: 오베로이(Oberoi) 가문은 본사가 위치한 호텔 회사의 일부인가? 본사는 어느 도시에 있는가?

문맥: [오베로이 가문은 호텔 업계에 관여하는 것으로 유명한 인도 가문으로, 특히 오베로이 그룹(The Oberoi Group)을 통해 활동하고 있다]... [이 호텔은 자카르타 도심, Mega Kuningan 지역에 위치하며 자매 호텔인 JW 메리어트 호텔 옆에 있다. 이 호텔은 리츠칼튼 호텔 컴퍼니가 운영한다. 이 복합 건물은 호텔과 Airlangga 아파트로 구성되어 있다]... [오베로이 그룹은 본사가 델리에 위치한 호텔 회사이다.]

지시: 질문, 문맥 및 답변을 바탕으로 해당 답변에 대한 논리적인 이유를 제공하세요. 형식은 다음과 같이 작성하세요:

##Reason: {이유}

##Answer: {답변}


CoT 답변:

##Reason: 문서에서 "오베로이 가문은 호텔 업계에 관여하는 것으로 유명한 인도 가문으로, 특히 오베로이 그룹을 통해 활동하고 있다" 라고 명시되어 있어 오베로이 가문이 오베로이 그룹과 관련이 있음을 알 수 있다. 또한, 문서에서 "오베로이 그룹은 본사가 델리에 위치한 호텔 회사이다" 라고 명시되어 있어 본사가 델리에 있음을 알 수 있다. 따라서, 오베로이 가문은 본사가 델리에 위치한 호텔 회사의 일부라고 결론지을 수 있다.

##Answer: 델리 (Delhi)

Conclusion

  • RAFT는 외부지식을 활용할 수 있는 (오픈북) 환경인 특정 도메인에서 질문에 대한 응답을 하는데 있어 모델의 성능을 향상시키도록 설계된 훈련 기법이다.

  • distractor 문서를 포함하여 함께 문서를 학습시키고, CoT 방식을 적용한다는 것이 중요한 디자인 요소이다.

느낀점

  • RAG(Relevant Augmented Generation) 방식에서 Retriever의 성능이 답변의 정확도를 결정짓는 핵심 요소이며, SFT(Supervised Fine-Tuning)를 활용하여 RAG의 효과적인 접목 방안을 모색했다는 점이 인상적이었다.

  • 이를 위해 정답과 관련된 문서뿐만 아니라 무관한 문서도 함께 학습시켜 모델이 불필요한 정보를 필터링하고, 유의미한 문서만을 선별적으로 인용하도록 설계한 점이 주목할 만하다. 또한, 답변 생성 과정에서 CoT(Chain of Thought) 방식을 적용하여 논리적 근거를 명확히 제시하는 전략은 전문 도메인 질의응답 시스템에서 효과적인 접근 방식이라고 판단된다.

  • 다만, Golden 문서(핵심 문서)의 선정 기준과 적절한 개수에 대한 실험적 검증이 부족하며, 데이터셋 구축 과정에서 상당한 시간과 비용이 소요될 가능성이 있다는 점이 아쉬움으로 남는다.

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
https://github.com/ShishirPatil/gorilla
GitHub - ShishirPatil/gorilla: Gorilla: Training and Evaluating LLMs for Function Calls (Tool Calls)

https://arxiv.org/pdf/2403.10131