#개념

검색 증강 생성(Retrieval-Augmented Generation, RAG)은 대규모 언어 모델(Large Language Models, LLM)이 질문에 답할 때 모델 내부의 파라미터에 저장된 지식(parametric memory)에만 의존하지 않고, 외부 문서 저장소라는 비파라미터 지식(non-parametric memory)에서 관련 정보를 검색하여 생성 과정에 결합하는 기법이다. 이 용어는 Lewis 등(2020)이 발표한 논문 "Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks"에서 처음 제안되었다. 원 논문의 RAG는 DPR(Dense Passage Retrieval) 기반의 검색기와 BART 기반의 생성기를 하나의 확률 모델로 결합하여, 질문 $x$에 대해 상위 $k$개의 문서 $z$를 검색하고 $p(y|x) \approx \sum_{z} p_\eta(z|x)\, p_\theta(y|x,z)$와 같이 검색된 문서를 잠재 변수로 주변화(marginalize)하는 방식으로 답변 $y$를 생성하며, 검색기와 생성기를 함께 종단간(end-to-end)으로 미세 조정한다는 점이 특징이었다. 이후 ChatGPT를 비롯한 범용 LLM이 등장하면서 RAG는 모델 학습 없이 검색 결과를 프롬프트에 삽입하는 인컨텍스트(in-context) 방식이 주류가 되었고, 사내 문서 질의응답, 고객 지원 챗봇, 코드 어시스턴트 등 LLM 응용의 표준 아키텍처로 자리 잡았다. RAG가 필요한 이유는 LLM의 근본적인 한계에 있다. LLM은 학습 시점 이후의 정보를 알지 못하고(지식 단절, knowledge cutoff), 학습 데이터에 없는 기업 내부 정보나 개인 데이터를 답할 수 없으며, 모르는 내용도 그럴듯하게 지어내는 환각(Hallucination) 현상을 보인다. RAG는 답변의 근거가 되는 문서를 명시적으로 제공하여 환각을 줄이고, 지식 저장소만 갱신하면 최신 정보를 반영할 수 있으며, 답변에 출처(citation)를 함께 제시하여 사용자가 검증할 수 있게 한다.
일반적인 RAG 시스템은 인덱싱(Indexing), 검색(Retrieval), 생성(Generation)의 세 단계로 구성된다. 인덱싱 단계에서는 PDF, 웹 페이지, 위키, 데이터베이스 등 다양한 원천에서 문서를 수집하고 텍스트를 추출한 뒤, 이를 청킹(Chunking)이라 불리는 과정으로 적절한 크기의 조각(chunk)으로 분할한다. 청크가 너무 크면 관련 없는 내용이 섞여 검색 정밀도가 떨어지고 프롬프트 길이를 낭비하며, 너무 작으면 문맥이 끊겨 의미가 손실되므로, 고정 길이 분할, 문단·제목 구조 기반 분할, 의미 유사도 기반 분할(semantic chunking), 인접 청크 간 일부를 겹치게 하는 중첩(overlap) 전략 등을 데이터 특성에 맞게 선택한다. 분할된 각 청크는 임베딩(Embedding) 모델을 통해 의미를 담은 밀집 벡터로 변환되어 벡터 데이터베이스(Vector Database)에 원문과 메타데이터(출처, 작성일, 접근 권한 등)와 함께 저장된다. 검색 단계에서는 사용자 질문을 같은 임베딩 모델로 벡터화하고 코사인 유사도 등으로 가장 가까운 청크를 근사 최근접 이웃 탐색으로 찾아낸다. 실무에서는 밀집 벡터 검색만으로는 고유명사, 제품 코드, 약어처럼 정확한 어휘 일치가 중요한 질의에 취약하므로, 통계적 키워드 검색 알고리즘인 BM25와 벡터 검색의 결과를 상호 순위 융합(Reciprocal Rank Fusion, RRF) 등으로 결합하는 하이브리드 검색(Hybrid Search)이 널리 사용된다. 또한 1차 검색으로 수십 개의 후보를 빠르게 추린 뒤, 질문과 각 청크를 함께 입력받아 관련도를 정밀하게 채점하는 크로스 인코더(cross-encoder) 기반 리랭킹(Reranking) 모델로 상위 몇 개를 다시 선별하면 검색 품질이 크게 향상된다. 생성 단계에서는 선별된 청크를 시스템 프롬프트의 지시문("제공된 문맥만을 근거로 답하고, 근거가 없으면 모른다고 답하라")과 사용자 질문에 결합하여 LLM에 전달하고, 모델은 이 문맥을 바탕으로 답변과 출처를 생성한다. 이때 문맥이 프롬프트의 중간에 위치하면 모델이 이를 놓치는 경향(lost in the middle)이 보고되어 있어, 관련도가 높은 청크를 앞이나 뒤에 배치하는 순서 조정도 고려된다.
RAG는 LLM에 새로운 지식을 부여하는 또 다른 방법인 미세 조정(Fine-tuning)과 자주 비교된다. 미세 조정은 도메인 데이터로 모델 가중치를 갱신하여 특정 문체, 형식, 전문 용어 사용법 같은 "행동 방식"을 익히는 데 효과적이지만, 사실적 지식을 정확히 주입하기에는 비용이 크고 신뢰성이 낮으며, 지식이 바뀔 때마다 재학습이 필요하고 답변의 출처를 추적하기 어렵다. 반면 RAG는 학습 없이 문서만 추가·수정하면 지식을 갱신할 수 있고, 문서 단위의 접근 권한 제어와 출처 제시가 가능하며, 사용자별로 서로 다른 데이터를 제공할 수 있다는 장점이 있다. 그러나 RAG는 검색 품질에 답변 품질이 종속되고, 매 요청마다 검색과 긴 프롬프트 처리로 지연 시간(Latency)과 토큰 비용이 증가한다는 부담이 있다. 따라서 두 방법은 대립 관계가 아니라 상호 보완적이며, 도메인 용어와 응답 형식은 미세 조정으로, 자주 바뀌는 사실 지식은 RAG로 다루는 조합이 흔히 사용된다. RAG 시스템의 평가는 검색과 생성을 분리하여 다면적으로 수행한다. 검색 단계는 정답 문서가 상위 $k$개 안에 포함되는 비율인 Recall@k, 순위를 반영한 MRR(Mean Reciprocal Rank)이나 nDCG 같은 전통적 정보 검색 지표로 측정한다. 생성 단계는 정답이 하나로 정해지지 않으므로 LLM을 심판으로 활용하는 LLM-as-a-judge 방식이 주로 쓰이며, Es 등(2023)이 제안한 RAGAS(Retrieval Augmented Generation Assessment) 프레임워크는 정답 레이블 없이도 평가할 수 있는 지표로 답변의 주장이 검색된 문맥에 의해 뒷받침되는 정도인 충실성(Faithfulness), 답변이 질문에 얼마나 직접적으로 대응하는지 나타내는 답변 관련성(Answer Relevance), 검색된 문맥이 질문에 실제로 필요한 정보로 채워진 정도인 문맥 관련성(Context Relevance)을 정의했다. 이러한 지표는 환각(낮은 충실성)과 검색 실패(낮은 문맥 관련성)를 구분하여 파이프라인의 어느 단계를 개선해야 하는지 진단하는 데 활용된다.
기본 RAG(naive RAG)의 한계를 극복하기 위해 다양한 고급 기법이 발전했으며, Gao 등(2023)은 이를 기본 RAG, 검색 전·후 처리를 최적화한 고급 RAG(advanced RAG), 구성 요소를 자유롭게 조합하는 모듈형 RAG(modular RAG)로 분류했다. 검색 전 단계에서는 사용자의 짧고 모호한 질문을 LLM으로 더 명확하게 바꾸거나 여러 하위 질문으로 분해하는 쿼리 재작성(Query Rewriting)과 다중 쿼리 생성이 사용되고, HyDE(Hypothetical Document Embeddings)는 질문에 대한 가상의 답변 문서를 LLM으로 먼저 생성한 뒤 그 문서의 임베딩으로 검색하여 질문과 문서 사이의 표현 불일치를 줄인다. 인덱싱 측면에서는 작은 청크로 검색하되 생성 시에는 상위 문단 전체를 전달하는 부모-자식(parent-child) 청킹, 청크마다 요약이나 예상 질문을 생성해 함께 색인하는 방법, 청크 앞에 문서 전체 맥락을 붙이는 문맥 보강 등이 쓰인다. GraphRAG는 문서에서 개체(entity)와 관계를 추출하여 지식 그래프를 구축하고 커뮤니티 단위의 요약을 미리 생성해 두어, "이 데이터셋의 주요 주제는 무엇인가"처럼 여러 문서에 흩어진 정보를 종합해야 하는 전역적(global) 질문에 답하는 데 강점을 보인다. 에이전틱 RAG(Agentic RAG)는 LLM을 검색 도구를 호출하는 에이전트로 활용하여, 검색이 필요한지 스스로 판단하고, 검색 결과가 불충분하면 질문을 바꿔 다시 검색하며, 여러 단계의 추론을 거쳐 답을 조합하는 반복적·다단계 검색을 수행한다. Self-RAG처럼 모델이 검색 여부와 검색 결과의 유용성을 스스로 비판(reflection)하도록 학습시키는 접근이나, 여러 지식 소스를 라우팅하는 방식도 여기에 속한다. 한편 LLM의 컨텍스트 창이 수십만 토큰으로 확장되면서 문서 전체를 프롬프트에 넣는 롱 컨텍스트 방식이 RAG를 대체할 수 있다는 논의도 있으나, 비용·지연 시간과 대규모 지식 저장소의 규모를 고려하면 검색으로 관련 내용을 먼저 좁히는 RAG의 역할은 여전히 유효하며 두 방식은 함께 사용된다.
RAG를 실무에 적용할 때는 몇 가지 한계와 고려 사항을 인식해야 한다. 첫째, 검색기가 관련 문서를 찾지 못하거나 서로 모순되는 문서를 반환하면 아무리 좋은 LLM도 올바른 답을 낼 수 없으므로 데이터 품질과 청킹·임베딩 전략, 검색 튜닝이 성능을 좌우한다. 둘째, 문맥이 주어져도 LLM이 문맥을 무시하고 내부 지식으로 답하거나 문맥에 없는 내용을 덧붙이는 환각은 완전히 사라지지 않으므로 충실성 평가와 출처 검증 장치가 필요하다. 셋째, 표·이미지·코드가 섞인 문서의 파싱, 여러 문서를 넘나드는 다중 홉(multi-hop) 추론, 시간에 따라 바뀌는 사실의 버전 관리는 여전히 어려운 문제다. 넷째, 문서에 삽입된 악의적 지시문이 프롬프트를 통해 모델을 조종하는 간접 프롬프트 주입(indirect prompt injection)과 권한이 없는 문서가 검색되어 노출되는 보안 문제에 대비해야 한다. 마지막으로 임베딩 모델을 교체하면 전체 문서를 다시 색인해야 하고, 문서 갱신과 동기화, 검색 로그 기반의 지속적 평가 등 운영 측면의 관리가 필요하므로, RAG는 단순한 프롬프트 기법이 아니라 데이터 파이프라인과 검색 시스템, 평가 체계를 포함하는 하나의 시스템으로 설계되어야 한다.

