RAG와 임베딩 · 글 11편RAG와 임베딩
  1. RAG란 무엇인가 - 넣기, 쪼개기, 찾기, 답하기
  2. 문서를 붙여 넣을까, RAG를 만들까
  3. 임베딩이란 무엇인가
  4. 로컬 임베딩 모델 고르기
  5. 문서를 청크로 나누기
  6. 키워드 검색, 의미 검색, 하이브리드 검색
  7. 로컬 의미 검색 만들기 - 젬마 임베딩 실습 따라 읽기
  8. RAG 답변 평가와 자주 생기는 실패
  9. RAG, 긴 컨텍스트, 파인튜닝, LLM Wiki 비교
  10. RAG가 잘 되도록 사무 문서 준비하기
  11. 내부 문서를 색인할 때의 개인정보와 보안

이 글에서 다루는 것정답 세트 20건을 먼저 만들고 정답률을 재는 방법입니다. 검색 실패와 생성 실패를 나눠 진단하는 순서와 자주 만나는 실패 유형별 처방을 정리합니다.

느낌으로 평가하지 않는다

RAG를 만들고 질문 몇 개를 던져 본 뒤 “잘 되는 것 같다”로 끝내는 경우가 많습니다. 이렇게 하면 청크 크기를 바꾸거나 모델을 바꿨을 때 좋아졌는지 나빠졌는지 알 수 없습니다.

RAG는 정답률을 잴 수 있는 구조로 만듭니다. 필요한 것은 정답 세트 하나입니다. 20건이면 충분합니다.

정답 세트를 먼저 만든다

검색 프로그램을 만들기 전에 정답 세트부터 씁니다. 엑셀에 세 열을 둡니다.

질문 기대하는 답 기대하는 출처
관내 출장비는 어떻게 지급하나 정액 지급 여비규정 제12조
신규 직원의 연차 일수는 (규정의 해당 문장) 복무규정 제3조
재택근무 신청은 며칠 전까지 문서에 없음 없음

답 문장을 하나로 고정하기보다 어떤 원문이 근거로 나와야 하는지를 적어 둡니다. 모델의 문장은 매번 조금씩 다르지만 근거 조항은 달라지면 안 됩니다.

정답 세트에는 세 종류의 질문을 섞습니다.

  1. 답이 문서에 있는 질문. 대부분을 차지합니다. 단어가 그대로 나오는 질문과 표현을 바꾼 질문을 함께 넣습니다.
  2. 답이 문서에 없는 질문. “문서에 없음”이라고 답해야 정답입니다. 이 유형을 빼면 모르는 것을 지어내는지 확인할 수 없습니다.
  3. 개정 전후로 답이 달라지는 질문. 문서를 갱신했을 때 새 내용이 반영되는지 확인합니다.

질문만 많고 정답 근거가 없으면 결과를 일관되게 평가할 수 없습니다.

재는 방법

  1. 정답 세트의 질문을 하나씩 실행합니다.
  2. 검색 결과에 기대한 출처가 들어 있는지 확인합니다.
  3. 답변에 기대한 내용이 들어 있는지 확인합니다.
  4. 맞은 수를 전체로 나눕니다.

처음에는 사람이 눈으로 봐도 됩니다. 반복하게 되면 스크립트로 바꿉니다. 답변에 기대한 출처 문자열이 들어 있는지를 단순히 검사하는 정도로도 쓸 만합니다.

강의에서는 운영 기준으로 정답률 80% 이상을 제안합니다. 이 숫자는 목표로 삼는 기준이고, 업무의 위험도에 따라 높여 잡습니다. 미달이면 아래의 진단 순서로 원인을 찾습니다.

검색 실패와 생성 실패를 나눈다

답이 틀렸을 때 원인은 둘 중 하나입니다.

구분 증상 고칠 곳
검색 실패 정답 조각이 검색 결과에 없음 추출, 청크, 검색 방식
생성 실패 정답 조각은 검색됐는데 답변이 틀림 프롬프트, 넣는 조각 수, 대화 모델

항상 검색 결과부터 봅니다. 검색된 조각을 화면에 먼저 보여 주고 그 아래에 답변을 표시하게 만들어 두면 이 구분이 쉬워집니다. 검색이 틀렸는데 프롬프트를 고치고 있으면 시간만 씁니다.

실패한 질문은 세 가지로 분류해 기록합니다.

  • 검색 결과가 없다.
  • 다른 조항이 나온다.
  • 근거는 맞는데 답변이 틀리다.

검색 실패의 유형과 처방

진단은 동의어, 토큰화, 쪼개기 순서로 합니다.

