RAG: 근거 찾기와 오류 진단
학습 후 RAG가 필요한 상황을 고르고, 검색·입력 조립·생성에서 처음 불일치가 나타나는 지점을 근거로 설명합니다. 기록이 부족할 때는 판단을 보류하고 필요한 자료를 요청합니다.
핵심 개요
여기서 언어 모델(LLM)은 질문과 함께 받은 글을 바탕으로 답변을 만드는 모델을 뜻합니다. RAG(Retrieval-Augmented Generation, 검색 증강 생성)는 질문에 필요한 자료를 찾아 모델 입력에 넣고 답변하게 하는 방식입니다. 예를 들어 휴가 규정에 관해 물으면 관련 조항을 찾아 질문과 함께 전달합니다. 매 질문마다 문서 내용으로 모델의 가중치(학습으로 조정된 내부 값)를 다시 학습하는 과정은 아닙니다. [1]
- 청크(chunk)
- 검색하고 전달하기 위해 문서를 나눈 조각입니다. 조각만 읽어도 대상·날짜·조건을 알 수 있어야 합니다. [3]
- 인덱스(index)
- 자료를 빠르게 찾기 위한 검색용 구조입니다. 원문을 바꾸어도 검색 대상이 함께 갱신되었는지 확인해야 합니다. 인덱스 버전은 어느 시점의 자료로 검색 구조를 만들었는지 구별하는 표시입니다.
- 컨텍스트(context)
- 이 노트에서는 질문에 답하도록 모델에 실제 전달한 근거 글을 뜻합니다. 검색기가 찾았어도 입력 조립 과정에서 빠지면 모델은 그 글을 받지 못합니다.
- 근거 일치(groundedness)
- 답변의 주장이 전달한 근거와 일치하는지 보는 관점입니다. 오래된 근거와 일치해도 현재 기준으로 맞는 답인지는 별도로 확인해야 합니다. [2]
RAG는 키워드·벡터·혼합 검색 등으로 구성할 수 있습니다. 이 차시에서는 검색 방식의 세부 구현 대신 단계 사이에 무엇이 전달되는지를 봅니다. [1]
두 흐름을 구분하세요
자료 준비: 원문을 확인하고, 필요한 조각과 검색 대상을 만듭니다.
질문 처리: 질문으로 자료를 찾고, 선택한 근거를 모델 입력에 넣고, 답변을 생성합니다.
| 단계 | 먼저 확인할 것 | 문제 예 |
|---|---|---|
| 자료 준비·갱신 | 규정을 공식적으로 정하는 원문, 적용일, 인덱스 버전 | 폐기된 규정이 검색됨 |
| 검색 | 질문과 검색 결과의 원문·ID | 휴가 질문에 식비 조항만 찾음 |
| 입력 조립 | 선택 결과와 모델에 실제 보낸 입력 | 맞는 조항을 찾았지만 입력에서 누락 |
| 답변 생성 | 실제 입력과 답변의 주장 | 3일을 받았는데 5일이라고 답함 |
이 네 단계는 이 노트의 진단 구분입니다. 실제 시스템에서는 여러 문제가 동시에 생길 수 있습니다. 관찰한 불일치와 그 불일치를 만든 근본 원인을 구분하세요. 근거가 빠졌다고 바로 특정 검색 알고리즘을 원인으로 확정할 수는 없습니다.
풀이 예제: 검색부터 조사할 근거
아래 규정과 서비스 기록은 모두 학습용 가상 자료입니다. 실제 회사 규정이 아닙니다.
질문
“2026년 현재, 연속 휴가는 최대 며칠인가요?”
기준 원문 P-2026
2026-07-01부터 연속 휴가는 최대 3일입니다.
검색 대상 확인
이 요청에서 검색 가능한 인덱스 I-202607에 P-2026의 해당 조항이 정상 반영되어 있음을 확인했습니다.
검색 결과와 실제 모델 입력
식비 규정 M-2026: 월 식비 지원 한도는 10만 원입니다. 휴가 조항은 포함되지 않았습니다.
답변
“최대 5일입니다.”
먼저 기준 원문에서 답에 필요한 ‘3일’을 찾습니다. 다음으로 검색 결과를 보면 그 근거가 없습니다. 실제 모델 입력에도 없으므로, 우선 확인할 단계는 검색입니다. 답변 역시 근거 밖의 숫자를 단정했지만, 답변 지시만 고쳐서는 누락된 휴가 조항을 찾아오지 못합니다.
다음 행동은 검색 질의·필터·문서 ID를 확인해 왜 P-2026이 검색되지 않았는지 재현하는 것입니다. 그 뒤 모델이 근거가 없을 때 답을 보류하는지도 별도로 점검합니다. ‘검색부터 조사’는 모델에 문제가 없다는 뜻이 아닙니다.
진단 순서
- 질문에서 대상과 적용 시점을 확인합니다.
- 정답 근거가 되는 원문을 정합니다.
- 검색 결과에 그 근거가 있는지 봅니다.
- 실제 모델 입력에도 들어갔는지 봅니다.
- 답변이 입력 근거를 지켰는지 비교합니다.
- 기록이 없으면 추측 대신 필요한 기록을 요청합니다.
개발자용: 같은 요청의 로그를 비교하기
아래는 예제를 구조화한 교육용 기록입니다. 실제 서비스나 모델을 호출한 결과는 아닙니다. 같은 요청을 연결한 뒤 값이 처음 달라지는 경계를 찾으세요.
request_id: R-17 question: “현재 연속 휴가 최대 일수?” index_version: I-202607 searchable_source: P-2026, “최대 3일” 반영 확인 retrieved_ids: [M-2026] model_input_ids: [M-2026] response: “최대 5일”
정답 근거 P-2026이 검색 결과에서 처음 빠집니다. 실제 서비스에서는 같은 요청의 질의·권한 필터·문서 버전·조립 전후 문서 ID·최종 요청과 응답을 대조하세요. 민감한 원문이나 인증값을 무분별하게 기록하지 말고 필요한 최소 기록과 접근 제어를 사용합니다.
사례: 10월 출장의 숙박비 상한
다음은 교육용 가상 규정입니다. 실제 회사 정책이 아닙니다.
“10월 국내 출장에서 숙박비는 1박에 얼마까지 가능한가요?”
| 자료 | 적용 기간 | 1박 상한 | 10월 질문에 적용 |
|---|---|---|---|
| 국내 출장 규정 v1 | 2026년 1월~6월 | 100,000원 | 적용 종료 |
| 국내 출장 규정 v2 | 2026년 7월부터 | 120,000원 | 적용 가능 |
기대 답변: 10월 국내 출장에는 v2가 적용되며, 1박 상한은 120,000원입니다. 답변에는 적용일과 해당 규정의 근거를 함께 제시합니다.
v2를 찾지 못했다면 v1의 금액으로 단정하지 않습니다. 현재 규정을 더 찾거나, 확인 가능한 근거가 부족하다고 표시합니다.
다른 방법과 비교하기
| 상황 | 먼저 비교할 방법 | 선택 이유 |
|---|---|---|
| 자료가 몇 쪽이고 입력에 들어감 | 문맥에 직접 제공 | 별도 검색 구조 없이 읽을 수 있음 |
| 자료가 많고 자주 변경됨 | RAG | 질문마다 현재 자료를 찾아 제공 |
| 말투·출력 행동을 학습해야 함 | 미세조정 후보 | 대표 데이터와 평가셋으로 행동 조정 |
| 수량 × 단가를 정확히 계산 | 일반 계산 코드 | 정해진 산식으로 검산 가능 |
RAG와 미세조정은 함께 사용할 수도 있습니다. 하나가 모든 지식과 동작 문제를 해결하지는 않습니다.
확인 문제
매주 바뀌는 사내 규정에 근거해 답변해야 합니다. 먼저 검토할 방법은?
- 기존 모델 지식만 사용한다
- 현재 적용되는 규정을 검색해 답변 입력에 제공한다
- 답변을 더 길게 생성한다
풀이 기록 기능을 불러오는 중…
해설 보기
정답: B. 현재 적용되는 규정을 검색해 답변 입력에 제공한다
현재 자료를 검색해 제공하는 RAG가 후보입니다. 검색 품질과 권한, 적용 시점도 함께 확인해야 합니다.
10월 출장인데 검색된 규정의 적용 기간이 6월에 끝났다면?
- 주제가 비슷하니 그대로 사용한다
- 예전 금액과 새 금액을 평균 낸다
- 10월에 적용 가능한 근거를 찾거나 답변을 보류한다
풀이 기록 기능을 불러오는 중…
해설 보기
정답: C. 10월에 적용 가능한 근거를 찾거나 답변을 보류한다
관련성이 있어도 적용 조건이 맞지 않으면 답변 근거로 부족합니다. 없는 값을 임의로 채우지 않습니다.
RAG를 도입하면 답변의 사실성이 항상 보장될까요?
- 아니요. 검색 결과와 최종 답변을 각각 검증해야 합니다
- 예. 검색 결과가 하나라도 있으면 됩니다
- 예. 출처 링크만 붙이면 됩니다
풀이 기록 기능을 불러오는 중…
해설 보기
정답: A. 아니요. 검색 결과와 최종 답변을 각각 검증해야 합니다
검색 누락, 만료 자료, 잘못된 인용과 숫자 왜곡이 남을 수 있습니다. 근거의 적합성과 답변의 일치를 따로 평가합니다.
근거를 받았는데 답이 다릅니다 — 가장 먼저 확인할 단계는?
기준 원문 P-2026: 최대 3일. 검색 결과: P-2026의 최대 3일 조항. 실제 모델 입력: 같은 조항을 포함. 답변: “최대 5일입니다.”
- 자료 준비·갱신
- 검색
- 입력 조립
- 답변 생성
- 판단 보류·기록 요청
풀이 기록 기능을 불러오는 중…
해설 보기
정답: D. 답변 생성
답변 생성부터 확인합니다. 최신 원문과 검색 결과, 실제 모델 입력까지 3일이 유지됐는데 답변에서 5일로 바뀌었습니다. 다음으로 실제 요청·응답과 지시를 비교합니다. 모델을 교체해야 한다는 근본 원인까지 확정된 것은 아닙니다.
답변은 검색된 문서와 일치합니다 — 가장 먼저 확인할 단계는?
현재 기준 원문 P-2026: 2026-07-01부터 최대 3일. 검색 대상에는 폐기된 P-2024(최대 5일)만 남아 있음. 검색 결과·실제 모델 입력: P-2024. 답변: “최대 5일입니다.”
- 자료 준비·갱신
- 검색
- 입력 조립
- 답변 생성
- 판단 보류·기록 요청
풀이 기록 기능을 불러오는 중…
해설 보기
정답: A. 자료 준비·갱신
자료 준비·갱신부터 확인합니다. 답변은 전달된 5일과 일치하지만 그 근거 자체가 현재 적용 기준이 아닙니다. 원문 반영·인덱스 갱신·적용일 필터를 확인해야 합니다. 근거 일치만으로 현재의 정답을 보장하지 않습니다.
질문과 답변만 받았습니다 — 가장 먼저 확인할 단계는?
질문: “2026년 현재 연속 휴가는 최대 며칠인가요?” 답변: “최대 5일입니다.” 검색 결과와 실제 모델 입력은 제공되지 않았습니다.
- 자료 준비·갱신
- 검색
- 입력 조립
- 답변 생성
- 판단 보류·기록 요청
풀이 기록 기능을 불러오는 중…
해설 보기
정답: E. 판단 보류·기록 요청
판단을 보류합니다. 적용일이 확인되는 기준 원문, 검색 결과의 문서 ID·본문, 실제 모델 입력을 요청합니다. 답변만으로 어느 단계에서 문제가 시작됐는지 정할 수 없습니다.
참고 자료
- Microsoft: RAG와 인덱스 — 검색·입력 결합·생성의 흐름. 문서 갱신 2026-08-21.
- Microsoft: RAG 평가 — 검색 과정과 답변 근거 일치의 구분.
- Anthropic: Contextual Retrieval — 문서 조각의 맥락과 검색 문제. 2024-09-19.
확인일: 2026-10-21. 규정·제품·로그·문항은 자체 제작한 교육용 가상 자료입니다. 특정 자격증 전체 범위나 실제 RAG 서비스 실행을 검증한 자료는 아닙니다.
직접 적용하기
교육용 가상 상황
request_id: R-42 question: 제품 B의 현재 반품 기간은? official_source: B-2026, 제품 B는 수령 후 14일 이내 search_index: I-2026, B-2026 반영 확인 retrieved: B-2026, 제품 B는 수령 후 14일 이내 model_input: A-2026, 제품 A는 수령 후 30일 이내 response: 제품 B는 30일 이내입니다.
처음 불일치가 관찰되는 단계와 근거, 다음에 확인할 기록을 적으세요. 어떤 코드가 원인인지 확정할 수 있는지도 구분하세요.
답안 저장 기능을 불러오는 중…
검증 기준과 해설 보기
- 기준 원문과 검색 결과가 제품 B의 14일로 일치한다.
- 실제 모델 입력에서 제품 A의 30일로 바뀐 것을 찾는다.
- 같은 요청의 문서 선택·입력 조립·최종 요청을 비교한다.
- 자료 혼입이나 코드 오류는 추가 증거가 필요한 가설로 둔다.
처음 불일치는 검색 결과와 실제 입력 사이입니다. R-42의 검색 결과·선택한 문서 ID·최종 요청 본문을 비교합니다. 이전 요청 혼입, 문서 선택 오류, 길이 제한 등은 조사할 가설이며 이 기록만으로 특정 원인을 확정할 수 없습니다. 답변이 다른 제품의 조건을 사용한 문제도 따로 확인합니다.
복습하기
- 검색과 생성의 역할을 한 문장씩 설명해 보세요.
- 오래된 근거와 답변이 일치하면 현재의 정답인가요?
- 질문과 답변만 있다면 어떤 기록을 요청하나요?
답변 확인 기준
- 검색과 생성의 역할을 한 문장씩 설명해 보세요.
검색은 필요한 자료를 고르고, 생성은 실제로 받은 근거를 바탕으로 답변을 만듭니다.
- 오래된 근거와 답변이 일치하면 현재의 정답인가요?
근거 일치와 최신성은 다릅니다. 적용일·대상·문서 버전을 별도로 확인합니다.
- 질문과 답변만 있다면 어떤 기록을 요청하나요?
적용일을 확인할 기준 원문, 검색 결과 ID·본문, 실제 모델 입력을 요청합니다.