본문 바로가기

RAG(검색 증강 생성) 쉬운 설명 및 예시 - LLM 사용 필수 지식

hyunicecream 2024. 10. 4.

블로그 로고
블로그 로고

Summary

많은 분들이 GPT를 사용하시다 보면 별로인데? 마음에 안 드는데 등 서비스 질에 대해 부정적인 의견을 낼 때가 있습니다. 그래서 생성형 AI(Generative AI) 서비스를 누구보다 잘 사용하기 위해서는 RAG를 반드시 알고 방법에 맞게 사용하셔야 합니다. 

현재 앤트로픽의 Claude 모델과 OpenAI의 GPT 모델, o1 모델, Meta의 Llama(라마) 등 정말 많은 생성형 AI 서비스가 많은데, 잘 사용하기 위해서는 반드시 RAG의 개념을 인지하고 사용하셔야지 AI모델을 100% 이상의 성능을 발휘할 수 있습니다.

RAG는 개발자뿐만 아니라 비 개발자분들도 아셔야 현재 사용할 수 있는 생성형 AI(Generative AI)서비스를 보다 잘 사용하실 수 있습니다. 좀 더 나간다면 자신만의 아이디어와 데이터로 서비스 출시, 수익화까지 바라볼 수 있습니다.

LLM 작동 방식과 한계

LLM은 방대한 양의 데이터를 기반으로 학습되며, 수십억 개의 매개변수를 통해 인간이 단어를 사용하여 문장을 형성하는 일반적인 패턴을 학습합니다. 이러한 매개변수화된 지식은 일반적인 프롬프트에 빠르게 응답하는 데 유용하지만, 최신 정보나 구체적인 주제에 대한 깊은 이해를 제공하지는 못합니다. 이는 LLM의 학습 데이터가 정적이며, 마지막 학습일을 기준으로 하기때문입니다.

보통 저희가 흔히 쓰는 방식은 다음과 같습니다. 질문을 하면 사용하는 서비스의 LLM 모델에서 답변을 해주는 형식입니다.

기본 LLM 질의응답 구조
기본 LLM 질의응답 구조

LLM은 응답에 대한 예측이 불가능하며, 다음과 같은 문제점이 있습니다.

  • 허위 정보 제공: 답변이 없을 때 존재하지 않는 정보를 만들어냅니다(사용자에게 가장 치명적인 단점).
    • 다른 말로 "할루시네이션(Hallucination)" 인공지능 "환각" 현상이라고도 불립니다. 
  • 오래된 정보 제공: 사용자가 최신의 구체적인 정보를 원할 때, 일반적이거나 오래된 정보를 제공합니다.
  • 신뢰할 수 없는 출처 활용: 응답 생성 시 신뢰성이 낮은 출처를 참고할 수 있습니다.
  • 용어 혼동: 다양한 학습 소스에서 동일한 용어가 다른 의미로 사용되어 응답의 정확성이 떨어질 수 있습니다.

이러한 문제로 인해 LLM은 모든 질문에 답변하지만, 실제로는 사용자 신뢰에 부정적인 영향을 미칠 수 있습니다.

이러한 단점들을 극복하기 위해 등장한 개념이 RAG(검색 증강 생성)입니다. 

RAG(검색 증강 생성) 기술 배경?

인공지능(AI) 시대에서 대규모 언어 모델(LLM)은 지능형 챗봇과 다양한 자연어 처리(NLP) 애플리케이션의 핵심 기술로 활용되고 있습니다. 그러나 LLM은 그 작동 방식의 특성상 몇 가지 한계를 가지고 있습니다. 이러한 한계를 극복하고 모델의 정확도와 신뢰성을 향상시키기 위한 기술이 바로 검색 증강 생성(RAG, Retrieval-Augmented Generation)입니다.

RAG(검색 증강 생성)란 무엇인가?

검색 증강 생성(RAG)은 이러한 LLM의 한계를 보완하기 위한 기술로, 응답을 생성하기 전에 학습 데이터 외에 신뢰할 수 있는 지식 베이스를 참조하도록 합니다.

이를 통해 모델을 다시 교육하지 않고도 특정 도메인이나 조직의 내부 지식 기반을 활용할 수 있습니다. RAG는 LLM의 성능을 최적화하여 다양한 상황에서 관련성, 정확성, 유용성을 유지하는 비용 효율적인 접근 방식입니다.

RAG(검색 증강 생성) 쉬운 이해 - 축구 예시

축구로 예시를 들면 다음과 같습니다

2024-2025 시즌 프리미어리그에 있는 구단 전체와 선수와 관련된 정보를 미리 LLM 모델에 정보를 제공합니다.

형태는 PDF, Docs, Excel로 제공한다고 하면, LLM 모델은 제공한 데이터를 토대로 정보를 입력받습니다. 

이후 프롬프트 엔지니어링으로  이전(과거) 학습이 되어 있을 수 있는 구단과 선수와 관련된 정보에 대해 답변할 수 없게 프롬프트로 설정하고 출력값이든 기타 원하는 출력 방식으로 설정합니다. 

그러고 나서 질문을 하면 LLM 모델은 2024-2025 시즌 프리미어리그 등록된 구단과 선수와 관련된 정보로만 답변을 제공합니다. 

즉, RAG는 제가 준 정보를 토대로 답변을 생성하는 생성형 AI 모델인 것입니다. 

RAG(검색 증강 생성) 작동 방식 -  다이어그램

질문 → LLM → Retrieval(검색) → 데이터 기반의 정보 검색 → 데이터 기반의 정보를 토대로 답변

RAG 작동 방식
RAG 작동 방식

RAG - 프리미어리그 축구 챗봇 동작 방식 예시

