대규모 언어 모델을 위한 검색-증강 생성(RAG) 기술 현황
(discuss.pytorch.kr)PyTorchKR
-
LLM의 인기와 함께 RAG에 대한 관심도 높아지고 있습니다. 파이토치 한국 사용자 모임에서는 지난 12/18~24의 주요 ML 논문들에 소개된 RAG 기술에 대한 서베이 논문을 정리해보았습니다.
-
내용이 다소 길어 2개의 글로 나눠 게시하였으며, 1부에서는 RAG 기술의 패러다임들을, 2부에서는 주요 구성요소들과 평가, 앞으로의 연구 과제들에 대해서 정리했습니다.
아래는 목차 중심으로 주요 내용들만 발췌한 것입니다
검색-증강 생성(RAG) 기술 소개
대규모 언어 모델(LLM)은 뛰어난 능력을 보이지만, 실제 사용을 위해서는 환각이나 느린 지식의 업데이트, 답변의 투명성 부족 등과 같은 문제들을 극복해야 합니다. RAG(Retrieval-Augmented Generation)는 이러한 문제를 해결하기 위해 제안된 기술입니다.
RAG는 대규모 언어 모델(LLM)에서 질문에 대한 답변이나 텍스트를 생성하기 전에 광범위한 문서 집합에서 관련 정보를 검색하고, 이를 이용하여 응답을 생성하는 방법입니다. 이는 LLM의 기존 문제점인 지식의 시대에 뒤떨어짐, 특정 영역에 대한 지식 부족, 그리고 응답의 투명성 부족을 해결하는 데 중점을 두고 있습니다.
이러한 RAG는 답변의 정확도를 크게 향상시키고, 특히 지식 집약적인 작업에서 모델의 환각을 줄이는 데 도움이 됩니다. 사용자가 출처를 인용하여 답변의 정확성을 검증할 수 있으며, 이는 모델 출력에 대한 신뢰를 증가시킵니다. 또한, 지식 업데이트와 특정 분야의 지식 도입에도 용이합니다.
RAG 외에 파인튜닝(fine-tuning)을 사용하여 대규모 언어 모델이 특정 지식에 집중하도록 할 수 있습니다. 하지만 이러한 파인튜닝은 실시간으로 업데이트되는 정보를 반영하는데 시간이 걸리며, 모델을 새로 학습시키는데 추가적인 자원이 소모됩니다. 이에 반해, RAG는 LLM에 특정 질의에 대한 정보를 검색할 수 있는 '참고서'를 제공하는 것과 유사합니다.
RAG의 3가지 주요 패러다임 - 개요
RAG 기술의 연구 패러다임은 시간에 따라 끊임없이 발전하고 있습니다. 주요 패러다임들은 기본 RAG, 고급 RAG, 모듈형 RAG의 3가지로, 초창기의 기본 RAG는 비용 효율적이고 LLM만 사용하는 것보다 성능이 뛰어났지만 많은 단점들이 있었습니다. 고급 RAG와 모듈러 RAG의 등장은 기본 RAG의 특정 결함을 해결하기 위한 것이었습니다.
RAG의 3가지 주요 패러다임 - 기본 RAG(Naive RAG)
기본 RAG는 RAG 연구의 초기 방법론을 지칭하며, 전통적인 인덱싱, 검색 및 생성 과정을 포함하고 있습니다. 기본 RAG는 주로 간단한 검색 및 생성 방식에 초점을 맞추고 있으며, RAG의 기본 개념과 원리를 설명하는데 중요합니다.
하지만, 낮은 검색 정확도, 응답 생성의 낮은 품질, 증강 과정의 어려움 등에 따라 발생하는 불필요한 반복, 부정확한 정보, 잘못된 문맥의 통합 등이 발생할 수 있습니다. 따라서 복잡하거나 도전적인 시나리오에 기본 RAG를 사용하기는 부적절할 수 있습니다.
RAG의 3가지 주요 패러다임 - 고급 RAG(Advanced RAG)
고급 RAG는 기본 RAG의 부족한 점을 개선하기 위해 개발된 패러다임입니다. 이는 주로 검색 및 생성의 질을 향상시키기 위한 사전 및 사후 검색 방법을 포함합니다. 고급 RAG는 크게 검색 전 절차(Pre-Retrieval Process), 검색 후 절차(Post-Retrieval Process), RAG 파이프라인 최적화(RAG Pipeline Optimization)의 3단계로 나누어볼 수 있습니다:
RAG의 3가지 주요 패러다임 - 모듈형 RAG(Modular RAG)
모듈식 RAG은 고급 RAG의 발전된 형태로, 기존의 RAG 프레임워크에서 한 단계 더 나아가 다양한 모듈과 기능을 통합하여 더 큰 다양성과 유연성을 제공합니다. 이 접근 방식은 RAG 시스템을 다양한 시나리오와 요구 사항에 맞게 조정할 수 있도록 하는 여러 새로운 모듈과 패턴을 포함하고 있습니다.
RAG 기술의 주요 구성 요소: 검색기(Retriever)
검색기(Retriever)는 RAG라는 약어의 맨 앞 글자인 R을 나타내고 있을 정도로 시스템에서 중요한 정보 탐색 역할을 합니다. 검색기는 대규모 데이터 집합에서 관련 정보를 찾아내어 텍스트 생성을 위한 데이터들을 준비하는 작업을 합니다. 이러한 검색기는 LLM의 일반적인 지식과 현재, 맥락적으로 정확한 정보의 필요성 사이의 간격을 메우는 데 사용됩니다. 이는 실시간 데이터, 특정 분야 전문 지식 또는 사실 확인이 필요한 시나리오에서 특히 중요합니다.
RAG 기술의 주요 구성 요소: 생성기(Generator)
앞에서 살펴본 검색기(Retriever)의 역할이 사용자의 입력으로부터 후보 문서들을 추출하는 것이었다면, 생성기(Generator)의 역할은 검색된 결과를 활용하여 사용자에게 제공할 답변을 생성하는 것입니다. 검색된 정보를 효과적으로 활용하여 정확하고 관련성 높은 답변을 생성하기 위해, 정보를 압축하고 순위를 다시 매기는 후처리 과정과 입력 데이터에 적응하는 최적화 과정을 수행하고 있습니다.
RAG 기술의 주요 구성 요소: 증강 방법(Augmentation Methods)
이 챕터에서는 RAG에서의 증강 방법을 다음 3가지 측면으로 살펴보겠습니다.
- 증강 단계(the stage of augmentation)
- 데이터 소스의 증강(augmentation data sources)
- 증강 절차(the process of augmentation)
RAG 평가 (RAG Evaluation)
RAG 평가(RAG Evaluation)는 RAG가 얼마나 효과적으로 동작하는지를 평가하는 것입니다. 평가는 크게 2가지 종류로 나뉘는데, 하나는 검색기나 생성기 등의 각각의 모듈들에 대한 독립적인 평가(independent evaluation)과 입력으로부터 출력까지의 전체 과정을 평가하는 엔드-투-엔드 평가(end-to-end evaluation; 종단간 평가)가 있습니다. 각각의 평가 방법들과 평가 시의 지표(metric), 사용할 수 있는 프레임워크(framework) 등에 대해서 알아보도록 하겠습니다.
RAG의 미래 전망 (Future Prospects)
RAG의 수직적 최적화와 수평적 확장, 그리고 RAG의 생태계에 대한 내용을 다루고 있습니다.
⚠️광고: 파이토치 한국 사용자 모임이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일로 보내드립니다! (기본은 Weekly지만 Daily로 변경하실 수도 있습니다.)