Retrieval Augmented Generation, 검색증강생성
지금으로부터 딱 1년 전쯤, chatGPT의 등장으로 그 관심이 엄청나게 뜨거웠습니다. 1년이 지난 현재, GPT의 한계를 보완하기 위해 'RAG'라는 녀석이 등장했는데요! 요즘 개발자들 사이에서 핫하다는 RAG에 대해 알아보겠습니다.
해당 글에서는 RAG의 등장배경과 기본적인 RAG모델에 대해 다루고, 다음 글에서는 보다 심화된(advanced) RAG에 대해 다루겠습니다:)
1. 기존 LLM(Large Language Model)의 한계
위 그림처럼, 기존에 문장을 생성할 때는 사용자의 질의가 들어오면 사전에 학습된(pre-trained) LLM을 활용해 답변을 얻을 수 있었습니다. 이렇게 생성된 결과물(답변)은 아래 3가지 이유로 정확성이 떨어질 수 밖에 없었는데요.
*LLM 결과물의 정확성이 떨어지는 이유
(1) LLM은 환각현상이 일어날 수 있다.
(2) LLM은 '사전에 학습된'모델이므로 최신 정보에 접근하기 어렵다.
(3) 사용자 질의내용과 관련된 정보는 LLM이 사전에 학습한 범위를 벗어날 수 있다.
이와 같은 한계로 인해 '검색증강생성'이라고도 불리는 'RAG(Retrieval Augmented Generation)'가 등장하게 되었습니다.
2. RAG의 등장(두둥!)
RAG의 경우, 사용자가 질의를 하면 바로 사전학습된 LLM을 통해 답변을 하는 것이 아니라,
'외부지식(정보)'를 검색한 후에 LLM을 거쳐 응답을 한다는 것이 가장 큰 특징입니다.
그동안 문장생성 AI의 경우, 할루시네이션 즉 '환각'의 문제점이 가장 크게 대두되었는데요,
RAG는 답변하기 전, 사용자 질의와 관련된 정보를 한 번 더 검색한 후, 해당 정보를 기반으로 답변을 하기에 이러한 환각현상을 줄일 수 있습니다.
뿐만 아니라, 기존 문장생성 AI의 경우 '사전에 학습된'모델이기에 최신 정보에 기반한 답변을 기대하기 어려웠는데 이런 한계도 보완할 수 있는 것이죠!
무엇보다, RAG의 관심도가 급격히 상승하게 된 가장 큰 이유는 바로 '비용적인 측면'때문입니다.
LLM의 할루시네이션 문제를 줄일 수 있는 방법이 아예 없었던 건 아니에요. 여러분들도 익히 들어보셨을 Fine-Tuning을 통해 이런 문제를 조금 줄일 수 있었는데요, Fine-Tuning은 말 그대로 미세하게 조정을 하면서 답변 결과의 정확성을 조금씩 높이는 방법입니다만,
이미 학습이 되어있는 LLM을 다시 학습시키는 것도, Fine-Tuning을 하는 것도 모두 어마무시한 비용이 발생하게 됩니다.
하지만 RAG의 경우, 답변을 하기 전 '외부지식(정보)'를 검색한 후 답변을 하기에 다시 학습을 시킬 필요가 없는 것이죠. 즉, 기존 LLM의 재학습, Fine-Tuning보다 학습비용이 발생하지 않으면서도 답변 결과의 정확성을 높일 수 있다는 것입니다. 바로 이 점이 RAG가 개발자들 사이에서 핫한 이유라고 할 수 있습니다.
그렇다면, RAG라는 것은 과연 어떻게 외부정보를 검색해오는 것일까요?
외부 지식단계를 구축하는것은 크게 4단계로 이루어집니다.
a. Extract/ Parse
b. Chunk
c. embeddings
d. Index
예를 들어 사용자 질의가 어떤 브리핑자료와 관련된 내용이라고 한다면 먼저 해당 브리핑자료의 텍스트를 추출해 구문분석을 한 후, 몇 개의 덩어리로 나눕니다. 이렇게 나누어진 텍스트 덩어리를 벡터화, 즉 컴퓨터가 처리를 더 잘 할 수 있도록 문자를 숫자로 바꾸어주어 이를 인덱스화 하면 관련 정보를 찾을 수 있는 것이죠!
이렇듯 RAG는 기존 문장생성AI의 범용적인 응답, 사실이 아닌 것을 사실처럼 답하는 환각현상, 최신정보 접근의 어려움 등의 한계를 보완했기에 특정분야에서의 답변을 비교적 정확히 할 수 있습니다.
3. RAG의 Key Ability(핵심능력)은?
그렇다면 RAG의 핵심 기능은 무엇인지 조금 더 살펴볼게요!
(1) NOISE ROBUSTNESS
검색 시, 해당 문서에 사용자 질의와는 관련이 없는 정보가 있거나 잡음(noise)이 많을 경우, 이를 처리하는 능력(기능)
→ 기존 LLM모델에서의 환각현상을 보완하기 위한 RAG이므로, 사용자 질의와 관련이 없는 내용을 답하면 안 되겠죠?
(2) NEGATIVE REJECTION
외부지식(정보)가 충분하지 않을 경우, 답변을 거부하는 능력(기능)
→ 이 역시, 부족한 정보를 토대로 무리하게 답변을 한다면 거짓된 정보를 안내할 수 있습니다.
(3) INFORMATION INTEGRATION
사용자의 더 복잡한 질문에 답변하기 위해 여러 출처의 정보를 통합하는 능력(기능)
→ 우리도 어떤 정보를 찾을 때 하나의 문서보다 여러개의 문서를 참조하는 것처럼 다양한 정보를 통합하여 답변한다면 어렵고 복잡한 질의도 답변할 수 있습니다.
(4) COUTERFACTUAL ROBUSTNESS
검색된 외부지식(정보)에서의 잘못된 정보를 식별하고 처리하는 능력(기능)
GPT3.5, GPT4 모델로 뜨겁게 달아올랐던 2023년.
2024년에는 지난해 GPT모델에 기울여진 관심만큼 RAG에 대한 관심이 쏟아질 것 같습니다.