LLM의 한계를 보완하는 기술 : RAG(Retrieval-Augmented Generation)
RAG에 대해 이해하기 위해서는, 우선 생성형 AI란 무엇인지 알아야 한다.
생성형 AI란?
생성형 AI란 이미지, 텍스트, 동영상 등 새로운 콘텐츠와 아이디어를 만들 수 있는 모델을 말하며, 많은 양의 데이터를 사전 학습한 대규모의 모델이다. 딥러닝 모델의 한 유형으로서, Foundation Model이라고 말한다. 흔히 말하는 LLM도 생성형 AI의 한 유형이다.
LLM(Large Language Model)
대규모 언어 모델(LLM)은 Large Language Model의 약자로, 자연어 처리(NLP)에서 사용되는 인공지능 기술의 한 종류이다. LLM 모델들은 대규모의 텍스트 데이터를 학습하여 언어의 구조와 의미를 이해하고, 그 학습을 바탕으로 텍스트 생성, 번역, 요약, 질문에 대한 답변 등 다양한 언어 관련 작업을 할 수 있다. LLM은 방대한 데이터를 학습하기 때문에 “대규모”라는 이름이 붙었다. LLM은 머신 러닝, 특히 트랜스포머 모델이라고 하는 일종의 신경망을 기반으로 한다.
💡 LLM은 딥러닝의 방식으로 방대한 양을 사전 학습(Pre-trained)한 전이 학습(Transfer) 모델
가장 대표적이자 가장 주목받는 LLM으로 OpenAI의 ChatGPT가 있다.
LLM의 단점
LLM(Large Language Model)은 최근에 굉장히 주목받고 있으며 많은 장점을 가지고 있지만, 그럼에도 불구하고 다음과 같은 단점과 한계점을 가지고 있다.
1. 편향성 문제
- 학습 데이터에 내재된 편향성을 그대로 반영할 수 있음
- 성별, 인종, 종교 등에 대한 고정관념이나 차별적 표현을 생성할 위험 존재
2. 사실 관계 오류 가능성
- 방대한 데이터를 학습하지만, 항상 정확한 정보를 제공하지는 않음
- 잘못된 정보나 허위 정보를 진실로 간주하고 전파할 수 있음
3. 맥락 이해의 한계
- 문장 단위의 이해는 가능하지만, 장문의 글이나 복잡한 맥락 파악은 어려울 수 있음
- 세계 지식과 상식 추론 능력이 부족하여 심층적인 이해에 한계 존재
4. 일관성 문제
- 동일한 입력에 대해 일관된 답변을 생성하지 않을 수 있음
- 모델의 확률적 특성상 생성 결과가 매번 달라질 수 있어 신뢰성 저하
5. 윤리적 문제
- 악용 가능성이 존재하며, 책임 소재 파악이 어려울 수 있음
- 모델의 출력 결과에 대한 통제와 검증 체계 마련 필요
실제로 GPT를 사용하면서 엉뚱한 이야기를 하거나, 잘못된 답을 마치 정답인 것처럼 제공받았던 경험이 한번 씩은 있을 것이다. 이처럼 LLM이 가지는 단점과 한계를 보완하기 위해 고안된 것이 바로 RAG(검색 증강 생성)이다.
할루시네이션(Hallucination) : 편향되거나 불충분한 학습 데이터, 모델의 과적합 등으로 인해 LLM이 부정확한 정보를 생성하는 현상
RAG는 무엇인가
💡 RAG(Retrieval-Augmented Generation)는 대규모 언어 모델(LLM)의 한계를 극복하기 위해 제안된 새로운 자연어 처리 기술이다.
LLM은 방대한 양의 텍스트 데이터를 사전 학습하여 강려한 언어 이해 및 생성 능력을 갖추고 있지만, 학습 데이터에 없는 최신 정보나 특정 도메인 지식은 제공하기 어렵다는 단점이 있다. RAG(Retrieval-Augmented Generation)는 LLM의 단점 중 ‘사실 관계 오류 가능성’과 ‘맥락 이해의 한계’를 개선하는 데 초점을 맞춘 방법이다. RAG는 LLM에 외부 지식 베이스를 연결하여 모델의 생성 능력과 사실 관계 파악 능력을 향상시키는 기술이다.
우리가 GPT를 사용할 때를 생각해보자. 우리는 자유롭게 질문을 만들어서 ChatGPT에게 보내고, 답변을 받는다. RAG는 여기서 더 나아가, 사용자의 질문에 외부 데이터와 정보들을 결합한 후 GPT에게 전달하여, 보다 정확하고 사실에 기반한 답변을 제공할 수 있도록 하는 것이다. RAG는 다음과 같은 방식으로 LLM의 한계를 보완한다고 할 수 있다.
1. 외부 지식 활용
- 대규모의 구조화된 지식 베이스(예: 위키피디아, 사내 축적데이터)를 모델에 연결
- 주어진 질의에 대한 관련 정보를 지식 베이스에서 검색 및 추출
2. 증거 기반 생성
- 검색된 지식 정보를 증거로 활용하여 보다 사실에 기반한 답변 생성
- 생성된 답변의 출처를 명시함으로써 신뢰성 향상
3. 맥락 이해력 향상
- 외부 지식을 통해 질의에 대한 배경 지식과 맥락 정보를 파악
- 단순한 패턴 매칭이 아닌 추론 능력을 바탕으로 한 답변 생성
다만 RAG 모델의 성능은 연결된 지식 베이스의 품질과 커버리지에 크게 의존하기 때문에, 고품질의 지식 베이스 구축이 중요한 과제로 남아있다.
RAG 동작 방식
RAG는 다음과 같은 프로세스로 진행된다.
1. 데이터 임베딩 및 벡터 DB 구축
- RAG의 첫 번째 단계는 자체 데이터를 임베딩 모델에 통합하는 것이다.
- 텍스트 데이터를 벡터 형식으로 변환하여 벡터 DB를 구축한다.
- HTML이나 PDF 등 원본 데이터의 형식을 컴퓨터가 처리 가능한 형태(벡터)로 변환해야 한다.
- 또한 현존하는 모델들은 대용량 데이터를 한 번에 처리하기 어렵기 때문에, 데이터를 모델이 처리 가능한 작은 단위로 나누는 과정(Chuncking)이 필요하다.
- 벡터 DB는 Retriever(문서 검색기) 부분에서 사용자의 쿼리와 관련된 정보를 찾는 데 활용된다.
2. 쿼리 벡터화 및 관련 정보 추출 (증강 단계)
- 사용자의 질문(쿼리)을 벡터화한다.
- 벡터 DB에 저장된 데이터와 사용자의 질문을 매칭하여, 질문에 가장 적합한 데이터를 검색한다.
- 벡터 DB를 대상으로 다양한 검색 기법을 사용하여 소스 정보에서 가장 관련성이 높은 부분 또는 상위 K개의 항목을 추출한다.
- 벡터 DB는 고차원 벡터 데이터를 효율적으로 관리하고 검색하는 데 특화되어 있다.
- 추출된 관련 정보는 쿼리 텍스트와 함께 LLM에 제공된다.
3. LLM을 통한 답변 생성
- LLM은 쿼리 텍스트와 추출된 관련 정보를 바탕으로 최종 답변을 생성한다.
- 이 과정에서 정확한 출처에 기반한 답변이 가능해진다.
💡 임베딩(Embedding)이란?
텍스트나 기타 데이터 유형을 벡터로 변환하는 과정을 의미한다. 데이터를 벡터로 변환하여 기계 학습 모델이 데이터를 쉽게 처리하고 이해할 수 있도록 한다. BERT, KeyLook 등 다양한 임베딩 모델이 있다.
💡 벡터라이징(Vectorizing)이란?
텍스트 데이터를 수치적인 벡터(vector) 형식으로 변환하는 것이다. 텍스트 데이터를 모델이 처리할 수 있도록 하기 위해서는 벡터라이징이 필요하다. 벡터라이징을 통해 텍스트의 의미를 수치적으로 표현할 수 있고, 텍스트 데이터의 유사도 계산, 분류, 군집화할 수 있게된다.
예) "The cat sat on the mat." -> [0.0, 0.301, 0.0, ...]
이해를 위해 {여자와 남자} 그리고 {왕비와 왕}의 관계를 생각해보자. 여자, 남자, 왕, 왕비를 vector 수치로 변환했을 때, [여자:남자]의 비율과 [왕비:왕]이 유사한 수치를 갖는다.
RAG에서는 외부 데이터와 정보들을 미리 임베딩(Embedding) 과정을 거쳐 수치화해 VectorDB에 저장해놓는다. 그리고 사용자가 질의를 하면, 1)질의 텍스트 데이터를 임베딩하여 수치 데이터로 전환하고, 2)VectorDB에 저장된 값들과 수치적인 비교를 통해 3)유사한 데이터를 검색 한다(유사도 검색). 이렇게 검색된 관련 데이터(Relevant Data)를 프롬프트 엔지니어링(Prompt Engineering) 기법을 사용하여 4)LLM에게 전달하여 최종 응답을 생성한다.
💡 프롬프트 엔지니어링(Prompt Engineering)이란?
대규모 언어 모델(LLM)을 효과적으로 활용하기 위해 입력(prompt)를 정교하게 설계하고 최적화하는 과정을 말한다. 프롬프트 엔지니어링 기법을 통해 LLM이 사용자 요구에 맞는 정확하고 유용한 응답을 생성하도록 한다.
프롬프트 예시
- 너의 역할은 사용자의 질문에 reference를 바탕으로 답변하는거야.
- 너가 가지고있는 지식은 모두 배제하고, 주어진 reference의 내용만을 바탕으로 답변해야해.
- 만약 사용자의 질문이 reference와 관련이 없다면, {제가 가지고 있는 정보로는 답변할 수 없습니다.}라고만 반드시 말해야해.
RAG 동작 과정의 요약
- 사용자의 질문이 주어지면 질의 인코더가 이를 이해하기 쉬운 형태로 변환한다.
- 지식 검색기가 인코딩된 질문을 바탕으로 외부 지식 베이스에서 관련 정보를 검색한다.
- 검색된 지식은 지식 증강 생성기의 입력으로 전달된다.
- 지식 증강 생성기는 검색된 지식을 활용하여 사용자 질문에 대한 답변을 생성한다.
RAG는 LLM의 강력한 언어 이해 및 생성 능력과 외부 지식 활용을 결합함으로써, 보다 정확하고 풍부한 정보를 제공할 수 있다. 특히 최신 정보나 특정 도메인 지식이 필요한 질문에 효과적으로 대응할 수 있다는 장점이 있다. 지금까지 LLM의 한계를 보완하는 RAG에 대해 알아보았다.
Reference