[PaperReview] Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks 논문 리뷰
1. Introduction: Context & Motivation
1.1 RAG 이전 모델들의 문제점: LLM의 환각 한계와 지식 업데이트의 비용 문제
거대 언어 모델(LLM)은 방대한 텍스트 데이터를 학습하여 뛰어난 언어 이해 및 생성 능력을 보여줍니다. 하지만 모델의 파라미터(가중치) 내부에 세상의 모든 지식을 압축하여 저장하려고 할 때, 현업 엔지니어들은 두 가지 치명적인 한계에 직면하게 됩니다.
첫 번째는 “환각(Hallucination)” 현상입니다. 모델은 자신이 모르는 정보나 명확하지 않은 사실에 대해서도 마치 정답인 것처럼 그럴싸한 문장을 지어냅니다. 이는 신뢰성이 생명인 서비스(예: 의료, 금융, 사내 지식 검색 등)에서 LLM의 도입을 가로막는 가장 큰 장벽이 됩니다.
두 번째는 “지식 업데이트의 막대한 비용”입니다. 세상의 정보는 실시간으로 변하지만, 언어 모델의 지식은 학습이 완료된 시점에 영원히 멈춰(Knowledge Cut-off) 있습니다. 최신 정보를 모델에 반영하기 위해 주기적으로 전체 ㅍ ㅏ라미터를 재학습시키거나 파인튜닝하는 것은 막대한 클라우드 GPU 리소스와 시간이 소모되는, 유지보수 관점에서 결코 지속 가능하지 않은 방법입니다.
1.2 이전 모델들의 문제를 해결하기 위한 RAG의 아이디어: 파라미터(생성)와 비파라미터(검색)를 융합하려는 시도
2020년, Meta AI 연구진이 발표한 논문 “Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks”는 이러한 딜레마를 해결하기 위해 패러다임의 전환을 제시합니다. 바로 모델에게 ‘모든 것을 암기하라’고 강요하는 대신, 필요할 때마다 외부 문서를 찾아볼 수 있는 ‘오픈북(Open-book) 테스트’ 권한을 부여하는 것입니다.
연구진은 모델 내부의 사전 학습된 가중치인 파라미터형 메모리(Parametric Memory, 생성기)와 외부의 방대한 코퍼스인 피파라미터형 메모리(Non-Parametric Memory, 검색기)를 결합하는 아키텍처를 고안했습니다.
단순히 검색 결과와 생성 모델을 파이프라인으로 이어 붙이는 데 그치지 않고, 이 두 가지 완전히 다른 형태의 메모리를 어떻게 수학적으로 결합하고 End-to-End로 학습시킬 수 있는지에 대한 우아한 해결책을 제시했습니다. 이 논문이 제안한 구조는 현재 수많은 AI 서비스에서 사실상 표준(Defacto)으로 자리잡은 RAG(Retrieval-Augmented Generation) 프레임워크의 근간이 되었습니다.
2. Architecture & Objective
2.1 Model Architecture
RAG 아키텍처는 크게 외부 지식을 탐색하는 Retriever(검색기)와 이를 바탕으로 유창한 텍스트를 만들어내는 Generator(생성기)라는 두 개의 코어 모듈로 구성됩니다.
-
Retriever(DPR): 사전 학습된 BERT 기반의 Dense Passge Retriever를 사용합니다. 질문(Query)을 벡터로 만드는 인코더와 문서(Document)를 벡터로 만드는 인코더 두 개로 구성되며, FAISS를 이용해 질문과 가장 유사한 상위 K개의 문서 조각을 밀리초 단위로 가져옵니다.
-
Generator(BART): 사전 학습된 Seq2Seq 모델인 BART를 사용합니다. Retriever가 찾은 문서($z$)와 원래의 질문($x$)을 하나로 이어 붙여 입력받은 뒤, 크로스 어텐션(Cross-Attention)을 통해 정답 토큰($y_i$)들을 차례대로 생성합니다.
아래는 논문에 실려있는 RAG 모델의 구조입니다.
이 아키텍처의 가장 큰 혁신은 두 모델을 단순히 이어 붙인 파이프라인에 머물지 않고, 조인트 학습(Join Training)이 가능한 End-to-End 구조를 완성했다는 점입니다. Generator가 텍스트를 생성하며 발생한 오차(Loss)가 역전파를 타고 Retriever의 질문 인코더(Query Encoder)까지 도달합니다. 즉, 텍스트 생성 결과에 따라 “이런 질문이 들어오면 다음부터는 저런 방향의 문서를 찾아와!”라고 검색기 스스로 영점을 교정하게 됩니다.
2.2 디코딩 전략의 두 갈래: Sequecne vs Token
그렇다면 검색된 K개의 문서를 구체적으로 ‘어떻게’ 참고해서 최종 답변을 뱉어낼까요? 논문은 문서를 결합하는 시점(Marginalization)에 따라 두 가지 모델 구조를 제안합니다.
RAG-Sequence
문장 전체를 생성하는 내내 오직 ‘단 하나의 문서’만 참조합니다. K개의 문서가 각자 완성된 전체 답변을 만들어내면, 맨 마지막 단계에서 각 문서의 검색 신뢰도를 가중치로 합산하여 최종 승자를 결정합니다. 정답이 짧고 명확한 사실 확인형(Factoid) QA에서 높은 성능을 보입니다. RAG-Sequence의 수식은 다음과 같습니다.
\[P_{\text{RAG-Sequence}}(y\vert{}x) = \sum_{z \in Z} p_\eta(z\vert{}x) \prod_{i=1}^N p_\theta(y_i\vert{}x, z, y_{1:i-1})\]- $x$: 사용자의 입력 질문(Query)
- $y$: 모델이 최종적으로 생성해야 할 정답 시퀀스 (Target Sequence)
- $z$: 검색기(Retriever)가 찾아낸 외부 문서(Latent Variable)
- $p_\eta(z\vert{}x)$: 검색확률 (질문 $x$가 주어졌을 때 문서 $z$를 찾아올 확률, 즉 문서의 신뢰도)
- $p_\theta(y_i\vert{}x, z, y_{1:i-1})$: 생성 확률(질문과 문서, 그리고 이전까지 생성된 단어들을 바탕으로 다음 단어 $y_i$를 생성할 확률)
-
$\prod_{i=1}^N p_\theta(y_i\vert{}x, z, y_{1:i-1})$ (문서 내부의 곱셈):
특정 문서 $z$(예: 문서 A) 하나만을 쥐고, 첫 번째 단어부터 마지막 단어까지 순차적으로 생성하며 그 확률들을 모두 곱합니다. 즉, “문서 A만을 믿고 갔을 때 이 전체 문장($y$)이 완성될 확률”을 구하는 과정입니다.
-
$\sum_{z \in Z} p_\eta(z\vert{}x)$ (문서 간의 덧셈):
각 문서들이 독자적으로 문장 확률을 계산해 오면, 마지막에 해당 문서의 검색 신뢰도($p_\eta$)를 가중치로 곱해줍니다. 그리고 $Z$(검색된 상위 K개의 문서들)에 대해 그 결과값들을 모두 더해 최종 문장의 확률을 결정합니다.
결과적으로, 서로 다른 문서가 우연히 완전히 ‘동일한 답변’을 내뱉었을 때 확률이 합산되면서 해당 답변이 최종 선택될 신뢰성이 크게 올라가는 구조입니다.
RAG-Token
매 단어(Token)르 생성할 때마다 K개 문서 전체의 투표를 받아 확률을 섞습니다. 즉, 한 문장 안에서도 앞부분은 문서 A를, 뒷부분은 문서 B를 참고하여 새로운 문장을 융합(Synthesis)할 수 있습니다. 장문 요약이나 복잡한 텍스트 생성 태스크에 압도적인 위력을 발휘합니다. 수식은 다음과 같습니다.
RAG-Sequence와 비교했을 때, 덧셈($\sum$)과 곱셈($\prod$)의 위치가 완전히 뒤바뀌어 있습니다. 이는 “매 토큰을 생성할 때마다 모든 문서의 의견을 종합한다”는 뜻입니다.
\[P_{\text{RAG-Token}}(y\vert{}x) = \prod_{i=1}^N \sum_{z \in Z} p_\eta(z\vert{}x) p_\theta(y_i\vert{}x, z, y_{1:i-1})\]- $x$: 사용자의 입력 질문(Query)
- $y$: 모델이 최종적으로 생성해야 할 정답 시퀀스 (Target Sequence)
- $z$: 검색기(Retriever)가 찾아낸 외부 문서(Latent Variable)
- $p_\eta(z\vert{}x)$: 검색확률 (질문 $x$가 주어졌을 때 문서 $z$를 찾아올 확률, 즉 문서의 신뢰도)
- $p_\theta(y_i\vert{}x, z, y_{1:i-1})$: 생성 확률(질문과 문서, 그리고 이전까지 생성된 단어들을 바탕으로 다음 단어 $y_i$를 생성할 확률)
-
$\sum_{z \in Z} p_\eta(z\vert{}x) p_\theta(y_i\vert{}x, z, …)$ (토큰 단위의 덧셈):
하나의 단어 $y_i$를 생성할 때, 모든 문서에게 “다음 단어로 ‘파리’가 나올 확률이 얼마야?”라고 묻습니다. 그리고 문서의 신뢰도를 가중치로 삼아 모든 문서의 확률을 그 자리에서 즉시 더해버립니다.
-
$\prod_{i=1}^N$ (문장 완성의 곱셈):
1번 과정에서 5만 개의 단어장에 대한 ‘통합 확률 분포’가 만들어집니다. 이제 모델은 문서가 여러개였다는 사실을 잊고, 방금 구한 통합 확률을 바탕으로 평범한 언어 모델처럼 다음 단어들을 계속 곱해나가며 문장을 완성합니다.
하나의 문장 안에서도 단어마다 참조하는 문서의 비중이 달라질 수 있기 때문에, 파편화된 정보를 융합(Synthesis)하여 새로운 문장을 창조해 내는 데 매우 유리한 구조입니다.
2.3 Thorough / Fast Decoding
RAG-Sequence 모델의 수식을 보면 $\sum$ 기호를 통해 여러 문서에서 나온 문장의 확률을 하나로 합산합니다. 이론적으로는 완벽하지만, 이를 실제 코드로 구현하여 디코딩(Decoding)을 수행할 때 엔지니어들은 엄청난 연산량의 벽에 부딪히게 됩니다. 이 딜레마를 해결하기 위해 논문은 두 가지 디코딩 방식을 제시합니다.
-
Thorough Decoding
Thorough Decoding은 수식의 원칙을 100% 엄격하게 지키는 방식입니다.
만약 검색된 문서가 10개(K=10)이고, 빔 서치(Beam Search)를 통해 각 문서당 5개씩 후보 문장을 생성했다면, 최대 50개의 유니크한 답변 후보 집합($Y$)이 만들어집니다.원칙대로 전체 확률을 마지널라이제이션(Marginalization) 하려면, 이 50개의 후보 문장 각각에 대해 10개의 문서가 해당 문장을 만들어낼 확률을 모두 다시 계산(Forward Pass)해야 합니다.
- 연산량 폭발: 10x50 = 500번의 추가적인 디코더 연산이 발생합니다.
- 실무적 한계: 후보 수와 문서 개수에 비례해 연산량이 $O(K^2)$으로 기하급수적으로 증가합니다. 만약 MS MARCO 같은 문단 요약 태스크처럼 시퀀스 길이가 길어지면, 추론 시간이 수십배로 늘어나고 GPU VRAM 부족 현상을 유발하는 치명적인 문제가 발생합니다.
-
Fast Decoding
이러한 막대한 연산 병목을 해결하기 위해 논문이 권장하는 실무적인 접근이 바로 Fast Decdoing입니다. 이 방식은 아주 직관적이고 영리한 근사(Approximation) 기법을 사용합니다.
- 핵심 원리: 특정 답변 후보를 자신의 빔 서치 과정에서 스스로 만들어내지 못한 문서에 대해서는, “그 문서가 해당 답변을 생성할 확률은 그냥 0이다”라고 간주하고 추가 계산을 과감히 스킵합니다.
- 작동 방식: 만약 문서 A와 문서 B가 각자의 빔 서치 결과로 우연히 “아인슈타인”이라는 동일한 답변을 내놓았다면, 두 문서의 검색 확률은 정상적으로 합산됩니다. 하지만 문서 C 혼자 “마리 쿼리”를 생성했다면, 문서 A와 B에게 “너희들도 마리 쿼리가 나올 확률을 다시 계산해 봐!”라고 억지로 시키지 않고 “마리 쿼리”가 나올 확률을 0으로 처리합니다.
3. Deep Dive: RAG 모델은 왜 LLM 생태계의 판도를 바꾸었는가?
2020년에 발표된 이 논문이 단순한 연구를 넘어 현재 모든 생성형 AI 서비스의 ‘표준 아키텍처’로 자리 잡을 수 있었던 이유는, 기존 거대 언어 모델이 가진 근본적인 설계 철학을 완전히 뒤집었기 때문입니다. RAG가 가진 강력함의 원천을 세 가지 핵심 인사이트로 짚어봅니다.
-
지식과 논리의 분리(Decoupling Memory & Logic)
RAG 모델 이전의 모델들(T5, GPT-3 등)은 파라미터(가중치) 안에 세상의 모든 지식을 ‘암기’하고, 동시에 문장을 ‘생성(추론)’하는 두 가지 역할을 모두 수행해야 했습니다. 하지만 RAG는 이 두가지 역할을 분리했습니다.
- 지식(Memory)의 외주화: 팩트와 지식은 파라미터 밖의 방대한 벡터 데이터베이스(Non-parametric Memory)에 저장합니다.
- 논리(Logic)에 집중: 생성기(BART)는 무언가를 암기한느 데 파라미터를 낭비하지 않고, 주어진 문서를 잘 읽고(Reading Comprehension) 유창하게 답변을 조합하는 ‘추론’ 능력에만 온전히 파라미터를 집중시킵니다.
이러한 역할 분담은 4억 개의 파라미터(RAG)가 110억 개의 파라미터(T5)를 압도하는 효율성의 마법을 만들어냈습니다.
-
즉각적인 지식 업데이트 (Hot-swapping)
실무 엔지니어링 관점에서 RAG의 가장 위대한 성과는 ‘유지보수의 혁신’입니다. 지식 기반 서비스에서 정보가 최신화되었을 때, 기존 모델들은 수백억 개의 파라미터를 다시 학습(Fine-tuning) 시키느라 막대한 시간과 GPU 비용을 쏟아야 했습니다.
하지만 rag는 문서 인코더(Document Encoder)를 동결시켰기 때문에, 모델의 가중치를 하나도 건드리지 않고 외부의 FAISS 벡터 인덱스만 최신 문서로 갈아 끼우는 것(Hot-swapping)만으로 즉각적인 지식 업데이트가 가능해졌습니다. -
출처가 투명한 AI (Provenance & Interpretability)
LLM이 서비스 도입에 가장 큰 어려움을 겪는 이유는 ‘환각’을 통제할 수 없고, 정답을 도출한 근거를 알 수 없는 블랙박스라는 점입니다.
RAG는 답변을 생성할 때 참조한 문서의 출처(Source Document)를 명확하게 제시할 수 있습니다. 사용자는 모델의 답변이 어떤 문서에서 기인했는지 추적(Pronenance)할 수 있으며, 이는 의료, 금융, 범률 등 신뢰성이 생명인 도메인(Knowledge-Intensive Tasks)에서 AI를 실제 프로덕션 환경에 배포할 수 있는 결정적인 명분을 제공했습니다.
4. Engineering & Implementation
논문의 수식과 아키텍처 다이어그램만 보았을 때는 명확하게 와닿지 않는 엔지니어링 딜레마들이 있습니다. 텐서(Tensor)가 실제로 어떻게 흐르고, 오차 역전파가 두 모델 사이를 어떻게 관통하는지 핵심적인 구현 디테일을 해부해 보겠습니다.
4.1 Retriever와 Generator의 데이터 파이프라인
DPR은 내부적으로 밀집 벡터(Dense Vector) 연산을 수행하지만, Generator(BART)로 넘겨주는 최종 형태는 벡터가 아닌 ‘원본 텍스트(String)’입니다.
Retriever가 FAISS 인덱스에서 상위 K개의 문서 텍스트를 찾으면, 시스템은 사용자의 질문과 문서 텍스트를 이어 붙입니다. 즉, [질문 텍스트] // [문서 텍스트] 형태의 긴 문자열이 조립된 후 토크나이저를 거쳐 BART 인코더의 입력 시퀀스로 주입됩니다.
이때 BART 디코더가 가중합에 사용하는 문서 검색 확률 $p_\eta(z\vert{}x)$는 DPR 내부에서 별도로 계산됩니다. 질문 인코더가 만든 쿼리 벡터와 검색된 K개 문서 벡터들 사이의 내적(Dot Product) 점수에 소프트맥스(Softmax)를 취해 도출합니다. 이렇게 계산된 K개의 확률 텐서들은 메모리에 유지되다가, BART 디코더가 최종 단어 확률을 계산할 때 합산 계수로 사용됩니다.
4.2 손실 함수(Loss Function)와 역전파의 흐름
RAG 학습 시 발생하는 가장 거대한 병목은 2,100만 개에 달하는 위키피디아 문서 벡터 인덱스의 갱신입니다. 역전파가 발생할 때마다 FAISS 인덱스를 재생성하는 것은 연산 지원상 불가능합니다. 이를 해결하기 위해 연구진은 DPR의 ‘문서 인코더(Document Encoder)’를 완전히 동결시켰습니다.
모델은 Negative Marginal Log-Likelihood를 최소화하는 방향으로 학습됩니다.
\[L = -\log \sum_{z \in Z} p_\eta(z\vert{}x) p_\theta(y_i\vert{}x,z)\]정답 토큰을 생성하지 못해 발생한 오차(Loss)는 End-to-End로 전체 시스템을 관통합니다. 먼저 BART의 가중치를 업데이트한 뒤, 미분 신호가 확률 합산 과정을 역으로 타고 올라가 내적 연산 그래프를 거쳐 최종적으로 DPR의 ‘질문 인코더(Query Encoder)’ 가중치까지 도달합니다.
4.3 사전 학습의 재학습이 없는 지식 업데이트 (Hot-swapping)
문서 인코더를 동결시킨 이 엔지니어링적 선택은 결과적으로 엄청난 이점을 가져왔습니다. 새로운 개념이나 최신 정보가 등장했을 때, 모델의 가중치를 재학습(Fine-tuning)하느라 막대한 GPU 비용을 태울 필요가 없어졌습니다. 단지 고정된 문서 인코더에 최신 텍스트를 통과시켜 새로운 벡터들을 추출하고, 새로운 FAISS 인덱스 파일을 빌드하여 기존 인덱스와 단순 교체(Hot-swapping)하는 것만으로 시스템의 지식을 즉각적으로 업데이트 할 수 있습니다.
5. Experiment & Conclustion
5.1 실험 세팅 및 데이터셋 (Experiment)
-
외부 지식 베이스 (Non-parametric Memory) 세팅
- 데이터 소스: 2018년 12월 20일 자 영어 위키피디아 덤프 데이터를 사용했습니다.
- 전처리: 전체 문서를 100개의 단어(Word) 단위로 잘게 쪼개어(Chunking), 총 2,100만 개의 문서 단락을 생성했습니다.
- 인덱싱 환경: 동결된 DPR 문서 인코더를 통해 2,100만 개의 문서를 768차원 벡터로 변환한 뒤, 초고속 검색을 위해 FAISS의 HNSW(Hierarchical Navigable Small World) 인덱스에 로드했습니다.
-
검증을 위한 4가지 핵심 데이터셋
- Open-domain QA (단답형 질의응답): 정답이 명확한 사실 확인을 위해
Natural Questions (NQ), TriviaQA, WebQuestions, CuratedTrec등 4개의 벤치마크를 사용했습니다. - Abstractive QA (서술형 응답):
MS MARCO데이터셋을 활용하여, 검색된 문서를 그대로 복사하는 것이 아니라 문서의 정보를 융합해 자연스러운 문장으로 답변을 생성하는 능력을 평가했습니다. - Jeopardy Question Generation: “이 엔티티가 정답이 되려면 어떤 질문을 던져야 할까?”를 추론하는 텍스트 생성 태스크입니다.
- Fact Verification (사실 검증):
FEVER데이터셋을 활용해, 주어진 명제가 위키피디아 사실에 비추어 참인지 거짓인지 판별했습니다.
- Open-domain QA (단답형 질의응답): 정답이 명확한 사실 확인을 위해
-
모델 인프라
Generator인 BART-large(4억 개 파라미터)와 검색기인 DPR(BERT-base 기반)을 결합하여 실험을 진행했으며, Thorough Decoding 대신 실무적으로 연산량이 최적화된 Fast Decoding을 기본 전략으로 채택했습니다.
5.2 실험을 통해 얻은 결론 (Conclusion)
방대한 벤치마크 테스트를 통해 연구진은 기존 LLM 생태계의 판도를 바꾸는 세 가지 결정적인 결론을 도출해 냅니다.
-
파라미터 효율성의 증명
가장 충격적인 결과는 Open-domain QA 벤치마크 데이터셋에서 나타났습니다. 4억 개의 파라미터를 가진 RAG 모델이, 자신보다 무려 25배나 덩치가 큰 110억 개 파라미터의 거대 모델(T5-11B)을 압도적으로 누르고 SOTA를 달성했습니다. 파라미터의 크기를 무식하게 키우는 것보다, 똑똑한 검색기를 쥐어주는 것이 훨씬 효율적이고 정확하다는 사실을 수치로 증명해 낸 것입니다. 논문의 Table 1(Open-domain QA results) 하단을 보면 T5-11B의 NQ(Natural Questions) 점수는 34.5인 반면, 파라미터가 훨씬 적은 RAG-Sequence는 44.5로 압도적인 성능 격차를 내고 있습니다.
-
태스크에 따른 디코딩 전략의 명확한 승패
RAG-Sequence와 RAG-Token 두 가지 모델은 각자 잘하는 영역이 뚜렷하게 나뉘었습니다.
-
RAG-Sequence:
정답이 짧고 팩트 위주인 Open-domain QA(NQ, Trivia QA 등)에서 Token 모델보다 우수한 성능을 보였습니다. Table 1의 Open-domain QA 결과를 보면 RAG-Sequence가 RAG-Token 보다 일관되게 소폭 높은 점수를 기록하고 있습니다.
-
RAG-Token:
긴 텍스트를 유창하게 만들어내야 하는 서술형 QA(MS MARCO)나 질문 생성 태스크에서 압도적인 위력을 발휘했습니다. 단어마다 다양한 문서를 참조할 수 있는 구조적 장점이 결과로 입증된 셈입니다. Table 2(Geneartion tasks results)를 보면, 서술형 문장을 만드는 MS MARCO(Abstractive QA)와 Jeopardy 질문 생성 태스크가 나옵니다. 여기서는 RAG-Token 모델이 RAG-Sequence 모델보다 높은 성능(Rouge -L 점수 기준)을 기록하고 있습니다. 단어마다 여러 문서를 합성할 수 있는 RAG-Token 모델의 장점이 긴 텍스트 생성에서 입증된 것으로 볼 수 있습니다.
-
-
환각 감소와 사전 학습의 재학습 비용이 없는 지식 업데이트
순수 생성 모델(BART)과 비교했을 때, RAG는 존재하지 않는 사실을 지어내는 환각 현상이 눈에 띄에 줄어들었고, 텍스트 생성의 구체성과 사실성(Factual)이 크게 향상되었습니다.
또한, 위키피디아 데이터셋으로 진행한 실험에선 2018년 인덱스를 2016년 인덱스로 갈아 끼우는 것만으로도 모델의 재학습 없이 현재 저장 중인 지식에 기반한 답변을 내놓는 ‘Hot-swapping’의 실효성을 증명했습니다.
6. Critical Review & Follow-up
이 논문은 검색과 생성을 End-to-End로 결합하며 현재 LLM 생태계의 패러다임을 바꾼 위대한 연구입니다. 하지만 110억 개의 파라미터를 이겼다는 화려한 벤치마크 결과 이면에는, 이 모델을 실제 서비스 환경에 배포할 때 부딪히게 되는 뼈아픈 한계점들이 존재합니다.
6.1 파이프라인 병목으로 인한 속도 저하는 없는지?
논문은 4억 개(DPR 포함 약 6.2억 개)의 파라미터만으로 T5-11B를 압도했다고 강조합니다. 실제로 FAISS의 벡터 검색은 밀리초 단위로 끝나기 때문에, 절대적인 추론 속도 자체는 110억개 가중치를 연산해야 하는 T5보다 빠릅니다.
하지만 이 파이프라인 구조의 진짜 치명적인 명복은 ‘입력 시퀀스의 길이’에 있습니다. BART 인코더는 단순한 질문이 아니라, 검색된 상위 K개의 문서 텍스트를 하나로 이어 붙인 거대한 문자열을 입력으로 받습니다. 트랜스포머의 Attention 연산량은 시퀀스 길이의 제곱($O(N^2)$)에 비례하므로, 검색 정확도를 높이기 위해 문서 수(K)를 늘리는 순간 GPU VRAM이 터지거나 연산 속도가 기하급수적으로 느려지는 문제가 있습니다.
6.2 단순히 속도 개선 목적으로써가 아닌 Fast Decoding을 사용해야 하는 구체적인 이유
단순히 빠른 속도를 위해, 혹은 연산량을 줄이기 위해 Thorough Decoding을 포기하고 Fast Decoding을 선택한 것일까? Fast Decoding은 단순한 선택이 아닌 ‘확률의 희소성(Probability Sparsity)’을 활용한 매우 합리적이고 우아한 수학적 근사(Approximation) 입니다.
특정 문서가 빔 서치 과정에서 스스로 만들어내지 못한 단어의 생성 확률을 억지로 다시 계산해 보았자, 그 값을 $0.00000001$ 수준으로 0에 수렴합니다. 어차피 최종 가중합(Marginalization) 결과에 통계적으로 유의미한 영향을 주지 못할 쓰레기 값을 계산하느라 GPU를 태울 필요가 없으며, 이에 근거하여 실제로 Fast Decoding은 Thorough Decoding에 비해 성능 면에서도 큰 차이가 없다고 합니다.
6.3 Hot-swapping의 한계, OOV
논문에서 가장 매력적으로 다가오는 “문서 DB만 갈아 끼우면 지식이 업데이트된다”는 주장은 반쪽자리 진실입니다. 이는 기존에 모델이 알고 있던 단어들의 관계만 바뀌었을 때 성립합니다.
예를 들어 RAG 모델의 DPR의 Encoder에는 2018년 위키피디아 데이터로 학습을 했다고 하겠습니다. 그리고 시간이 흘러 “메타버스”, “코비드19”와 같이 과거에 없던 신조어나 새로운 개념(OOV)이 등장하면 어떻게 될까요? 학습이 멈춘 Encoder는 이 단어들을 의미 없는 하위 단어(Sub-word)로 쪼개버리고, 전혀 엉뚱한 벡터를 생성하여 검색에 실패합니다. 결국 최신 문서를 DB에 넣어두었음에도 불구하고 모델은 엉뚱한 대답(환각)을 내뱉게 됩니다. 즉, 단순한 문서 교체만으로는 어휘와 개념의 시간 격차(Concept Drift)를 극복할 수 없습니다.
6.4 생성기와 검색기의 지식 충돌
가장 통제하기 어려운 문제는 ‘파라미터(기억)’와 ‘검색 문서(팩트)’ 간의 충돌입니다.
사전 학습 과정에서 모델의 가중치에 특정 지식이 너무 강력하게 각인되어 있다면, 최신 문서를 검색해 주어도 모델이 이를 무시하고 자신의 낡은 기억을 꺼내어 답변하는 이른바 ‘모델의 고집(Parametric Bias)’ 현상이 발생합니다. 논문의 아키텍처에는 모델이 언제 외부 지식을 믿고 언제 내부 지식을 억제할지 명시적으로 제어하는 메커니즘이 부재하며, 이는 신뢰성이 생명이 도메인에서 치명적인 약점이 됩니다.
6.5 Follow-up: 한계를 넘어 Agentic RAG로의 진화
이러한 초기 RAG 구조의 한계점들은 현재 NLP 업계에서 가장 활발하게 연구되는 주제입니다. 단순히 질문을 임베딩하는 것을 넘어 질문 자체를 최신 용어로 다시 써주는 Query Transformation, 모델이 검색 결과를 스스로 평가하고 다시 검색을 명령하는 Agentic RAG, 그리고 문서의 출처와 신뢰도를 팩트 체크하는 Self-RAG 구조 등이 이 논문의 한계를 극복하기 위해 등장했습니다.
다음 포스팅에서는 이 위대한 논문이 남긴 숙제들을 현대의 LLM 시스템들이 어떻게 영리하게 해결(고도화)해 나가고 있는지, Agentic RAG의 관점에서 딥다이브해 보겠습니다.
Comments