4.2K

LLM 기반 제품을 만들다 보면 “이 작업은 파인튜닝으로 해결해야 할까, 아니면 RAG가 더 적합할까?”라는 질문을 가장 먼저 마주하게 됩니다. 두 방법은 비슷해 보이지만 해결하는 문제와 강점이 분명히 다릅니다. 이 글에서는 실제 사례를 통해 두 접근 방식의 차이를 명확히 짚고, 어떤 상황에서 어떤 선택을 해야 하는지 실무 관점에서 정리해 보겠습니다.
왜 LLM을 파인 튜닝해야 할까요? 사전 훈련된 LLM에 몇 가지 예시만 제공하는 퓨샷 방식만으로는 충분하지 않은 걸까요?
두 가지 사례를 살펴보며 이를 이해해 보겠습니다.
텍스트에서 과거 시제로 작성된 문장을 미래 시제로 바꾸는 작업을 한다고 해봅시다. 이를 위해 몇 가지 입력-출력 예시를 제공했지만, 모델은 문장을 제대로 식별하지 못하거나 시제를 정확히 변환하지 못해 기대만큼의 성능을 보여주지 않습니다.
지침을 더 상세히 적고 문법 규칙과 예외를 프롬프트에 추가해도 크게 개선되지 않고, 프롬프트만 점점 길어질 뿐입니다. LLM은 프롬프트로 처리할 수 있는 지시의 한계가 있으며 실제 컨텍스트 윈도도 생각보다 훨씬 좁기 때문에 결국 이 방식은 한계에 부딪히게 됩니다.

이번엔 금융 텍스트에서의 질의응답을 예로 들어보겠습니다.
LLM은 금융 전문가가 아니므로 전문적인 금융 용어를 이해하고 처리하는 데 어려움을 겪습니다. 이를 보완하기 위해 용어 정의를 프롬프트에 추가해도 개선 폭은 제한적이며, 원하는 수준에 도달하려면 사실상 CPA 시험 범위 전체를 컨텍스트 윈도 안에 넣어야 하는 상황이 됩니다.

