개요
Retrieval-Augmented Generation(RAG)은 생성 모델이 답을 만들기 전에 외부 지식 저장소에서 관련 정보를 검색하고, 검색 결과를 생성 과정에 결합하는 접근법이다. 2020년 원 논문은 사전학습된 생성 모델의 파라미터 메모리와 외부의 비파라미터 메모리를 결합하는 구조를 제안했다.[1]
기본 흐름
실무적인 RAG 파이프라인은 보통 문서를 검색 가능한 형태로 준비하고, 사용자의 질문과 관련된 문서 조각을 찾은 뒤, 그 내용을 생성 모델의 입력 문맥에 넣어 답을 생성하는 순서로 이해할 수 있다. 원 논문의 구현에서는 Wikipedia 문서를 대상으로 한 dense vector index와 neural retriever를 사용해 관련 문서를 검색했다.[1]
왜 사용하는가
모델 파라미터 안에만 지식을 담는 방식과 달리 외부 문서 저장소를 별도로 유지할 수 있다는 점이 핵심이다. 문서 저장소를 갱신하면 모델 전체를 다시 학습하지 않고도 최신 자료나 조직 내부 자료를 검색 대상으로 바꿀 수 있다. 또한 어떤 문서를 검색했는지 기록하면 답변의 근거를 추적하는 데 도움이 된다.
검색 품질이 전체 품질을 좌우한다
RAG가 있다고 해서 답이 자동으로 정확해지는 것은 아니다. 질문과 관련 없는 문서를 가져오거나 필요한 문서를 놓치면 생성 단계도 잘못된 문맥에 의존할 수 있다. 문서 분할 방식, 검색 인덱스, 검색 개수, 재정렬, 문맥 길이 같은 설계가 결과에 영향을 준다. 검색된 문서 자체가 오래됐거나 틀렸다면 생성 결과 역시 그 한계를 이어받을 수 있다.
Embedding과의 관계
실제 RAG 시스템에서는 Embedding을 이용한 의미 기반 검색이 자주 사용된다. 질문과 문서를 벡터로 표현해 가까운 항목을 찾고, 선택된 내용을 LLM의 입력 문맥에 포함시키는 방식이다. 다만 RAG는 특정 임베딩 모델 하나를 뜻하지 않으며 키워드 검색이나 여러 검색 방식을 함께 사용할 수도 있다.
핵심 구분
RAG는 모델 자체를 다시 학습하는 미세조정과 다르다. 미세조정은 모델 가중치를 바꾸는 접근이고, RAG는 외부 정보를 검색해 실행 시점의 입력에 추가하는 접근이다.
사례: 제품 설명서로 답변 만들기
다음은 ORBiS Tree가 이해를 돕기 위해 구성한 가상 사례이며 실제 서비스의 측정 결과가 아니다. 한 업체의 설명서에 'A 모델은 실내 전용', 'B 모델은 방수 등급을 확인한 뒤 야외 사용 가능'이라고 적혀 있다고 하자. 사용자가 '비 오는 날 A를 밖에 둬도 되나요?'라고 물으면 먼저 A 모델 설명서의 사용 환경 부분을 찾아야 한다. 그 문단을 답변의 근거로 제공하고 '실내 전용이므로 야외 사용을 권하지 않는다'고 설명하는 흐름이 RAG의 활용 예다.[1]
이때 B 모델 설명서만 찾아 '야외 사용 가능'이라고 답하면 문장 생성이 자연스러워도 전체 시스템은 실패한다. 무엇을 검색했는지와 검색된 내용을 어떻게 답했는지를 각각 기록해야 원인을 찾을 수 있다. 제품명·문서 버전·게시일을 함께 관리하면 비슷한 문서 사이의 혼동을 줄이는 데 도움이 된다.
프롬프트·RAG·미세조정의 선택 기준
- 프롬프트: 자료가 짧고 일회성 작업이라면 필요한 원문을 직접 붙이고 출력 형식을 지정하는 방법부터 검토할 수 있다.
- RAG: 문서가 많거나 자주 바뀌며, 질문마다 다른 근거를 찾아야 하는 경우에 검토한다. 검색 시스템과 자료 갱신 과정이 추가로 필요하다.
- 미세조정: 반복되는 분류 기준이나 출력 형식을 학습으로 맞추려는 접근이다. 최신 자료 조회를 자동으로 대신하지 않는다.
- 결합: 답변의 형식은 미세조정으로 맞추고, 답변의 근거는 RAG로 공급할 수 있다. 두 방식의 역할을 따로 평가해야 한다.
오답이 나왔을 때 확인하는 순서
- 정답에 필요한 원문이 저장소에 있는지, 사용자가 열람할 권한이 있는지 확인한다.
- 질문에 맞는 문서 조각이 검색 결과에 포함됐는지 확인한다. 벡터 유사도 검색의 속도와 근사 정확도는 인덱스 설계에 따라 달라질 수 있다.[2]
- 제품명·표의 행·앞뒤 조건이 문서 분할 과정에서 분리되지 않았는지 확인한다.
- 모델이 근거 문장을 정확하게 사용했는지, 출처에 없는 예외를 만들어 붙이지 않았는지 확인한다.
- 근거가 없을 때 답을 꾸며내지 않고 '해당 자료에서 확인할 수 없다'고 응답하도록 평가한다.
작은 검증부터 시작하기
가상의 운영 예로, 자주 받는 질문 20개와 각 질문의 정답 근거를 사람이 먼저 정리할 수 있다. 20개는 표준이나 성능 보장 수치가 아니라 시작 규모의 예다. 질문마다 '근거 검색 성공', '근거에 맞는 답변', '출처 위치', '확인 불가 질문의 처리'를 따로 기록한다. 정답 문서가 검색되지 않으면 검색 단계를, 문서는 맞는데 답이 틀리면 생성 지시와 검증 단계를 먼저 살펴본다.
예제: 검색 성공과 답변 성공을 따로 세기
다음은 실제 성능이 아닌 가상 평가다. 정답 근거가 있는 질문 20개 중 16개에서 근거를 검색했고, 그 16개 중 12개에서 답도 근거에 맞았다면 검색 성공률은 16÷20=80%, 검색 성공 조건의 답변 성공률은 12÷16=75%, 전체 답변 성공률은 12÷20=60%다. 마지막 60%를 두 단계 모두의 성능으로 읽지 않는다. 이 단순 예는 필요한 근거가 검색되지 않은 질문은 최종 성공으로 세지 않았으며, 실무에서는 근거 없는 정답 추측도 따로 기록한다.
검색하지 못한 4개는 인덱스·문서 분할·질문 표현을, 근거가 있는데 틀린 4개는 문맥 조립·조건 적용·생성을 먼저 살핀다. RAG 원논문 ↗은 검색과 생성의 결합을 이해하는 출발점이다.[1] 검색 단계, 전달한 문맥과 근거 없는 출력을 나눠 보면 바꿀 지점이 분명해진다.
근거 없음·충돌·열람 불가를 다르게 처리
가상의 환불 질문에 정책 v1과 v2가 함께 검색되면 더 높은 유사도만으로 적용 버전을 정하지 않는다. 유효 날짜·상품·지역 등 실제 적용 범위를 확인한다. 최신 문서가 없으면 '자료 없음', 두 문서의 적용 관계가 불명확하면 '근거 충돌', 권한상 문서를 읽을 수 없으면 '열람 불가'로 다르게 기록한다. 열람 불가를 해결하기 위해 권한 밖 문서의 내용을 답에 노출하지 않는다.
문서를 더 넣기 전에 확인할 것
자료를 많이 넣어도 누락된 조건이나 잘못된 버전이 해결된다고 보장할 수 없다. Lost in the Middle 연구 ↗는 평가한 모델·과제에서 중요한 정보의 위치에 따라 결과가 달라질 수 있음을 보여 준다.[3] 모든 현재 모델이 같은 정도로 실패한다는 주장은 아니다.
정답 근거만 제공한 조건, 실제 검색 결과를 제공한 조건과 근거 위치를 바꾼 조건을 비교한다. 첫 조건부터 틀리면 검색 개수만 늘리는 처방은 부족하다. 반복 행동 학습과 RAG를 결합하더라도 근거 검색·답변·버전 적용을 별도로 평가하고, 확인 불가 답변도 평가 묶음에 포함한다.
연구 근거: 원논문에서 학습한 것
Lewis 등의 원논문(NeurIPS 2020) §2.1·§2.4는 검색 문서를 잠재변수로 합산하는 RAG-Sequence와 RAG-Token을 구분한다. 문서 인코더·인덱스는 고정하고 질의 인코더와 BART 생성기를 함께 미세조정했다.[1] 따라서 위의 실무적 검색·학습 구분을 'RAG 시스템은 학습할 수 없다'는 뜻으로 읽으면 안 된다. 원문의 Wikipedia 기반 평가를 현재 한국어 업무 성능으로 확대하지 않는다.