티스토리 뷰

이 글은 RAG(Retrieval-Augmented Generation) 아키텍처의 발전 흐름을 정리하는 시리즈의 첫 번째 편입니다. 시리즈는 1세대 Naive RAG를 시작으로, 2세대 Advanced RAG(Hybrid Search, Reranker, RAPTOR, Tree RAG), 3세대 Modular/Self-Corrective RAG(Self-RAG, CRAG, Adaptive-RAG, Graph RAG), 3.5세대 Ontology-Enhanced RAG, 그리고 4세대 Agentic RAG까지 이어질 예정입니다. 각 세대가 이전 세대의 어떤 한계를 극복하기 위해 등장했는지를 중심으로 살펴볼 계획이며, 이번 편에서는 그 출발점인 Naive RAG를 다룹니다.



LLM은 왜 외부 검색이 필요했는가

대규모 언어모델(LLM)은 사전학습 과정에서 방대한 텍스트 데이터를 학습하여, 모델 파라미터 안에 상당한 양의 사실 지식을 내재화합니다. GPT, BERT 계열 모델들이 별도의 외부 데이터 없이도 질문에 답변할 수 있는 것은 이 파라메트릭 지식 덕분입니다.

그러나 이 방식에는 근본적인 제약이 있습니다. 모델이 학습한 시점 이후의 정보는 알 수 없고, 학습 데이터에 포함되지 않았거나 빈도가 낮은 지식에 대해서는 부정확한 답변을 생성하는 경향이 있습니다. 더 큰 문제는 모델이 자신의 지식이 정확한지 아닌지를 스스로 판단하기 어렵다는 점입니다. 파라미터에 저장된 지식은 명시적으로 접근하거나 수정할 수 없기 때문에, 잘못된 정보가 저장되어 있더라도 이를 교정할 직접적인 방법이 없습니다. 결과적으로 모델은 그럴듯하지만 사실이 아닌 텍스트를 자신 있게 생성하는, 이른바 환각(hallucination) 문제를 피하기 어렵습니다.

이 한계를 해결하기 위한 접근 중 하나로, 모델이 답변을 생성하기 전에 외부 문서 저장소에서 관련 정보를 검색하여 참고하도록 하는 아이디어가 제안되었습니다. 모델의 파라메트릭 지식만으로 답변을 구성하는 대신, 비파라메트릭 메모리(즉, 외부에 저장된 문서 인덱스)를 함께 활용하는 것입니다. 이것이 RAG의 출발점이었습니다. 


 

최초의 RAG 논문

2020년, Lewis et al.이 NeurIPS에서 발표한 "Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks" (arXiv:2005.11401)가 RAG라는 개념을 공식적으로 제안한 논문입니다. 이 논문은 파라메트릭 메모리(seq2seq 생성 모델)와 비파라메트릭 메모리(위키피디아 기반 Dense Vector Index)를 하나의 프레임워크로 결합하는 방법을 제시했습니다.

논문의 핵심 아이디어는 간결합니다. 질문이 주어지면, 먼저 관련 문서를 검색하고, 검색된 문서를 질문과 함께 생성 모델에 전달하여 답변을 만드는 것입니다. 지금은 매우 자연스러워 보이는 이 구조가, 당시에는 사전학습 모델의 지식 한계를 보완하는 새로운 패러다임으로 주목받았습니다.

Indexing → Retrieval → Generation

Naive RAG의 파이프라인은 세 단계로 구성됩니다.

첫 번째는 Indexing 단계입니다. 위키피디아 등 대규모 문서 코퍼스를 일정 크기의 청크(chunk)로 분할한 뒤, 각 청크를 BERT 기반 인코더(논문에서는 BERT_d)로 벡터화하여 Dense Vector Index에 저장합니다. 이 과정은 오프라인으로 사전에 수행되며, 검색 시점에 실시간으로 전체 문서를 인코딩할 필요가 없도록 합니다.


두 번째는 Retrieval 단계입니다. 사용자의 질의(query)가 입력되면, 별도의 질의 인코더(BERT_q)가 이를 벡터로 변환합니다. 이 질의 벡터와 사전 구축된 문서 벡터 인덱스 사이에서 MIPS(Maximum Inner Product Search)를 수행하여, 의미적 유사도가 가장 높은 Top-k개의 문서 청크를 검색합니다. 여기서 질의 인코더와 문서 인코더가 분리되어 있다는 점이 중요합니다. 문서 인코더는 인덱싱 시점에 한 번만 실행되고, 질의 인코더만 실시간으로 동작하기 때문에 검색 속도를 확보할 수 있습니다.


세 번째는 Generation 단계입니다. 검색된 Top-k 문서 청크와 원래 질문을 함께 BART 기반 생성 모델에 입력하여 최종 답변을 생성합니다. 생성 모델은 자신의 파라메트릭 지식과 검색된 외부 문서를 동시에 참고하여 답변을 구성하게 됩니다.


