RAG의 새로운 대안 .. RAFT(RAG 할바에야 RAFT!)
요즘 RAG(Retrieval Augmented Generation)를 모르는 사람이 없을 정도로 RAG가 대세로 떠오르고 있습니다. RAG를 모르는 사람들을 위해서 간단하게 설명하자면, RAG란, Base Document가 있고, 거기를 참고해서 Q&A를 하게 만드는 것을 말합니다. Prompt Engineering 을 어떻게 하느냐에 따라 물론 달라지겠지만, Hallucination을 방지하기 위해서 많이 씁니다. 하지만 단점으로는, Base model의 성능에 너무 많은 의존을 하게 되고, 그러다 보니 Foundation 모델의 성능이 떨어지게 되면 성능의 퀄리티가 떨어지는 단점이 있습니다. Foundation model 의 성능에 의존하다 보니, 가장 좋은 모델 (가령, GPT 4)를 쓸 수 밖에 없습니다.
그러다 보니 새로 나온 RAFT(Retrieval augmented FineTuning)이라는 개념이 있습니다. RAG 보다 조금 더 좋은 방식이라고 말하는데, 저도 아직 직접 사용해본 적은 없지만, 상당히 promising 해보이는 방법이긴 합니다. 다음은 RAFT에 대한 논문입니다. https://arxiv.org/abs/2403.10131?utm_source=pytorchkr&ref=pytorchkr 또, 블로그도 있습니다. https://discuss.pytorch.kr/t/raft-rag-llm-rag-finetuning/3842 . Azure에서는 Fine-tuning 까지 할 수 있는 공식 블로그도 있네요.https://techcommunity.microsoft.com/t5/ai-ai-platform-blog/raft-a-new-way-to-teach-llms-to-be-better-at-rag/ba-p/4084674
RAFT의 핵심 개념은, 어떤 Document를 참고할 것인지를 미리 알려준다 (Training)을 함으로써, 관련 Document를 더 쉽게 찾을 수 있게 해준다는 점인 것 같습니다. 게다가, Chain of Thought를 통해서 논리 구조도 학습시킨다.. 라고 하는 것 같습니다.
또, 특이한 점은 관련 Document가 없는 question도 넣는다는 점입니다. 사실, RAG를 하는 이유가 Document에 없으면 잘 모르겠다고 대답해줘라고 하는 이유도 꽤 큰데, 그 전에는 사실 이를 improve 할 수 있는 수단이 prompt engineering 밖에 없었고, 위에서 말한 대로 base model의 성능에 크게 좌우되는 경우가 많았는데, RAFT를 사용해서 training 할 때, Question과 Related Document + Distractor Document => Answer 가 나오는 경우 뿐만 아니라 Distractor Document만 있는 경우를 넣어 줌으로써, Hallucination을 방지한다는 개념인 듯 합니다.
물론 얼마나 많은 데이터가 얼마나 많이 필요한 지에 대해서는 정확히 나와 있지는 않습니다. 유튜브 영상에 보니, 200개 정도면 시작할 수 있다고는 하는데, 물론 언제나 그렇듯이 데이터의 양도 중요하지만 데이터의 질도 굉장히 중요할 것 같습니다.
결과론적인 결과입니다. LLAMA 2 7B와 GPT-3.5의 파라미터 수 차이가 20배 정도 나는 걸 감았했을 때, 이는 정말 엄청난 결과가 아닐수 없습니다. 물론 LLAMA 2 도 RAG를 사용한다면 당연히 GPT-3.5 보다 훨씬 떨어지겠지만요. 여기서 DSF란 Domain Specific Finetuning을 의미합니다. 특히, DSF + RAG를 하면 좋은 결과를 보일 때도 있지만, 그것보다도 RAFT가 훨씬 좋은 결과를 보이는 것이, Document를 포함한 Fine tuning이 얼마나 큰 결과를 보여줄수 있는지를 나타낸다고 생각합니다.
그럼 직관적으로 이를 어떻게 해석할 수 있을까요? 논문에서는 이를 Closed-book과 Open-book 테스트에 비유합니다. Closed book같은 경우에는 아예 zero-shot 이 되겠구요. Open book같은 경우에는 RAG가 되겠네요. 하지만 우리도 공부를 하지 않았을 경우에는 Open-book test를 한다고 해도 어디에 뭐가 있는지를 몰라서 잘 못찾지 않습니까? 하지만 공부를 했을 경우에는 open book 테스트를 했을 때 금방 찾을 수 있죠. RAFT도 이를 활용한 것으로 보입니다.
끝으로, Ablation study를 소개하고자 합니다. Ablation study란, 소거 연구, 또는 절제 연구로 번역할 수 있다고 하고, 특정 부분이나 요소를 제거하고 이로 인해 성능이 어떻게 변하는 분석하는 연구 방법입니다. Chain-of-thought, Oracle Document가 답에 들어가는 경우의 수, 또 Distractor Document 의 수나 비율 등을 어떻게 하느냐도 나타냅니다.