유형 예시 처방
동의어 “연차”로 물었는데 문서에는 “휴가” 동의어 사전, 질의 확장, 임베딩 검색 추가
조사와 복합어 “출장비를”로 물어 “출장비”를 못 찾음 형태소 분석, N-gram 색인
조각 경계 원칙과 예외가 다른 조각으로 갈림 조항 단위로 다시 나눔, 겹침, 제목 물려주기
추출 누락 표나 스캔 쪽의 내용이 텍스트에 없음 추출본을 열어 확인, 문자 인식(OCR), 표 따로 보관
오래된 색인 문서는 바꿨는데 예전 내용이 나옴 바뀐 문서의 조각과 벡터를 다시 생성
중복 문서 같은 문서의 구버전과 신버전이 함께 검색됨 구버전을 빼거나 유효 기간을 표시
비슷한 조항 주제가 비슷한 옆 조항이 먼저 나옴 키워드 검색과 합치기, 재순위
모델 불일치 결과가 무작위에 가까움 문서와 질문을 같은 임베딩 모델로 처리했는지, 접두어 규칙을 지켰는지 확인

각 처방의 자세한 방법은 문서를 청크로 나누기와 키워드 검색, 의미 검색, 하이브리드 검색에 있습니다.

생성 실패의 유형과 처방

유형 증상 처방
지어내기 문서에 없는 내용을 일반 지식으로 채움 “아래 문서만 참고”, “없으면 문서에 없음이라고 답하라”를 프롬프트에 명시
출처 누락 답은 맞는데 근거 표기가 없음 답변 형식에 근거 칸을 고정
출처 불일치 적어 놓은 조항이 실제 답변을 뒷받침하지 않음 조각마다 번호를 붙여 넣고, 답변이 참조한 번호를 적게 함
조각 과다 관련 없는 조각이 많이 들어가 엉뚱한 내용을 섞음 넣는 조각 수를 줄임
충돌 서로 다른 내용의 조각 둘이 들어가 한쪽만 따름 기준일을 함께 넣고, 충돌 시 둘 다 보여 주게 함
단정 법령이나 규정의 해석을 확정된 것처럼 말함 답변을 초안으로 표시, 최종 확인은 담당자가 한다고 명시

근거가 부족할 때 답하지 않는 것이 정답일 수 있습니다. 완료 기준을 이렇게 잡습니다. 인용한 위치가 실제로 답변을 뒷받침하고, 근거 없는 질문은 미확인으로 남아야 합니다.

모델 입력은 이런 모양으로 만듭니다. 근거와 출처, 기준일을 함께 넣습니다.

답변 지침: 제공된 근거로 답하고 없는 내용은 확인 필요로 표시.
질문: A사업의 제출 서류는?
근거: A01 / 제출서류: 신청서, 계획서
출처: 공고문.pdf 3쪽 / 자료 기준일: 2026-09-01

설정을 바꿀 때마다 다시 잰다

청크 크기, 겹침, 임베딩 모델, 검색 방식, 넣는 조각 수, 프롬프트 가운데 하나를 바꾸면 정답 세트를 다시 돌립니다.

  • 한 번에 하나만 바꿉니다. 둘을 함께 바꾸면 어느 쪽 효과인지 알 수 없습니다.
  • 바꾸기 전과 후의 정답률을 기록합니다.
  • 전에 맞던 질문이 틀리게 됐는지 따로 봅니다. 전체 정답률이 올라도 중요한 질문 하나가 틀리게 될 수 있습니다.

키워드 검색, 의미 검색, 하이브리드 검색을 비교할 때도 같은 질문으로 셋을 나란히 돌립니다.

운영 중에 계속하기

문서를 추가하면 다시 잽니다. 문서가 늘면 비슷한 조각이 많아져 정답률이 내려갈 수 있습니다. 한 달에 한 번처럼 주기를 정해 다시 재고, 떨어지는지 지켜봅니다.

피드백에서 정답 세트를 키웁니다. 사용자가 “틀렸다”만 남기면 쓸 수 없습니다. 피드백 양식에 “기대한 답”과 “기대한 출처”를 함께 적게 합니다. 이렇게 모은 건이 정답 세트의 새 줄이 됩니다.

실패를 빈 결과로 숨기지 않습니다. 검색 도구가 오류를 냈을 때 “결과 없음”으로 처리하면 “문서에 없음”과 구별되지 않습니다. 오류와 결과 없음을 다르게 표시합니다.

점검표

  • 정답 세트 20건을 만들었다(답 있는 질문, 답 없는 질문, 개정 질문 포함)
  • 질문마다 기대하는 출처를 적었다
  • 검색 결과를 답변과 따로 볼 수 있다
  • 실패한 질문을 검색 실패와 생성 실패로 나눠 기록했다
  • 설정을 바꿀 때 전후 정답률을 남긴다
  • 답변의 출처로 원문을 다시 열 수 있다

검색창이 열리고 답이 나온다는 사실만으로 완료라고 판단하지 않습니다.

다음에 읽을 글