최근 GPT-4o 등, 자연어 처리(NLP) 분야에서 대형 언어 모델(Large Language Model, LLM)이 큰 주목을 받고 있습니다. GPT-4o와 같은 강력한 LLM은 대화형 AI 챗봇, 자동 글쓰기, 번역, 코딩 등 다양한 애플리케이션에서 혁신을 불러일으키고 있습니다. 하지만 특정 도메인이나 사용 사례에 딱 맞는 챗봇을 만들기 위해서는 LLM에 추가적인 커스터마이징이 필요합니다. LLM 기반 챗봇을 커스터마이징하는 두 가지 주요 방법인 RAG(Retrieval-Augmented Generation)와 Fine-Tuning에 대해 알아보겠습니다.
RAG 기반 챗봇은 크게 세 단계로 동작합니다.
벡터 임베딩 변환 및 저장: 챗봇이 참조하게 될 관련 문서나 데이터베이스를 벡터 임베딩으로 변환하여 저장합니다. 이때 OpenAI의 text-embedding-3-small 같은 임베딩 모델을 사용합니다.
질문 임베딩 및 비교: 사용자가 질문을 입력하면 해당 질문을 마찬가지로 임베딩하여 저장된 벡터들과 비교합니다. 그리고 가장 유사한 문서들을 코사인 유사도 등의 기법으로 검색해 돌려줍니다.
답변 생성: 검색된 문서 + 프롬프트 엔지니어링을 바탕으로 LLM이 최종 답변을 생성합니다. 문서를 요약하기도 하고, 직접 답변을 만들어내기도 합니다.
RAG 방식의 가장 큰 장점은 실제 문서에서 정보를 찾아주기 때문에 정확도가 높습니다. 잘 모르는 분야에 대해 거짓을 말하는 LLM의 환각(hallucination) 문제를 어느 정도 해결할 수 있습니다. 또한 따로 도메인 특화 데이터를 학습시킬 필요가 없고, 새로운 문서를 추가하는 것만으로도 쉽게 업데이트할 수 있습니다.
하지만 검색 성능에 전체 성능이 크게 좌우되고, 대규모 벡터 저장소 유지에 많은 컴퓨팅 자원이 소모된다는 단점이 있습니다. 검색과 생성이라는 두 단계로 이루어져 구현과 유지보수도 복잡해질 수 있죠.
Fine-Tune 기반 챗봇은 LLM을 특정 도메인의 데이터로 추가 학습시켜 최적화된 모델을 만드는 방식입니다.
데이터 수집 및 전처리: 특정 도메인에 맞는 질문-답변, 대화, 문서 등의 데이터를 수집하고 전처리합니다.
파인튜닝: 수집된 데이터로 사전학습된 LLM을 파인튜닝합니다. 파인튜닝이란 모델의 기존 가중치를 조정하여 새로운 데이터에 맞게 최적화하는 과정을 말합니다.
모델 배포: 파인튜닝된 모델을 배포하여 사용자 질문에 맞춤형 답변을 제공합니다.
Fine-Tune 방식은 특정 도메인에 정말 잘 맞는 답변을 만들어낼 수 있다는 게 가장 큰 장점입니다. 해당 도메인의 용어와 맥락을 깊이 이해하고 있기 때문입니다. 또한 모델이 직접 일관된 답변을 만들어내므로 따로 검색 과정이 필요없습니다.
반면에 고품질의 대규모 도메인 데이터 확보가 관건이라는 점, 그리고 새로운 정보를 반영하기 위해서는 모델을 재학습해야 한다는 점이 단점으로 꼽힙니다. 학습에 드는 컴퓨팅 자원과 시간 비용도 만만치 않습니다.
결국 RAG와 Fine-Tuning, 어떤 방법이 더 낫다고 단정 짓기는 어렵습니다. 상황에 따라 적절한 방법을 선택하는 것이 중요합니다.
정확한 정보 제공과 빠른 업데이트가 중요하다면 RAG가 더 나은 선택입니다. 반면 특정 도메인에 딱 맞는 일관된 답변을 원한다면 Fine-Tuning이 더 어울리는 선택입니다.
또한 두 방법을 함께 사용하는 하이브리드 방식도 고려해 볼 만합니다. 각 방법의 장점은 살리고 단점은 보완할 수 있으니까요. 예를 들어 Fine-Tuning으로 도메인 특화 모델을 만들고, 여기에 RAG를 결합하여 최신 정보를 반영하는 식으로 맞춤형 챗봇을 제작할 수 있습니다.
풀링포레스트는 다양한 방법을 통해 챗봇을 개발하고 있어요. RAG와 Fine-Tuning은 저희가 가장 많이 활용하는 두 가지 핵심 기술입니다.
때로는 RAG의 강점을 살려 방대한 양의 문서에서 정확한 정보를 실시간으로 찾아주는 챗봇을 만들기도 하고, 때로는 Fine-Tuning을 통해 브랜드의 톤앤매너를 완벽히 익힌 듯한 일관되고 친근한 챗봇을 선보입니다.