오늘은 RAG 기술에 대해서 다뤄보도록 하겠다. 모두들 기억하고 있겠지만, 정말 얼마 안된, 몇 년 전까지만 해도 LLM은 가장 큰 문제인 Hallucination에 직면하고 있었다. 사실 지금도 RAG와 같은 최신 기술(?)들을 follow-up 하지 않는, 비-테크 회사에서는 종종 LLM 관련하여 hallucination이 생길 경우 자료 정리를 어떻게 할 것인지 이런 질문들을 하기도 한다고 들었던 것 같다.
이제 그런 걱정은 없고, 학계에서도 Hallucination 관련한 내용을 거의 언급하지 않는 듯하다. 이는 모두 Facebook AI Research (FAIR) 에서 발표한 RAG(Retrieval-Augmented Generation) 논문 덕분이다.
RAG의 직관적 이해
기존의 언어 모델(BART, T5 등)은 학습 데이터의 지식을 모델의 가중치(Parameters) 안에 저장한다. 이를 Parametric Memory라고 부른다. 하지만 이 방식은 지식 확장이 어렵고 결정 근거를 알기 힘들다는 단점이 있다.
RAG는 여기에 외부 지식 베이스(예: Wikipedia)를 직접 참조하는 Non-parametric Memory를 결합하는 방식이다. 모델이 답을 모를 때 도서관에서 책을 찾아보고 답하는 것과 같은 원리라고 이해하면 될 것이다.
RAG Architecture

크게 Retriever와 Generator로 나눠서 보면 될 것이다. 실제 document에서 그대로 가져와서, generator로 가져온 정보와 조합해서 최종 답변을 만드는 것이다. 가져온 정보들을 건드리지 않기 때문에 hallucination을 하지 않는 것이다.
1. Retriever
RAG의 첫 번째 핵심 구성 요소로, 사용자의 질문에 관련된 문서를 찾는 역할을 한다. Query Encoder로 사용자의 입력 질문 x를 벡터 형태로 변환하는데, 이는 BERT가 base가 된다. 그 후 문서에 index를 매기는데, 위키피디아와 같은 방대한 문서 집합을 미리 벡터화하여 저장해 둔 index이다. 이후에는 벡터화된 문서와 사용자의 질문인 쿼리에 대한 유사도를 이용해서 적합한 내용을 찾아야하는데, MIPS (Maximum Inner Product Search)를 통해 쿼리 벡터와 문서 벡터 간의 내적을 계산하여 가장 관련성이 높은 Top-K개의 문서 z_i를 빠르게 찾아낸다.
2. Generator
검색된 문서를 참고하여 최종 답변을 생성하는 부분이다. RAG는 사전 학습된 seq2seq 모델인 BART-large를 generator로 사용한다. 원래의 질문 x와 검색된 문서 z를 concat하여 generator의 input으로 전달하면, Generator는 질문과 검색된 문서의 맥락을 모두 고려하여 단어들을 하나씩 생성한다.
3. 확률적 결합 및 주변화 (Marginalize)
Figure 우측의 Marginalize 부분은 RAG가 여러 문서로부터 얻은 정보를 어떻게 통합하는지를 보여주는데, RAG는 어떤 문서가 정답에 도움이 될지 미리 알 수 없으므로, 검색된 K개의 문서들을 latent로 취급한다. 각 문서가 정답일 확률과 해당 문서를 참고했을 때 특정 답변이 나올 확률을 곱한 뒤, 이를 모든 K개 문서에 대해 합산(Marginalize)하여 최종 답변 y를 결정한다.
4. 종단간 학습 (End-to-End Backprop)
Figure 1 상단의 점선 화살표는 이 모델의 가장 큰 특징인 End-to-End Backprop를 의미한다. 어떤 문서가 구체적으로 필요하다는 직접적인 supervision 없이도, 최종 답변이 맞았는지 틀렸는지에 따라 Query Encoder와 Generator를 동시에 학습시킬 수 있는 것이 포인트이다. 이를 통해 Generator는 답변 생성에 더 도움이 되는 문서를 찾도록, 생성기는 검색된 문서를 더 잘 활용하도록 함께 학습되는 것이다.
Experiment


Open-domain QA: Natural Questions, TriviaQA 등 주요 벤치마크에서 기존의 추출 기반 모델들을 제치고 State-of-the-Art(SOTA)를 기록하였고, BART보다 Hallucination 부분이 줄어들었고, 모델을 재학습시키지 않고도 외부 지식 색인(Wikipedia 덤프)만 교체하면 최신 정보를 반영할 수 있음 (Hot-Swapping) 을 보여준다.
Contribution
RAG는 모델이 왜 그런 답변을 했는지 참조한 문서를 통해 확인할 수 있게 함으로써 LLM의 Interpretability를 높여주었다. 또한, 모델의 크기를 무작정 키우지 않아도 방대한 지식을 다룰 수 있게 하여 효율적인 AI 개발의 길을 열어주었다.
결론적으로, RAG는 현대 LLM 서비스(SearchGPT, Perplexity 등)의 기술적 근간이 되었고, 한 때 매우 화두였던 hallucination의 문제를 해결해준 기술인 것이다.
오늘 다뤘던 것은 초기의 RAG 형태이고, 이후에는 Advanced RAG 기법들이 속속들이 등장한다. Advanced RAG는 기존 RAG가 가진 검색 품질과 생성 정확도의 한계를 극복하기 위해 검색 전(Pre-retrieval), 검색(Retrieval), 검색 후(Post-retrieval) 전 과정을 하나씩 발전시키려는 시도들이다. 먼저 검색 전 단계에서는 쿼리 재작성이나 Routing 등을 통해 질문을 최적화하고, Retrieval 단계에서는 벡터 유사도와 키워드 검색을 결합한 하이브리드 방식을 채택하여 검색의 정밀도를 높이기도 하고, 검색 후 단계에서 Reranking을 통해 가장 관련성이 높은 문서를 선별하고 불필요한 정보를 압축함으로써 모델이 맥락을 더 정확히 파악하게 하며, 최근에는 지식 그래프나 에이전트 구조를 결합하여 복잡한 다단계 추론까지 수행하는 방향으로 발전하고 있다.
'LLM' 카테고리의 다른 글
| [DeepSeek 2024] DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning (0) | 2026.01.04 |
|---|---|
| [OpenAI 2020] Scaling Laws for Neural Language Models (0) | 2026.01.03 |