본문 바로가기

AI & ML/자연어 처리

RAG(Retrieval-Augmented Generation) 기초 이해

LLM(Large Language Model)

자연어 처리(NLP)에서 사용되는 인공지능 기술의 한 종류이다.

이 모델들은 대규모의 텍스트 데이터를 학습하여 언어의 구조와 의미를 이해하고, 그 학습을 바탕으로 텍스트를 생성한다.

생성, 번역, 요약, 질문 뿐만 아니라 창의성이 요구되는 분야에서도 두각을 나타내고 있다.

할루시네이션

하지만 LLM에도 문제점이 있었는데 가장 큰 것은 역시 할루시네이션일 것이다.

AI모델이 생성하는, 잘못되거나 오해의 소지가 있는 결과를 뜻한다. 

  • 불충분한 학습 데이터
  • 모델의 잘못된 가정
  • 모델 학습에 사용된 데이터의 편향 등 

위와 같은 다양한 요인으로 인해 발생할 수 있다. 

RAG란?

RAG는 이러한 할루시네이션을 줄일 수 있는 대표적인 해결책이다.

거대언어모델을 비롯한 생성형AI 모델은 엄청나게 많은 데이터를 학습하기 때문에, 단순히 답변만을 보아서는 해당 답변이 어떤 데이터에서 온 것인지 판단할 수 없다.

이때, 답변이 신뢰도를 얻을 수 있도록 외부 데이터베이스에서 관련 정보를 검색하여 생성될 답변에 통합한다. 

 

  • Retrieval (검색): 질문이나 입력 텍스트에 대해 가장 관련성이 높은 문서나 정보를 외부 데이터베이스(예: 문서 저장소, 웹사이트 등)에서 검색한다.
  • Generation (생성): 검색된 정보와 입력 텍스트를 바탕으로 새로운 답변이나 텍스트를 생성한다. 이 과정에서 일반적으로 GPT와 같은 언어 모델이 사용된다.

이 방식은 정보의 정확도와 신뢰성을 높일 뿐만 아니라, 특화된 지식을 요구하는 질문에 유용하다.

 

RAG와 Fine-Tuning

개념공부를 제대로 한 게 아니라 구현이 먼저였기에.. 2개의 개념이 헷갈렸었다.

 

파인튜닝(Fine-Tuning)

  • 개념: 파인튜닝은 이미 사전 학습된(pre-trained) 모델을 특정 작업이나 도메인에 맞게 추가 학습시키는 과정이다. 기본적으로 큰 범용 데이터셋으로 사전 학습된 모델을 사용하고, 여기에 특정 도메인의 데이터를 추가로 학습시켜서 해당 도메인에 최적화된 모델을 만든다.
  • 목적: 파인튜닝의 목적은 사전 학습된 모델을 특정 작업(예: 감성 분석, 특정 도메인에서의 질문 응답 등)에서 더 잘 작동하도록 하는 것이다. 이를 통해 모델이 해당 작업에서 더 높은 성능을 발휘할 수 있게 된다. 

RAG와 파인튜닝은 서로 다른 접근 방법을 사용하여 NLP 문제를 해결한다.

 

그렇다면 각각 어떤 상황에서 더 유리할까?

 

1. 애플리케이션이 외부 데이터에 접근할 수 있어야 하는 경우

  • RAG가 더 유리: 만약 애플리케이션이 항상 최신 데이터나 외부 리소스에 접근할 필요가 있다면, RAG가 더 좋다. 파인튜닝된 모델은 학습된 시점까지의 데이터만 알고 있으므로, 그 이후의 새로운 정보는 반영하지 못한다. 반면, RAG는 실시간으로 외부 데이터를 검색해 답변에 반영할 수 있다.

2. 모델의 스타일이나 특정 지식을 수정하거나 강화해야 하는 경우

  • 파인튜닝이 더 유리: 만약 모델이 특정한 말투, 톤, 또는 특정 분야의 지식을 잘 이해하고 반영해야 한다면, 파인튜닝이 더 좋다. 파인튜닝을 통해 모델의 행동이나 스타일을 원하는 방향으로 조정할 수 있다. 반면, RAG는 필요한 정보를 가져와서 답변하는 데 초점을 맞추기 때문에, 특정한 말투나 스타일을 바꾸는 데는 적합하지 않다.

3. 잘못된 정보(할루시네이션)를 줄이는 것이 중요한 경우

  • RAG가 더 유리: 파인튜닝은 특정 분야의 데이터를 추가로 학습시키기 때문에 잘못된 정보를 줄이는 데 도움이 될 수 있다. 하지만 완전히 새로운 질문이나 정보가 들어오면 여전히 잘못된 답변을 할 수 있다. 반면, RAG는 검색된 실제 데이터를 바탕으로 답변을 생성하기 때문에, 잘못된 정보를 줄이는 데 유리하다.

4. 라벨링된 데이터를 얼마나 확보할 수 있는가

  • RAG가 더 유리: 파인튜닝 모델의 성능은 얼마나 많은 양질의 데이터를 학습시키느냐에 달려 있다. 만약 라벨링된 데이터가 충분하지 않다면, 파인튜닝을 통해 좋은 성능을 내기 어렵다. 반면, RAG는 학습된 데이터의 양과 질에 의존하지 않고, 외부에서 검색한 정보를 활용하기 때문에 이 부분에서 더 유리하다.