# FineTuning과 RAG가 혼용되어 쓰이는 모습을 보며

최근 페이스북이나 링크드인에서 게시글을 읽다보면 두가지 용어가 혼용되어 사용되는 것 같습니다. 둘은 이름에서 부터 알 수 있듯이 명백하게 다른 방식 입니다. 두 방식 모두, 두 방법 모두 모델의 성능을 개선하는 데 사용됩니다., 특정 작업이나 문맥에 맞게 모델을 조정하는 데 쓰입니다. 그러다 보니 종종 혼용되어 사용되는 것 같습니다. 두 개의 차이에 대해 적자면 다음과 같다.

### 미세 조정(fine-tuning)

- 기존 모델에 새로운 정보를 추가하는 것이 아니라, 모델의 행동을 변경하는 데 목적이 있습니다.

- 미세 조정의 전형적인 사용 사례는 모델의 특정 반응을 보장하거나, 프롬프트의 연쇄를 필요로 하는 복잡한 출력을 생성하는 것입니다. 

- 또한, 미세 조정은 많은 사용 사례에 대해 필요한 토큰 수를 줄이거나 요청의 지연 시간을 단축시킬 수 있습니다.

### 검색-증강 생성(Retrieval-augmented Generation, RAG)

- 새로운 지식을 모델에 추가하려면 RAG을 사용해야 합니다. 

- RAG는 실제로 새로운 지식을 추가하는 것이 아니라, 요청에 사용된 프롬프트에 관련 정보를 제공합니다. 그런 다음 모델은 해당 데이터를 사용하여 사용자의 질문에 응답합니다.

- 실제 데이터셋을 사용한 실험에서 미세 조정된 모델과 RAG를 통합한 기본 모델의 정확도를 비교한 결과, 미세 조정된 모델의 정확도는 0%인 반면, RAG를 통합한 모델의 정확도는 95%였습니다. 이는 미세 조정이 모델에 새로운 지식을 추가하지 않음을 분명히 보여줍니다.

### 차이점:

- 목적과 작동 방식: 미세 조정은 기존 모델의 행동을 조정하거나 특화시키는 데 중점을 두는 반면, RAG는 외부 데이터 소스를 검색하여 모델에 추가 정보를 제공합니다.

- 지식 통합: RAG는 새로운 지식을 모델에 통합하는 것처럼 보이지만, 실제로는 모델에 직접 지식을 추가하지 않고 검색 결과를 활용합니다. 반면, 미세 조정은 기존 모델을 변형시킵니다.

![Image](https://upload.cafenono.com/image/slashpagePost/20231127/222037_Sxw46QgmOfYeMlszon?q=75&s=1280x180&t=outside&f=webp)

이들이 혼동되는 이유는 둘 다 모델의 출력을 개선하기 위해 사용되며, 특정 상황에서 비슷한 결과를 낼 수 있기 때문입니다. 하지만, 기본적인 목적과 작동 방식에서 중요한 차이가 있습니다. RAG는 외부 정보를 활용하여 응답을 생성하는 반면, 미세 조정은 모델 자체의 지식과 학습 방식을 조정합니다.

### 함께 읽으면 좋은 글

[Skelter Labs Blog - RAG vs. 파인튜닝 :: 기업용 맞춤 LLM을 위한 선택 가이드](https://www.skelterlabs.com/blog/rag-vs-finetuning)

[SELF-RAG: 언어 모델의 한계를 넘어서 - 해봄의 잡동사니](https://slashpage.com/haebom/1dwy5rvmjdkd8mp46zn9)

For the site tree, see the [root Markdown](https://slashpage.com/haebom.md).
