RAG

Retrieval-Augmented Generation

방법

질문이 들어오면 우리 자료에서 관련 대목을 먼저 찾아 붙여 주고 모델이 그 대목만 보고 답하게 만드는 방식입니다.

등장 배경

대규모 언어 모델은 아주 많은 텍스트를 미리 읽어 두고 앞의 말에 이어질 말을 골라 내놓는 프로그램입니다. 여기에 우리 회사 문서는 들어 있지 않습니다. 학습한 시점 이후에 생긴 일도 모릅니다. 그런데 모르는 것을 물어도 모른다고 답하지 않고 그럴듯한 문장을 만들어 냅니다.

페이지덱에서 그 문제가 드러난 자리는 고객 문의였습니다. 지현이 문의 답변 초안을 모델에 맡겨 봤더니, 없는 메뉴를 경로까지 붙여 안내하는 답이 나왔습니다. 문장은 매끄럽고 형식도 맞았습니다. 설정 화면에 그런 항목이 없다는 것만 틀렸습니다. 사실이 아닌 답을 자연스럽게 내놓는 이 현상을 환각이라고 부릅니다.

모델을 더 크게 만드는 것으로는 이 문제가 풀리지 않습니다. 우리 도움말에 무엇이 적혀 있는지는 모델 안에 없는 정보라서, 모델 밖에서 찾아 건네주는 수밖에 없습니다. 질문에 답하기 전에 자료를 먼저 찾아 오는 단계를 붙인 것이 이 방식입니다.

사용 절차

찾아 오는 단계와 답하는 단계를 나눠 붙입니다. 미리 준비하는 일이 넷이고 질문이 들어온 뒤에 도는 일이 셋입니다.

  1. 자료를 모읍니다. 도움말, 정책 문서, 과거 문의 답변이 재료입니다. 이 단계에서 낡은 문서와 서로 어긋나는 문서를 걸러 냅니다. 모순된 자료를 그대로 넣으면 모델이 어느 쪽을 골랐는지 확인할 방법이 없습니다.
  2. 문서를 잘게 나눕니다. 도움말 한 편을 통째로 넣으면 관련 없는 대목이 함께 붙어 잡음이 됩니다. 문단 단위로 500자에서 1,000자쯤으로 자르고, 조각마다 어느 문서의 몇 번째 대목인지를 함께 적어 둡니다.
  3. 조각을 임베딩으로 바꿉니다. 문장의 의미를 숫자 목록으로 바꾼 표현이고, 글자가 겹치지 않아도 뜻이 가까우면 숫자가 가깝게 나옵니다. "환불 언제 돼요" 와 "결제 취소 처리 기간" 이 같은 자리로 모이는 이유입니다.
  4. 그 숫자들을 벡터 데이터베이스에 넣습니다. 숫자가 가까운 것을 빠르게 찾아 주는 저장소입니다.
  5. 질문이 들어오면 질문도 같은 방식으로 숫자로 바꿔 가까운 조각을 다섯 개쯤 꺼냅니다. 이 단계가 이 방식의 성패를 가릅니다.
  6. 꺼낸 조각을 지시문에 붙여 모델에 넘깁니다. 이때 붙이는 조건이 중요합니다. 아래 자료 안에서만 답하고 자료에 없으면 모른다고 답하라고 못 박습니다.
  7. 답과 함께 출처를 보여 줍니다. 어느 문서의 어느 대목을 근거로 삼았는지 링크로 달아 두면 사용자가 스스로 확인할 수 있고, 팀도 틀린 답의 원인을 조각 단위로 되짚을 수 있습니다.

검증은 질문과 정답 위치를 짝지어 둔 목록으로 합니다. 질문 50개를 만들고 각 질문에 답이 있는 문서를 적어 두면, 찾기 단계가 그 문서를 꺼냈는지와 최종 답이 맞았는지를 따로 잴 수 있습니다. 두 값을 나눠 재는 이유는 실패한 곳이 어디인지 알아야 고칠 곳이 정해지기 때문입니다.

적합한 상황과 한계

우리 자료가 있어야 답이 되는 기능에 맞습니다. 사내 문서 검색, 고객 문의 답변, 제품 도움말 안내가 전부 이쪽입니다. 자료가 자주 바뀌는 경우에도 유리합니다. 문서를 갈아 끼우면 다음 질문부터 새 내용으로 답하므로 모델을 다시 손댈 일이 없습니다. 출처를 보여 줘야 하는 자리라면 선택지가 사실상 이것뿐입니다.