이 세 단계 파이프라인(색인, 검색, 생성)은 이후 등장하는 모든 RAG 변형의 기본 골격이 되었습니다. 후속 연구들은 이 파이프라인의 각 단계를 개선하거나, 단계 간의 상호작용을 정교하게 만드는 방향으로 발전해 나갔습니다.



두 가지 변형: RAG-Sequence와 RAG-Token

Lewis et al. (2020)은 검색된 문서를 생성 과정에서 활용하는 방식에 따라 두 가지 변형을 제안했습니다.

RAG-Sequence 모델은 하나의 검색된 문서를 전체 답변 시퀀스 생성에 일관되게 사용합니다. 각 Top-k 문서 z에 대해 전체 답변 y를 독립적으로 생성한 뒤, 각 문서의 검색 확률 p(z|x)를 가중치로 사용하여 최종 답변 확률을 마지널라이즈합니다. 수식으로 표현하면 p(y|x) = Σ p(z|x) · p(y|x,z)입니다. 직관적으로 말하면, "이 문서가 맞다고 가정했을 때 최선의 답변"을 문서별로 각각 생성하고, 문서의 관련도에 따라 가중 합산하는 방식입니다.


RAG-Token
모델은 답변의 각 토큰을 생성할 때마다 서로 다른 문서를 참조할 수 있습니다. 토큰 y_i를 생성하는 시점에서 모든 Top-k 문서에 대해 마지널라이즈를 수행하고, 전체 답변의 확률은 각 토큰 확률의 곱으로 계산됩니다. 수식으로는 p(y|x) = Π Σ p(z|x) · p(y_i|x, z, y₁..i-1)입니다. 이 방식은 답변의 앞부분은 문서 A를, 뒷부분은 문서 B를 참조하는 것이 가능하므로, 여러 문서의 정보를 더 유연하게 조합할 수 있습니다.


논문의 실험 결과에 따르면, 두 변형 모두 기존 파라메트릭 전용 모델을 상회하는 성능을 보였습니다. RAG-Sequence는 답변의 일관성이 중요한 태스크에서, RAG-Token은 여러 출처의 정보를 종합해야 하는 태스크에서 각각 강점을 보이는 경향이 있었습니다. 다만 이 두 변형의 성능 차이가 모든 태스크에서 극적이었던 것은 아니며, 태스크 특성에 따라 적합한 변형이 달라질 수 있다는 점은 참고할 부분입니다.



무엇을 달성했는가

Lewis et al. (2020)의 실험에서 RAG는 세 가지 Open-domain QA 벤치마크—Natural Questions, TriviaQA, WebQuestions—에서 당시 SOTA(State-of-the-Art) 성능을 달성했습니다. 특히 주목할 점은, 이 결과가 태스크별로 특화된 아키텍처 없이 범용적인 Retrieve-then-Generate 구조만으로 얻어졌다는 것입니다.

생성 품질 측면에서도 의미 있는 결과가 있었습니다. Jeopardy 문제 생성 태스크에서 RAG 모델은 파라메트릭 전용 BART 모델 대비 더 구체적이고, 다양하며, 사실에 부합하는 텍스트를 생성했습니다. 외부 검색이 단순히 정답 정확도만 높이는 것이 아니라, 생성 텍스트의 전반적인 품질(사실성, 구체성, 다양성)을 향상시킬 수 있다는 것을 보여준 결과였습니다.


이 논문은 "검색으로 LLM의 지식을 보완한다"는 아이디어가 이론적 제안을 넘어 실제로 동작하고, 측정 가능한 성능 향상을 가져온다는 것을 실증적으로 입증한 첫 번째 사례였습니다. 이후 RAG가 하나의 독립된 연구 분야이자 실무 패러다임으로 자리잡는 데 결정적인 기여를 했다고 볼 수 있습니다.



단순한 구조가 남긴 한계

Naive RAG는 Retrieve → Read라는 단순한 파이프라인으로 강력한 성능을 보여주었지만, 바로 그 단순함 때문에 여러 구조적 한계를 가지고 있었습니다.

가장 근본적인 문제는 검색 품질에 대한 전적인 의존입니다. 생성 모델은 검색된 문서를 그대로 참고하여 답변을 만들기 때문에, 검색 단계에서 관련 없는 문서가 Top-k에 포함되면 그 노이즈가 생성 결과에 직접적으로 전파됩니다. 검색이 잘못되면 모델은 잘못된 근거를 바탕으로 자신 있게 답변을 생성하게 되고, 이는 환각의 직접적인 원인이 됩니다. 검색 결과의 품질을 사후에 검증하거나 교정하는 메커니즘이 파이프라인에 존재하지 않았기 때문입니다.

두 번째는 Dense Retrieval만으로는 포착하기 어려운 질의 유형이 있다는 점입니다. 의미 기반 벡터 검색은 질의와 문서 사이의 의미적 유사성을 잘 포착하지만, 고유명사, 전문 용어, 숫자, 코드 같은 키워드 매칭이 중요한 경우에는 오히려 전통적인 희소 검색(BM25 등)보다 취약할 수 있습니다. 예를 들어 "RFC 7519의 Section 4.1에서 정의하는 클레임은?"이라는 질의에서 "RFC 7519"와 "Section 4.1"은 정확한 키워드 매칭이 필요한 요소인데, Dense Retriever는 이를 의미적으로 유사한 다른 문서와 혼동할 가능성이 있습니다.


