최근 프로젝트에서 LLM의 한계를 극복할 수 있는 RAG(Retrieval-Augmented Generation) 기술이 주목받고 있다는 사실을 알게되어 사용해 보았습니다.
이에 대한 간단한 글을 작성해 보려고 합니다.
RAG 란?
RAG(Retrieval-Augmented Generation / 검색-증강 생성)는 대규모 언어 모델의 출력을 최적화하여 응답을 생성하기 전에 학습 데이터 소스 외부의 신뢰할 수 있는 지식 베이스를 참조하도록 하는 프로세스입니다.
이에 대해 자세히 알아보기 전에 '대규모 언어 모델'이 무엇인지 부터 알아보겠습니다.
LLM(Large Language Model / 대규모 언어 모델)은 은 지능형 챗봇이나 자연어 처리 애플리케이션을 지원하는 핵심 인공 지능 기술입니다.
LLM은 굉장히 많은 양의 데이터 학습을 통해 높은 자연어 이해력을 지니고 있어, 언어의 구조와 의미를 이해하고 다양한 언어 관련 작업을 처리할 수 있습니다.
대표적인 모델로는 OpenAI의 GPT,구글의 Gemini, 메타의 LLAMA 등이 있습니다.
하지만 LLM에는 다음과 같은 단점이 존재합니다.
예를 들어, 제가 개발한 게임의 NPC에 관련된 질문은 일반적인 LLM은 정확한 답변을 할 수 없어 추정된 정보를 제공합니다.
예를 들어, 노벨문학상을 수상한 '한강' 작가의 노벨문학상 수상 정보는 비교적 최근의 정보이기에 정확한 답변을 하지 못할 수 있습니다.
RAG는 이러한 한계를 극복하기 위해 LLM이 답변을 생성하기 전에 특정 도메인에 대한 지식과 같은 외부 데이터 소스를 참조하여 생성 텍스트 출력을 더 잘 제어하고 답변의 정확도를 높이도록 합니다.
RAG의 동작 과정

1. 입력 쿼리 작성
RAG 기술은 입력쿼리로 시작됩니다.
사용자는 특정 답변을 위한 질문 또는 작업 요청 텍스트를 입력합니다.
입력:
- "'알렉산드로 춘봉'의 나이는 몇살이야?"
2. 입력쿼리 벡터 임베딩
RAG 기술은 LLM의 원래 학습 데이터 세트 외부에 있는 새 데이터 소스를 참조합니다.
텍스트, 이미지 등과 같이 다양한 형식의 외부 데이터는 벡터표현으로 변환되어 벡터 데이터베이스에 저장되어 있습니다.
이러한 외부 데이터와의 매칭을 위해 사용자 입력쿼리 또한 임베딩을 통해 벡터표현으로 변환합니다.
벡터 데이터베이스란?
벡터 데이터베이스는 정보를 벡터(데이터 객체의 수치 표현)로 저장하는 데이터베이스입니다.
벡터 임베딩이란?
벡터 임베딩은 주제, 단어, 이미지 또는 기타 데이터를 숫자로 표현한 것입니다.
벡터 데이터베이스에 저장된 정보:
- "게임 '밥은 먹고 다니냐'의 NPC 정보"
- NPC 알렉산드로 춘봉
- 나이 : 32
- 성별 : 남성
- 직업: 여행자 겸 음식 평론가
- 출신지: 남쪽의 바다 근처 작은 마을
3. 관련 자료 검색 추출
추출된 정보 :
- 알렉산드로 춘봉, 나이 : 32
4. LLM 프롬프트 확장 통신
검색된 관련 외부 데이터를 컨텍스트에 추가하여 사용자 입력쿼리를 보강합니다. 이렇게 보강되고 확장된 입력을 LLM과 통신하여 전달합니다. 이 단계에서는 신속한 엔지니어링 기술을 사용하여 LLM과 효과적으로 통신합니다.
확장된 입력쿼리 :
- [ 알렉산드로 춘봉, 나이 : 32 ] 라는 정보에서 알렉산드로 춘봉의 나이는 몇살이야?
5. 텍스트 답변 생성
생성된 답변 :
- "알렉산드로 춘봉의 나이는 32세입니다."
RAG의 장점
1. 비용 효율적 구현
기존의 LLM 학습 데이터 외부에 있는 데이터를 교육하기 위해 드는 계산 및 재정적 비용은 상당히 큽니다.
RAG는 LLM에 새 데이터를 도입하기 위한 비용 효율적인 접근 방식입니다.
자체 LLM을 보유할 필요가 없어 필요한 컴퓨팅과 저장 공간이 더 적고, 모델을 미세 조정하는 데 시간과 비용을 들일 필요가 없습니다.
2. 보다 정확하고 입력에 부합한 정보 제공
위에서 언급했듯 기존의 LLM의 경우 훈련되지 않은 입력쿼리에 대해 부정확한 응답을 제공하는 경우가 있습니다.
RAG는 관련 데이터 소스의 추가 참조를 근거로 하여, 모호한 문의에 더 정확하게 응답할 수 있습니다. LLM이 특정 질문에 대해 잘못된 정보 소스를 참조하는 경우 문제를 해결하고 수정할 수도 있습니다.
이를 통해 LLM을 활용한 생성형 인공 지능 기술을 보다 폭넓게 접근하고 사용할 수 있습니다.
3. 최신 정보 제공
4. 사용자 신뢰 강화
RAG는 외부 데이터 소스를 인용하고 답변에 소스에 대한 인용 또는 참조를 포함하여 사용자에게 제공함으로 응답을 뒷받침할 수 있습니다.
사용자는 추가 설명이나 세부 정보가 필요한 경우 데이터 소스 문서를 직접 찾아볼 수도 있습니다. 이를 통해 답변에 대한 사용자의 신뢰와 확신을 높일 수 있습니다.
RAG의 한계
1. 부정확한 정보의 가능성
RAG는 외부 데이터에 의존하여 동작니다.
벡터 데이터베이스에 저장된 정보, 검색된 정보가 올바르지 않으면 부정확한 결과가 나올 수 있습니다.
이를 위해 정기적으로 참조하는 외부 데이터를 업데이트 해야할 필요가 있습니다.
2. 비용적 문제
RAG에는 대규모 외부 데이터베이스를 검색하는 것이 포함됩니다.
LLM에 새로운 데이터를 학습시키는 것보다 빠르고 비용적으로 효율적인 방법이지만, 여전히 컴퓨팅 측면에서 비용이 많이 들고 느립니다.
3. 사실적 정확성 기반 답변
RAG는 사실적 정확성을 기반으로 합니다.
기존의 LLM보다 상상력이 풍부하거나 허구적인 콘텐츠를 생성하는 능력은 떨어질 수 있습니다.
창의적인 콘텐츠 생성에는 사용이 제한되기 때문에 목적에 따른 사용 선택이 필요합니다.
정리
지금까지 RAG 기술의 정의, 동작 과정, 장점과 한계를 알아보았습니다.
RAG 기술은 LLM의 한계를 보완해주는 창의적인 대안이고,
여러 분야에서 활용하기에 좋은 기술입니다.
하지만 최근 LLM 기술이 빠르게 발전하면서, 더 큰 컨텍스트를 처리할 수 있고 더 효율적인 LLM이 등장하고 있습니다.
이에 따라 RAG의 필요성은 점점 줄어들 것이라고 생각합니다.
참고
https://aws.amazon.com/ko/what-is/retrieval-augmented-generation/
https://www.elastic.co/kr/what-is/retrieval-augmented-generation