한계는 다섯입니다.

  1. 찾기 단계가 틀리면 답도 틀립니다. 실패의 대부분은 모델이 문장을 잘못 만든 것이 아니라 엉뚱한 조각을 꺼내 온 것입니다. 답이 틀렸을 때 먼저 볼 곳은 모델이 아니라 꺼내 온 조각입니다.
  2. 자료의 품질이 상한을 정합니다. 도움말이 3년 전 화면을 설명하고 있으면 답도 3년 전 화면을 안내합니다.
  3. 권한 처리가 붙어야 합니다. 찾기 단계에서 사용자가 볼 수 없는 문서까지 꺼내 오면 답을 통해 내용이 새어 나갑니다. 검색할 때 그 사용자의 권한으로 걸러야 합니다.
  4. 말투나 형식을 바꾸는 데는 맞지 않습니다. 그 일은 지시문을 다듬는 프롬프트 엔지니어링이나 모델을 추가 학습시키는 쪽의 몫입니다.
  5. 단계가 늘어 느려지고 비용이 붙습니다. 숫자로 바꾸고 찾고 답하는 세 번의 왕복이 생겨서, 답이 나오기까지 2초에서 5초가 걸립니다.

실무 용례

"답이 틀렸는데 모델 탓이 아니라 엉뚱한 문서를 꺼내 왔어요."

실패가 찾기 단계에서 났다는 진단입니다.

"자료에 없으면 모른다고 답하게 지시문에 넣었습니다."

없는 내용을 만들어 내지 않도록 조건을 박았다는 말입니다.

"권한 필터를 검색 단계에 걸어야 합니다. 지금은 남의 문서도 나옵니다."

찾기 단계에 권한이 빠져 있어 내용이 새어 나간다는 지적입니다.

태오와 지현이 문의 답변 초안 기능을 만들 때 첫 판은 답의 정확도가 절반에 못 미쳤습니다. 꺼내 온 조각을 하나씩 확인해 보니 도움말이 기능별로 한 편씩 길게 쓰여 있어서, 조각 하나에 서로 다른 세 가지 설명이 섞여 들어가 있었습니다. 문서를 항목 단위로 다시 쪼개고 조각 크기를 700자로 줄인 뒤 정확도가 눈에 띄게 올랐습니다. 모델도 지시문도 그대로였고 바뀐 것은 자료를 자른 방식뿐이었습니다.

흔한 오해

이 방식을 붙이면 환각이 사라진다고 읽는 경우가 가장 많습니다. 근거 자료를 함께 주니 지어낼 이유가 없어 보입니다. 하지만 꺼내 온 조각이 질문과 관련이 없을 때 모델은 빈자리를 메꾸려 합니다. 자료 다섯 조각 중 어느 것도 답을 담고 있지 않으면 그 다섯에서 그럴듯한 문장을 조합해 냅니다. 줄기는 하지만 사라지지는 않으므로, 모른다고 답할 길을 지시문에 열어 두고 출처가 달리지 않은 답의 비율을 따로 재 둡니다.

자료를 많이 넣을수록 좋아진다고 보는 것도 흔합니다. 재료가 늘면 답할 수 있는 범위가 넓어지니 그럴듯합니다. 실제로는 비슷한 문서가 여러 벌 들어 있으면 찾기 단계가 그중 하나를 고르는 데 실패하고, 낡은 문서와 새 문서가 함께 꺼내지면 모델이 둘을 섞어 답합니다. 자료를 30퍼센트 덜어 내고 정확도가 오르는 일이 자주 있습니다. 넣기 전에 중복과 낡은 것을 정리하는 작업이 모델을 바꾸는 것보다 값이 큽니다.

자주 헷갈리는 용어

용어무엇을 바꾸는가RAG 와의 차이
파인튜닝모델 자체를 추가 학습시켜 말투와 형식을 바꿉니다지식을 넣는 수단으로는 맞지 않습니다. 자료가 바뀌면 다시 학습해야 하고 출처를 보여 줄 수 없습니다. RAG 는 답할 재료를 질문마다 새로 붙이므로 문서만 갈아 끼우면 됩니다

같이 보면 좋은 페이지

연관 용어

마지막 업데이트 2026-09-16