세 번째는 청크 단위 검색의 거시적 맥락 부재 문제입니다. 문서를 일정 크기의 청크로 분할하여 독립적으로 인덱싱하기 때문에, 개별 청크는 원본 문서 내에서의 위치나 전후 맥락 정보를 잃게 됩니다. 하나의 문서 전체를 관통하는 주제나 논지를 파악해야 하는 질문, 혹은 여러 섹션에 걸쳐 분산된 정보를 종합해야 하는 질문에는 구조적으로 취약합니다. 청크 하나하나는 관련성이 높아 보여도, 그것만으로는 전체 그림을 구성하기 어려운 경우가 발생합니다.


네 번째는 무조건적 검색의 비효율성입니다. Naive RAG는 모든 질의에 대해 예외 없이 검색을 수행합니다. "대한민국의 수도는?"처럼 LLM이 이미 확실하게 알고 있는 상식적 질문에도 검색이 실행되며, 이 경우 검색된 문서가 오히려 불필요한 노이즈로 작용하여 답변 품질을 떨어뜨릴 수도 있습니다. 검색이 필요한 질의와 그렇지 않은 질의를 구분하는 판단 로직이 없다는 것은, 파이프라인의 유연성이 부족하다는 것을 의미합니다.



모든 것의 출발점

Gao et al. (2024, arXiv:2312.10997)의 서베이 논문은 RAG의 발전을 Naive RAG, Advanced RAG, Modular RAG의 세 패러다임으로 분류했습니다. 이 분류에서 Naive RAG는 가장 기초적인 형태이지만, 동시에 이후 모든 발전의 기준점(baseline)으로 기능합니다. 후속 연구들이 제안하는 개선의 효과는 대부분 Naive RAG 대비 얼마나 나아졌는가로 측정되기 때문입니다.


되돌아보면, Naive RAG의 가치는 그 자체의 성능보다도 "검색과 생성의 결합"이라는 패러다임을 확립한 데 있습니다. 단순하지만 명확한 이 구조 위에서, 검색 품질을 높이려는 시도(Hybrid Search, Reranker), 거시적 맥락을 확보하려는 시도(RAPTOR, Tree RAG), 검색 결과를 자체적으로 검증하려는 시도(Self-RAG, CRAG), 그리고 파이프라인 자체를 동적으로 재구성하려는 시도(Modular RAG, Agentic RAG)가 차례로 등장했습니다. 각 세대는 이전 세대의 명확한 한계에 대한 응답으로 탄생했고, 그 한계의 원형은 모두 Naive RAG에서 시작됩니다.



정리하며

RAG라는 개념을 처음 접했을 때는 "검색해서 넣어주면 되는 거 아닌가?"라는 단순한 인상을 받았습니다. 실제로 Naive RAG의 구조 자체는 그 직관과 크게 다르지 않습니다. 하지만 Lewis et al.의 논문을 직접 읽어보면, 파라메트릭 메모리와 비파라메트릭 메모리의 결합이라는 프레임워크, RAG-Sequence와 RAG-Token이라는 두 가지 마지널라이제이션 전략, 그리고 질의 인코더의 end-to-end 학습까지, 단순해 보이는 구조 안에도 상당한 설계 의도가 담겨 있다는 것을 알 수 있었습니다.


동시에, 이 구조의 한계도 명확합니다. 검색 품질에 전적으로 의존하는 구조, 키워드 매칭의 부재, 청크 단위의 맥락 손실, 무조건적 검색. 이 네 가지 한계는 각각 이후 세대에서 Hybrid Search, RAPTOR/Tree RAG, Self-RAG/CRAG, Adaptive-RAG 등의 형태로 하나씩 해결되어 갑니다.


다음 편에서는 이 한계들 중 검색 품질에 직접 대응한 2세대 Advanced RAG를 다룰 예정입니다. Sparse 검색과 Dense 검색을 결합한 Hybrid Search, Cross-Encoder 기반의 Reranker, 그리고 재귀적 클러스터링-요약으로 거시적 맥락을 확보한 RAPTOR와 Tree RAG까지, Naive RAG의 검색 한계를 어떻게 극복해 나갔는지 살펴보겠습니다.



References

  • Lewis, P., Perez, E., Piktus, A., Petroni, F., Karpukhin, V., Goyal, N., ... & Kiela, D. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. NeurIPS 2020. arXiv:2005.11401
  • Gao, Y., Xiong, Y., Gao, X., Jia, K., Pan, J., Bi, Y., Dai, Y., Sun, J., & Wang, H. (2024). Retrieval-Augmented Generation for Large Language Models: A Survey. arXiv:2312.10997
  • Singh, A., Ehtesham, A., Kumar, S., & Khoei, T. T. (2025). Agentic Retrieval-Augmented Generation: A Survey on Agentic RAG. arXiv:2501.09136