#관련 용어

대규모 언어 모델(LLM)
방대한 텍스트로 사전 학습되어 RAG에서 검색된 문맥을 바탕으로 답변을 생성하는 생성기 역할의 모델
임베딩
질문과 문서 청크를 의미적 유사성이 보존되는 실수 벡터로 변환하는 표현 기법
벡터 데이터베이스
문서 청크의 임베딩 벡터를 저장하고 근사 최근접 이웃 탐색으로 유사한 청크를 검색하는 저장소
하이브리드 검색
BM25 같은 키워드 검색과 벡터 검색의 결과를 결합하여 어휘 일치와 의미 유사성을 모두 반영하는 검색 방식
리랭킹
1차 검색된 후보 문서를 크로스 인코더 등으로 질문과의 관련도를 정밀하게 재채점하여 순위를 다시 매기는 단계
미세 조정
사전 학습된 모델의 가중치를 도메인 데이터로 추가 학습하여 조정하는 기법으로, RAG와 상호 보완적으로 사용되는 지식 부여 방법

#직무 연관도

DA
Data Analyst
보통
사내 데이터에 대한 자연어 질의응답 도구를 활용하고, 검색 로그와 평가 결과를 분석하여 지식 저장소의 품질 개선 방향을 도출하는 데 활용된다
DS
Data Scientist
밀접
청킹·임베딩·검색 전략을 설계하고 충실성·관련성 지표로 파이프라인을 평가·개선하며, 고급 검색 기법과 미세 조정의 조합을 결정하는 핵심 영역
DE
Data Engineer
밀접
문서 수집·색인 파이프라인, 벡터 데이터베이스와 하이브리드 검색 인프라, 지연 시간·비용 최적화와 접근 권한 제어를 구현·운영하는 데 직접 활용된다

#사용 사례

인터넷 서비스전자상거래금융의료법률교육제조
개요
RAG는 사내 문서·규정에 대한 질의응답, 고객 지원 챗봇, 코드베이스 기반 개발 어시스턴트, 의료·법률 문헌 검색 보조, 상품 정보 기반 쇼핑 어시스턴트, 뉴스·보고서 요약 등 최신성과 출처 제시가 중요한 생성형 AI 응용 전반에 활용된다.
사례
전자상거래 기업의 고객 지원 챗봇에서, 고객이 "해외 배송 상품도 무료 반품이 되나요?"라고 물으면 시스템은 질문을 임베딩하여 반품 정책, 배송 안내, 자주 묻는 질문 문서에서 관련 청크를 하이브리드 검색과 리랭킹으로 선별한 뒤, 이를 프롬프트에 포함하여 LLM이 최신 정책에 근거한 답변을 출처 링크와 함께 생성하게 한다. 정책 문서가 개정되면 해당 문서만 다시 색인하면 되므로 모델을 재학습할 필요가 없다.

#참고 자료

#추천 포스트

© 2024 diki All rights reserved.