"축구 정보 도우미"라는 RAG 기반 AI 챗봇을 만든다고 하면 다음과 같이 작동합니다.

1. 데이터 준비

2024-2025 시즌 프리미어리그의 모든 구단, 선수, 경기 일정, 이적 정보 등을 포함하는 최신 데이터를 수집합니다. 이 데이터는 PDF, 문서 파일, 엑셀 시트 등 다양한 형식으로 준비됩니다.

2. 데이터 처리

수집된 데이터는 AI 모델이 이해하고 처리할 수 있는 형태로 변환되어 데이터베이스에 저장됩니다.

3. AI 모델 설정

대규모 언어 모델(LLM)을 기반으로 한 챗봇을 설정합니다. 이 모델은 일반적인 언어 이해와 생성 능력을 갖추고 있습니다.

4. RAG 시스템 구현

사용자의 질문이 입력되면, 시스템은 먼저 관련된 정보를 데이터베이스에서 검색(Retrieval)합니다. 그다음, 검색된 정보를 바탕으로 AI 모델이 답변을 생성합니다.

5. 프롬프트 엔지니어링

AI 모델에게 "당신은 2024-2025 시즌 프리미어리그 전문 챗봇입니다. 오직 제공된 최신 데이터만을 사용하여 답변해야 합니다."와 같은 지시를 줍니다. 모델이 오래된 정보나 부정확한 정보를 사용하지 않도록 프롬프트로 설정해 줍니다. 

OpenAI에서 설명하는 RAG를 활용한 GPT 성능 향상

OpenAI에서 RAG의 중요성을 강조한 "A Survey of Techniques for Maximizing LLM Performance"라는 LLM 성능 극대화를 위한 엔지니어링 기법을 Youtube를 통해 설명하였습니다. 

원하시는 분은 한 번 보고 오시는 것이 좋습니다. 

출처 : OpenAI Youtube 채널
출처 : OpenAI Youtube 채널

Youtube 링크 : OpenAI의 LLM 성능을 극대화하기 위한 엔지니어링 전략

RAG는 LLM의 단점을 보완하여 사용자에게 더욱 신뢰성 있는 정보를 제공합니다. LLM을 신뢰할 수 있는 사전 결정된 지식 소스로 리디렉션함으로써 생성된 텍스트 출력을 더 잘 제어할 수 있고, 사용자는 LLM이 응답을 생성하는 방식에 대한 인사이트를 얻을 수 있습니다.

예를 들어, RAG를 활용하면 챗봇이 실시간으로 업데이트되는 최신 정보를 제공하거나, 특정 분야의 전문 지식을 정확하게 전달할 수 있습니다. 사용자 경험을 향상하고, AI에 대한 신뢰도를 높이는 데 중요한 역할을 합니다.

결국에 OpenAI에서 설명하는 최적화 방법

Prompt engineering → RAG(간단한 retrieval 추가) → Fine-tune model → 가설 답변 생성 + 사실여부 확인(환각 현상 확인) → Prompt engineering(질문 및 답변 RAG 예시 추가) → 모델 최적화

출처 : OpenAI Youtube 채널
출처 : OpenAI Youtube 채널

영상에서 RAG에 대해 설명할 때 중요한 점은 fine-tuning을 사용하지 않았다는 것입니다. prompt engineering과 re-ranking, HyDE retrieval, 도구 사용 같은 기법들로도 충분히 높은 성능을 달성할 수 있었으며, 모델이 처리할 문제의 컨텍스트를 어떻게 제공하느냐가 중요한 요소였음을 보여줍니다. 

출처 : OpenAI Youtube 채널
출처 : OpenAI Youtube 채널

아래의 그래프는 RAG 기법을 적용하면서 모델 성능이 어떻게 점진적으로 향상되었는지를 보여줍니다.

초기에는 기본 모델(Baseline)에서 질문만을 바탕으로 검색을 시작하여 69%의 성능을 기록했습니다.

이후, RAG 기법을 통해 추가적인 답변 예시를 제공하면서 성능이 꾸준히 개선되었습니다. 답변 예시를 3개(n=3), 5개(n=5)로 늘리면서 성능은 각각 77%, 80%로 향상되었습니다.

마지막에는 84%의 성능을 달성하였고,  RAG 기법을 통해 추가된 컨텍스트와 정보가 모델 성능 향상에 얼마나 효과적인지를 잘 보여주는 줍니다. 

출처 : OpenAI Youtube 채널
출처 : OpenAI Youtube 채널

마무리

검색 증강 생성(RAG)은 대규모 언어 모델의 한계를 극복하고, 생성 AI 모델의 정확도와 신뢰성을 향상시키는 기술입니다.

비-개발자 분들이나, 개발자 분들 중에 ChatGPT와 같은 텍스트 기반의 생성형 AI를 사용하시는분은 RAG를 잘 아셔야 높은 성능으로 보다 효과적으로 사용하실 수 있습니다. 

많은 기업 서비스에서 인공지능(AI) 서비스 OOO, OOO 인공지능(AI) 서비스와 같은 생성형 AI 서비스를 많이 보실 수 있는데 모두 RAG기법을 기반으로 제공되고 있습니다. RAG가 만들고자 하는 LLM이나 사용하고자 하는 서비스의 성능을 보완해서 목적/의도에 맞게 사용할 수 있도록 돕기 때문입니다. 

RAG를 이용하여 만들 수 있는 서비스 예시

  • 문서 요약
  • 교육 도우미(수학 문제 풀이, 영어 문제 풀이 등)
  • 자동 보고서 생성
  • 데이터 분석
  • 마케팅 전략 제안(데이터 기반)
  • 제품 추천 시스템 등

댓글