RAG와 Fine-Tuning 차이
사실 RAG와 Fine-Tuning 중에 하나만을 써야 하는 건 아니다. 두 개를 전부 사용하는 모델도 있다. 하지만 일단 이 두가 지 접근법을 비교하는 건 의미가 있을 것 같다.
Knowledge source
- RAG
- parametric + non-parametric
- 즉, external knowledge를 결합해서 시너지 효과를 보는 방법론
- Fine-Tuning
- 베이스 모델을 태스크에 맞게 추가로 파인튜닝
- 즉, parametric knowledge를 업데이트하는 방식
Knowledge update
- RAG
- 소스가 되는 외부 데이터베이스를 업데이트함으로써 모델 전체를 최신화할 수 있다.
- Fine-Tuning
- 반면, 파인 튜닝 방식으로 모델을 최신화하기 위해서는 학습을 다시 시켜야 한다. 살짝 비효율적일 수 있다.
Model Customazation
- RAG
- 파인튜닝 없이 RAG만 사용할 경우, 제너레이션을 할 때 특정 형식이나 어투에 딱 들어맞게 만들기는 조금 어려울 수 있다.
- Fine-Tuning
- 제너레이터 자체를 추가로 학습시켜 특정 형식이나 어투에 맞게 조정하기 쉽다.
Interpretability
- RAG
- 중간에 retrieval 되는 문서를 볼 수 있기 때문에 투명성은 증가한다고 생각할 수 있다.
- Fine-Tuning
- Large Language의 단점으로 중간 과정을 추적할 수 없다는 점이 있는데 파인튜닝의 경우 이 단점을 그대로 가져간다.
- 파인튜닝을 해서 파라미터를 태스크에 맞게 업데이트했다고 해서 중간 과정이 불투명하다는 사실이 바뀌지는 않는다.
Computational resource
- RAG
- Retrieval과 Generator를 어떻게 구성하냐에 따라 낮은 리소스부터 높은 리소스까지 달라질 수 있다.
- Fine-Tuning
- 일반적으로 일정하게 많은 리소스가 소요된다.
Hallucinations
- RAG
- RAG를 사용한다고 Hallucination을 100% 방지할 수 있는 것은 아니지만, 중간에 실제 다큐먼트를 전달함으로써 어느 정도 완화하는 효과를 기대할 수 있다
- Fine-Tuning
- 도메인 데이터에 맞게 훈련을 함으로써 도메인 데이터에 대한 모델의 parametric knowledge가 늘어나고 그럼에 따라 Hallucination이 조금 줄어드는 효과는 조금 있을 수 있겠지만 모델이 트레인 과정에서 친숙하게 보지 못했던 input이 들어왔을 때 할루시네이션이 잘 일어날 수 있다는 것은 동일하다.
Latency
- RAG
- 리트리버와 제너레이터를 모두 거쳐야 하기 때문에 RAG에서는 오히려 증가할 수 있다. 그리고 Iterative Generation이나 Self-Attention Mechanism같은 특수한 구조를 사용한다면 인퍼런스 시간은 점점 늘어난다.
- Fine-Tuning
- 반면, 파인튜닝같은 경우 이런 부수적인 과정 없이 그냥 input이 모델에 들어가서 나오는 과정만 있기 때문에 레이턴시는 RAG에 비해서 짧다고 할 수 있다.
Fine-Tuning
그렇다고 RAG 방법론이 다른 방법론과 완전히 단절된 것은 아니다.
X축은 커질수록 모델을 많이 변형한 것이고, Y축은 커질수록 External knowledge 가 개입된다.
화살표를 따라가 보자.
먼저 주어진 문제를 묘사하는 Standard Prompt가 있다. 여기는 프롬프트의 영역이다. 이후 인컨텍스트 러닝 방식으로 Few-shot 예시를 제시하는 Few-shot Prompt가 있다. 이 단계에서는 외부 지식이 약간 개입된다. XoT Prompt는 Chain of Thoughts처럼 모델이 추론 과정을 생성하게 하는 프롬프트 방식이다. 스탠다드에서 점점 발전할수록 모델에게 주는 정보량은 많아지지만, 모델 자체를 변형시키지는 않으므로 X축 상의 위치는 고정된다.
Naive RAG, Advanced RAG로 넘어가면서 모델에게 점점 더 많은 정보가 주어진다. 이 시점에서는 외부 지식이 프롬프트 형식으로 모델에 제공되지만, 제너레이터는 여전히 Frozen Language 모델이다. 따라서 X축의 위치는 변하지 않는다.
Modular RAG로 넘어가면서 여러 모듈이 추가되기 시작한다. 그리고 All of the Above는 제너레이터와 리트리버를 파인튜닝하는 방법을 말한다. 우리가 흔히 사용하는 대부분의 최신 언어 모델도 이 방법론을 활용하고 있다.
위 도표를 통해 생성형 언어 모델을 다루는 여러 방식들이 서로 단절된 것이 아니라, 겹치고 연결되는 부분이 있는 방법론이라는 것을 알 수 있다.
Small Language Models (SLMs)
최근, Large Language Model(LLM)의 성능 증가로 인해 많은 주목을 받고 있다. 그러나 일각에서는 Small Language Model(SLM)의 활용에 대해서도 재조명되고 있다.
SLM은 LLM처럼 거대한 파라미터 수와 데이터를 다루지는 않지만, 여러 가지 이점을 가지고 있다.
우선, 컴퓨팅 자원이 훨씬 적게 들고 추론 시간도 빠르다. 또한, 파인튜닝의 부담이 적어 특정 도메인에 적용하기가 훨씬 쉽다. 태스크의 복잡도가 SLM의 용량으로 충분히 커버될 수 있다면, 굳이 값비싼 비용을 감수하면서 LLM을 고집할 필요는 없다.
RAG 개념과 SLM을 함께 사용하면, RAG는 SLM의 부족한 지식을 보완해 줄 수 있다. LLM처럼 모든 것에 답변하는 모델을 만들기는 어렵지만, 특정 도메인 내에서는 SLM이 충분한 성능을 낼 가능성도 있다.
파인튜닝을 단독으로, 혹은 RAG와 함께 사용하여 SLM을 도메인에 맞게 다듬을 수 있다. 이때 두드러지는 이점은, 성능은 LLM보다 떨어지지만, 파인튜닝 시 들어가는 컴퓨팅 자원이 SLM을 사용할 때 훨씬 적다는 점이다. SLM을 단독으로 사용하는 것 외에도, RAG 프레임워크 안에서 LLM과 함께 SLM을 사용하는 경우도 있다.
예를 들어, 롱 LLM 링구안(Long LLM Linguan)은 리트리버가 전달해 준 문서들을 재정렬하는데 SLM의 퍼플렉시티를 사용했다. 2023년에 발표된 피에타 덴 리랭커(Pieta Den Re-ranker) 패러다임은 SLM을 필터로 사용하고 LLM을 리랭커로 사용하여 LLM과 SLM의 장점을 결합한 방식이었다.
이와 같이, SLM은 특정 상황에서 매우 효율적인 대안이 될 수 있다. SLM의 효율성과 LLM의 성능을 결합하여 최적의 결과를 얻는 다양한 접근법이 연구되고 있다.
'RAG' 카테고리의 다른 글
Retrieval Strategy and Instruction Tuning (2) | 2024.11.14 |
---|---|
[RAG] RAG 파이프라인 (1) | 2024.08.30 |
Bert와 GPT 차이점 (1) | 2024.08.30 |
[RAG] RAG의 기본 개념 및 트랜스포머 어텐션 설명 (1) | 2024.08.19 |
페르소나를 이용한 챗봇 (2) - chat memory 추가 (0) | 2024.08.13 |