바로 이런 상황에서 파인 튜닝이 필요합니다. 입력-출력 쌍으로 구성된 데이터셋을 제공하면 모델은 이 매핑 관계를 학습하면서 내부 가중치를 업데이트하게 됩니다. 이렇게 하면 단순한 인컨텍스트 학습만으로는 해결할 수 없는 작업들도 가능해집니다.
위에서 언급한 두 가지 작업 모두에서 모델을 파인 튜닝하면 성능이 크게 향상됩니다. 하지만 파인 튜닝이 항상 적절한 것은 아닙니다. 만약 언어 모델에 새로운 사실이나 최신 지식을 추가하는 것이 주요 목표라면 파인 튜닝보다 검색 증강 생성(RAG) 방식이 더 적합합니다.
파인 튜닝은 모델이 특정한 입력-출력 관계를 학습하거나, 새로운 텍스트 도메인에 익숙해지게 하거나, 더 복잡한 능력과 행동을 표현 해야 할 때 가장 효과적입니다.
PEFT Parameter-Efficient Fine-Tuning 의 핵심은 전체 모델 파라미터를 모두 업데이트하는 대신, 일부만 선택적으로 업데이트 함으로써 연산과 저장 비용을 크게 줄이는 데 있습니다. 현재 널리 사용되는 PEFT 기법들은 크게 다음 세 가지로 나눌 수 있습니다.
① 새로운 파라미터 추가: 기존 모델에 추가 파라미터를 삽입하고, 지속적 훈련에서는 해당 파라미터들만 학습하는 방식입니다.
② 기존 파라미터의 일부만 선택적으로 업데이트: 전체 파라미터 중 일부만 선택해 훈련합니다. 이때 선택은 사전에 지정하거나 학습 과정에서 자동으로 결정할 수 있습니다.
③ 저차원 근사 기법 (LoRA) : 큰 행렬을 더 작은 차원의 행렬로 근사하여 비슷한 정보를 유지하면서도 학습해야 할 파라미터 수를 줄이는 방식입니다.
RAG는 외부 데이터 소스를 사용해 LLM의 기능을 증강하는 다양한 기법을 설명하는 포괄적인 용어입니다. RAG를 사용하는 이유는 다음과 같습니다.
• LLM이 사전 훈련 데이터셋에 포함되지 않은 개인 데이터나 독점 데이터를 참조하게 하려면, LLM을 해당 데이터로 다시 사전 훈련하는 것보다 RAG를 사용하는 방법이 훨씬 가볍고 효율적입니다.
• 환각 현상을 줄이고자 할 때, LLM이 내부 지식에만 의존하지 않고 검색을 통해 제공된 데이터를 참조하게 할 수 있습니다. RAG는 이를 가능하게 해 줄 뿐만 아니라, 출력 결과에 실제 데이터 소스를 연결해 정확히 인용하게 해 줍니다.
• 사전 훈련 이후에 발생한 최신 사건이나 개념에 관한 질문에 응답하려 할 때 유용합니다. LLM 파라미터를 최신 정보로 갱신하는 MEMIT 같은 메모리 편집 기법도 있지만, 현재로서는 신뢰성과 확장성 면에서 제한이 있습니다. 지속적으로 LLM을 훈련시켜 최신 지식을 반영하는 것은 비용도 많이 들고 리스크도 큽니다.
• 사전 훈련 데이터에 드물게 등장하는 롱테일long-tail 엔티티에 관한 질문에 답하도록 하고 싶을 때도 RAG가 효과적입니다.
RAG이 왜 필요한지 살펴봤으니, 이제는 실제로 RAG를 어디에 활용할 수 있는 지를 알아보겠습니다. 대표적인 활용 시나리오는 다음 네 가지입니다.
① 외부 지식 검색
가장 일반적이고 실무에서 가장 성공적으로 활용되는 사례입니다. 앞서 설명했듯이, RAG는 LLM의 지식 공백을 메우거나 환각 현상의 위험을 줄이는 데 사용할 수 있습니다.
② 컨텍스트 히스토리 검색
LLM은 컨텍스트 윈도 크기에 제한이 있습니다. 하지만 하나의 질의에 답하는 데 필요한 컨텍스트의 양은 이보다 훨씬 많을 때가 많습니다. 또한 사용자와의 대화를 컨텍스트 윈도보다 더 길게 유지하고 싶을 때도 있습니다. 이런 경우, 필요한 시점에 대화 이력이나 세션의 컨텍스트 일부를 검색해 활용할 수 있습니다.
③ 인컨텍스트 훈련 예시 검색
퓨샷 학습은 LLM이 입력과 출력 간의 매핑 구조를 학습하는 데 효과적인 접근입니다. 이때 현재 입력에 맞춰 적절한 퓨샷 예제를 동적으로 선택하면 더 효과적입니다. 이러한 예시는 추론 시점에 훈련 데이터 저장소에서 검색해 사용할 수 있습니다.
④ 도구 관련 정보 검색
LLM은 워크플로의 일환으로 소프트웨어 도구를 호출할 수 있습니다. 사용 가능한 도구 목록과 설명은 도구 저장소에 저장되며, LLM은 검색을 통해 해당 작업에 가장 적합한 도구를 선택할 수 있습니다. 여기에 포함되는 정보로는 API 문서 등이 있을 수 있습니다.
에이전트 워크플로의 각 단계에서 LLM은 다음 단계 중 하나를 사용해 작업을 진행할 수 있습니다.
• 내부 기능 사용
• 여러 데이터 저장소 중에서 선택
• 여러 소프트웨어 도구 중에서 선택
LLM이 파라미터 메모리만을 사용해 완전히 해결할 수 있는 작업이 있지만, 하나 이상의 데이터 저장소에도 이를 해결하는 데 필요한 데이터가 포함되었을 수 있습니다. 이럴 때는 앞서 제시한 RAG의 모든 이점을 고려해 RAG를 기본적으로 사용해야 할까요?
앞서 살펴봤듯이 LLM은 롱테일 정보에서 어려움을 겪는 경향이 있으며, RAG가 롱테일 엔티티에 관한 질문에 답하는 효과적인 수단이 될 수 있습니다. 하지만 말렌 연구진은 인기 있는 엔티티에 관한 질의에는 LLM이 RAG보다 더 잘 답할 때도 있다고 지적합니다. 이는 관련 없거나 잘못된 정보를 검색해 LLM을 그릇된 길로 이끌 수 있는 검색 모델의 불가피한 한계 때문입니다.
주어진 질의에 답하는 데 검색을 사용할지 LLM의 파라미터 메모리에 의존할지를 동적으로 결정할 수 있습니다. 올바른 접근법을 선택하는 규칙은 다음과 같습니다.
• 질의가 더 빈번하게 나타나는 엔티티에 관한 것인가: 예를 들어 LLM은 위키백과 페이지가 미완성인 지역 밴드의 대체 드러머보다는 테일러 스위프트의 생일을 암기할 가능성이 더 높습니다.
• 질의에 시의성 제약이 있는가: 질의를 처리하는 데 필요한 데이터가 LLM의 지식 컷오프 날짜 이후에 등장했다면 최신 데이터를 검색해야 합니다.
RAG를 사용할지, 모델을 파인 튜닝할지는 궁극적으로 다음의 질문으로 이어집니다. “이 작업에서 LLM 자체로 처리 가능한 부분은 어디까지이며 외부 지식에 의존해야 하는 범위는 어디까지인가요?”
작업 수행에 외부 정보가 필요하다면 검색 기반 방식과 파인 튜닝을 모두 사용할 수 있습니다. 검색은 요청 시 필요한 외부 정보를 동적으로 가져오는 방식이며 상대적으로 빠르고 비용이 적게 들지만, LLM이 정보의 컨텍스트나 깊이를 충분히 학습할 기회는 주어지지 않습니다.
반면, 지속적 사전 훈련이나 파인 튜닝은 모델이 외부 정보를 구조적으로 학습하게 하는 방법 입니다. 그러나 학습 비용이 많이 든다는 단점이 있습니다. 오바디아 연구진은 외부 지식이 필요한 작업에서 RAG와 파인 튜닝을 비교했으며, 지식 집약적 작업에서 RAG가 파인 튜닝을 지속적으로 능가한다고 밝혔습니다.
아시다시피 LLM은 개념이나 사실을 암기하는 데 많은 샘플이 필요합니다. 따라서 파인 튜닝 데이터셋의 반복이나 증강을 통해 파인 튜닝의 효과를 개선할 수 있습니다. 지식 집약적 작업에서도 RAG와 파인 튜닝 중 하나만 선택할 필요는 없습니다. 전문 도메인에서 작업하거나 특정 스타일이나 형식의 출력이 필요할 때는 도메인 및 작업별 데이터로 LLM을 파인 튜닝하고, 이 파인 튜닝된 모델과 함께 RAG를 하위 애플리케이션에 사용할 수 있습니다.
실제로 많은 사용 사례에서는 RAG만으로도 충분하며, 파인 튜닝이 첫 번째 해결책이 되어서는 안 됩니다.
RAG와 파인 튜닝은 상호 보완적일 수 있습니다. 검색과 파인 튜닝 모두 LLM 도구 상자의 강력한 부분입니다. 이 내용을 통해 여러분이 실제 환경에서 이를 구현하고 배포하기에 충분히 준비되었기를 바랍니다.
위 콘텐츠는 『실무로 통하는 LLM 애플리케이션 설계』에서 내용을 발췌하였습니다.

댓글