최근 후배와 전화 통화 중에 듣게된 RAG가 어떤건지 궁금해서 자료를 찾던 중, 한국에서도 몇몇 잘 정리된 자료들을 찾을 수 있었습니다.
이들 자료들을 기반으로 나름 정리를 해 보고자 합니다. 아울러 짬짬이 공개된 API를 기반으로 무언가를 연습해 보는 것도 좋겠다는 생각이 듭니다.
기존 LLM 모델이 갖는 문제점
- 데이터 편향: LLM이 학습한 데이터에 포함된 편향이 그대로 반영되어 성차별, 인종차별 등의 문제가 발생할 수 있음
- 정보의 신뢰성 부족: 생성된 답변이 항상 정확하지 않고(Hallucination), 잘못된 정보를 제공할 가능성이 있음.
- 문맥 이해의 한계: 복잡한 문맥이나 감정, 농담을 제대로 이해하지 못할 때가 있음.
- 프라이버시 문제: 학습된 데이터에 포함된 개인 정보가 의도치 않게 누출될 위험이 있음.
- 책임 소재 불분명: 잘못된 정보나 문제가 발생했을 때 그 책임이 누구에게 있는지 명확하지 않음.
- 윤리적 문제: 가짜 뉴스 생성, 자동화로 인한 일자리 감소 등 윤리적 문제가 발생할 수 있음.
- 지식의 한계: 특정 주제에 대한 최신 정보나 깊이 있는 전문 지식을 제공하는 데 한계가 있음.
- 창의성의 한계: 진정한 창의성 발휘보다는 기존 데이터를 조합한 결과물만 생성함.
- 자원 소모: 대규모 모델을 훈련하는 데 막대한 컴퓨팅 자원과 에너지가 필요, 환경에 부담을 줌.
이 중에서 특히 데이터 편향과 정보 신뢰성의 부족, 문맥 이해의 한계로 인해 보다 더 강화된 방법론이 등장하게 되었고, 그중 하나가 RAG(Retrieval-Argumented Generation) 입니다.
RAG vs. Fine-Tuning
RAG (Retrieval-Argumented Generation) | Fine-Tuning | |
정의 | 최신의 외부 데이터에서 적절한 문서 검색 및 답변을 생성해 LLM 모델의 정확성과 신뢰성을 향상시키는 방식 | 사전에 학습된 모델에 각 도메인 특화 데이터를 추가 학습시켜 맞춤형 모델로 업데이트하는 방식 |
이점 | 외부 데이터에 대한 상시적 접근이 가능함 데이터의 최신성 유지에 용이함 근거가 확실한 데이터를 기반으로 답변 생성 |
양질의 라벨링 데이터만 있다면 높은 품질의 모델 생성 가능 업데이트가 빈번하지 않은 특정 도메인에서 유용함 |
도전과제 | 관련 없는 문서를 검색할 가능성이 있기 때문에 효율적인 검색 모델을 구축할 수 있는 전문가의 도움이 필요함 | 충분한 데이터가 없거나 양질의 데이터가 아닌 경우, 모델의 품질(성능)이 낮아질 수 있으며, 모델의 지식은 마지막 학습 데이터까지만으로 한정됨 |
유스케이스 | 새로운 데이터가 자주 업데이트되는 기업 | 특정 작업용 어플리케이션 |
RAG 개요 및 구성 요소
위 그림에서 보면 RAG의 주요 구성요소는 Retriever와 Generator입니다.
Retriver
Retriever를 살펴보면, Query Encoder와 Document Index로 구성됩니다.
먼저 Query Encoder는 사용자가 입력한 질의(query)를 벡터로 변환하는 역할을 하며, 이후 해당 벡터를 이용하여 MIPS (Maximum Inner Product Search)는 해당 벡터에 부합하는 문서를 검색하는데 사용됩니다(d(z)). 다음으로 Document Index는 MIPS에 의해 검색된 문서들(d(z))을 저장한 벡터들의 집합이 됩니다. 이 벡터들은 문서가 의미적으로 사용자 질의에 가까운 정보를 담고 있으며, Query Encoder에서 생성된 질의 벡터와의 유사도를 계산하는데 사용됩니다. 즉, Document Index는 RAG 모델의 Retriever가 사용자 질의에 적합한 문서를 찾는데 중요한 역할을 하게 됩니다. 다만 이를 위해 대규모 저장소가 별도로 필요할 수 있으며, 관련 문서가 상당히 많은 경우, 문서 벡터와 질의 벡터를 비교하는 검색 시간에 상당한 시간이 소모될 수도 있습니다.
Generator
Retriever에서 검색된 문서 벡터를 기반으로 사용자에게 적합한 답변을 생성하는 언어 모델을 의미합니다. Generator의 핵심 동작은 텍스트 생성입니다. 검색된 문서 벡터를 바탕으로 질의에 대한 최적의 답변을 만들기 위해 Sequence-to-Sequence 구조를 기반으로 텍스트를 생성하게 됩니다. 이때 사전에 학습된 대규모 언어 모델인 BART(Bidirectional and Auto-Regressive Transformer) 또는 GPT와 같은 언어 모델을 주로 사용합니다.
RAG 모델에서 Generator는 검색된 문서를 단순히 나열하거나 추출하는 것이 아니라, 질의에 맞는 새로운 텍스트를 생성하기 때문에 복잡한 질문에 대해 보다 자연스러운 답변을 제공할 수 있다는 장점이 있습니다.
다만 Generator는 검색된 문서 벡터의 품질이 높고 낮음에 따라 학습 효과가 달라질 수 있기 때문에, 만약 검색 문서가 질의와 부적합하거나 신뢰성이 떨어지는 경우, Generator가 생성하는 답변의 품질도 떨어질 수 있다는 단점도 있습니다.
RAG 성능
RAG 모델은 다양한 지식 집약적 작업에서 우수한 성능을 발휘 한다고 합니다. 특히 단순히 문서를 검색해 답변을 제공하는 방식과 달리, 검색한 문서를 바탕으로 답변을 생성하고, 더 정확하고 유용한 답변을 제공하는 능력을 실험적으로 증명하고 있습니다.
최초 논문인 "Retrival-Argumented Generation for Knowledge-Intensive NLP Tasks"에서는 RAG 모델의 성능을 평가하기 위해 기존 검색-기반 방법 및 생성-기반 방법과 비교 실험을 진행했습니다.
- Open-Domain QA (질의 응답): 답변을 제공할 때 필요한 정보가 명확하게 주어지지 않고, 모델이 외부 지식을 활용하여 답변을 생성해야 하는 과제입니다.
- Fact Verification (사실 검증): 주어진 문장의 사실성을 검증하는 과제입니다.
- Dialogue Generation (대화 생성): 대화문을 생성하는 작업으로, 대화의 흐름에 맞는 답변을 생성하는 것이 목표입니다.
또한 RAG 모델의 성능을 기존의 다른 모델들과 비교했습니다.
- BM25: 전통적인 역문서 빈도 기반 검색 모델입니다. 이는 TF-IDF와 유사한 방식으로 작동하며, 검색한 문서에서 직접 답변을 추출합니다.
- DPR (Dense Passage Retrieval): 질의와 문서를 벡터로 임베딩하여 검색하는 밀집 표현 기반 검색 모델입니다.
- BART: 시퀀스-투-시퀀스 기반의 사전 훈련된 언어 모델로, 문서를 기반으로 질의에 대한 답변을 생성합니다.
RAG 모델은 다음 2개 유형에 대해 실험을 진행하였습니다:
- RAG-Sequence: 검색된 문서를 순차적으로 사용하여 답변을 생성합니다.RAG-Token: 검색된 문서의 각 토큰을 조합하여 답변을 생성합니다.
데이터셋
- NaturalQuestions (NQ): 자연스러운 언어로 질문을 제시하는 대규모 데이터셋으로, 질문에 대한 답변을 제공하는 것이 목표입니다.
- TriviaQA (TQA): 트리비아 스타일의 질문과 답변으로 구성된 데이터셋입니다.
- WebQuestions (WQ): 웹 검색 기반의 질문-답변 데이터셋입니다.
- MS MARCO: Microsoft가 제공하는 대규모 질의 응답 데이터셋으로, 문서에서 답변을 추출하거나 생성하는 작업에 적합합니다.
- FEVER: 주어진 문장이 사실인지, 거짓인지 검증하는 사실 검증 데이터셋입니다.
- Wizard of Wikipedia: 다양한 주제에 대한 대화 생성 작업을 위한 데이터셋입니다.
주요 실험 결과
(1) Open-Domain QA (질의 응답)
- RAG-Sequence와 RAG-Token의 성능: RAG-Sequence와 RAG-Token은 기존의 단순한 검색 기반 모델보다 뛰어난 성능을 보였습니다. 특히 RAG-Token 모델은 여러 문서에서 유용한 정보를 추출하고, 이를 조합하여 더 정확한 답변을 생성하는 데 능숙했습니다.
- Exact Match(EM) 스코어: 질의 응답에서 중요한 성능 지표인 Exact Match는 RAG 모델에서 더 높은 값을 기록했습니다. NQ, TriviaQA, WebQuestions에서 RAG 모델은 BM25와 DPR을 크게 상회하는 성능을 보였습니다.
- NQ 데이터셋에서 RAG-Token 모델은 EM 스코어에서 기존 모델을 약 10% 이상 상회하는 성능을 기록했습니다.
- TriviaQA와 WebQuestions 데이터셋에서도 유사한 성능 향상이 관찰되었습니다.
(2) Fact Verification (사실 검증)
- FEVER 데이터셋에서의 성능: RAG 모델은 사실 검증 과제에서도 탁월한 성능을 보였습니다. RAG는 검색된 문서에서 유의미한 정보를 추출해 제시된 문장의 사실성을 판단하는 능력이 뛰어났습니다.
- 정확도(Accuracy) 기준으로, RAG는 기존 검색 기반 모델보다 높은 성능을 기록했습니다.
- 특히 RAG-Token 모델은 각 토큰을 조합하여 정확한 사실 검증을 수행할 수 있었습니다.
(3) Dialogue Generation (대화 생성)
- Wizard of Wikipedia 데이터셋에서의 성능: RAG 모델은 대화 생성 작업에서도 성능 향상을 보였습니다. RAG는 검색된 문서를 기반으로 자연스럽고 의미 있는 대화를 생성할 수 있었습니다.
- 대화의 일관성과 질문에 대한 적합성에서 RAG 모델은 BM25 기반 모델보다 우수한 성능을 발휘했습니다.
- BLEU 스코어와 F1 스코어에서도 RAG는 기존 대화 생성 모델을 능가하는 결과를 보였습니다.
정리...
RAG 모델이 실험에서 다른 모델들에 비해 뛰어난 성능을 보인 이유는 다음과 같습니다.
- 검색과 생성의 결합: RAG는 검색 단계에서 얻은 정보를 기반으로 답변을 생성하기 때문에, 단순히 문서에서 추출하는 방식보다 더 유연하고 정확한 답변을 제공합니다.
- 다중 문서 처리: RAG는 여러 문서에서 정보를 추출하고 이를 조합하여 최적의 답변을 생성할 수 있습니다. 특히 RAG-Token 모델은 개별 문서에서 중요한 토큰을 추출하고 이를 종합하여 더 나은 답변을 생성하는 데 강점을 보입니다.
- End-to-End 학습 가능: RAG는 검색과 생성을 함께 학습할 수 있기 때문에, 정보 검색의 정확도와 생성 능력을 동시에 향상시킬 수 있습니다.
아울러 다음과 같은 RAG의 한계점도 함께 언급하고 있습니다.
- 문서 검색의 중요성: RAG 모델은 검색된 문서에 크게 의존합니다. 따라서 검색된 문서가 적절하지 않거나 질의와 부적합한 경우, 생성된 답변의 품질도 낮아질 수 있습니다.
- 실시간 성능: RAG 모델은 검색과 생성 두 단계로 이루어져 있기 때문에, 실시간 응답 속도에서 다소 느릴 수 있다는 한계가 존재합니다. 특히 대규모 데이터셋에서 실시간 검색을 수행할 때는 추가적인 최적화가 필요합니다.
이 글은 다음 블로그들을 참고하여 작성하였습니다.
RAG의 짧은 역사 훑어보기(첫 논문부터 최근 동향까지) : https://pangyoalto.com/brief-history-rag/
RAG(검색 증강 생성)란? – LLM 단점을 보완하는 기술 : https://modulabs.co.kr/blog/retrieval-augmented-generation/
10분만에 RAG 이해하기 : https://brunch.co.kr/@ywkim36/146
2024 Year Of The RAG :: RAG가 주목 받는 이유와 미래 동향 : https://www.skelterlabs.com/blog/2024-year-of-the-rag
'System Engineering' 카테고리의 다른 글
JQL(Jira Query Language)에 대한 완벽 가이드 (0) | 2024.09.10 |
---|---|
LLM : Llama 3.1 차세대 소픈소스 AI 모델의 시대를 열다 (0) | 2024.08.15 |
2024년 산업기술 동향: 생성형 AI, 반도체, 자율주행 그리고 정책 변화 (0) | 2024.08.13 |
프롬프트 엔지니어링: 인공지능 시대의 새로운 직업 (0) | 2024.08.07 |
Service API vs. Software API 비교 (0) | 2024.07.27 |