MakeAI 딥러닝

RAG 구축 가이드 — 문서 전처리가 답변 품질을 결정한다

RAG의 병목은 모델이 아니라 비정형 문서 전처리에 있어요. 파싱 품질이 답변 품질로 이어지는 구조를, 저희가 실제로 겪은 오답 사례로 설명해요.

3분 읽기

사내 문서로 질의응답을 만드는 RAG(검색 증강 생성) 프로젝트를 여러 번 했는데, 답변이 틀릴 때 원인을 추적해 보면 모델 문제인 경우는 생각보다 적었어요. 대부분 검색된 문서 조각이 틀렸거나, 조각이 깨져 있었어요. 오늘은 그 사례들과, 전처리를 어떻게 바꿨는지예요.

RAG는 세 단계고, 앞 단계가 뒤를 제한해요

문서 → [전처리·청크] → [검색] → [생성]

생성 모델은 검색된 조각 안에서만 답해요. 검색은 청크 안에서만 찾아요. 청크는 전처리가 만든 구조 안에서만 나뉘어요. 앞 단계가 못 만든 걸 뒤 단계가 만들어 낼 수는 없어요.

오답 사례 1: 표의 숫자가 다른 행으로

질문: "3년 이상 경과 시 환급률은?" 오답: "70%" (정답은 90%)

원인: 약관 PDF에서 표를 글자 순서대로 뽑으면서 행이 밀렸어요. "3년 이상" 옆에 "70%"가 붙은 조각이 검색됐고, 모델은 그 조각을 충실히 읽었어요. 모델 잘못이 아니에요.

고친 것: 표를 구조 인식으로 뽑고(2월 3일), 표는 통째로 한 청크에 넣고 헤더를 유지했어요(3월 17일). 같은 질문에 정답이 나와요.

오답 사례 2: 조항 번호가 사라져서

질문: "제12조 2항 내용 알려 줘" 오답: 엉뚱한 조항 설명

원인: Markdown으로 바꾸면서 "제12조", "② " 같은 번호가 리스트 기호로 바뀌거나 사라졌어요. 검색에 "제12조"가 걸리는 조각이 없었어요.

고친 것: 번호를 텍스트로 보존하고(1월 27일), 헤딩 경로를 청크 앞에 붙였어요. "제3장 > 제12조 > ②" 가 청크마다 있으니 검색이 바로 걸려요.

오답 사례 3: 개정 전 문서가 섞여서

질문: "현재 수수료율은?" 오답: 2년 전 수수료율

원인: 같은 규정의 여러 버전이 다 색인돼 있었고, 검색은 가장 유사한 조각을 가져왔는데 그게 옛날 버전이었어요.

고친 것: 전처리 단계에서 문서 날짜와 버전을 메타데이터로 뽑아 청크에 붙이고, 검색 시 최신 버전을 우선하거나 "2024년 기준"처럼 질문에 날짜가 있으면 그에 맞춰 필터해요. 이것도 전처리에서 날짜를 못 뽑으면 못 해요.

오답 사례 4: 두 단 레이아웃

질문: 특정 절차 설명 요청 오답: 문장이 섞인 이상한 설명

원인: 두 단으로 된 안내문을 한 줄씩 읽어서 왼쪽 단과 오른쪽 단이 교차로 섞였어요.

고친 것: 레이아웃 검출로 단을 먼저 나누고 단 순서대로 읽어요. 이건 전처리에서 "보는 모델"(6월 16일)이 필요한 이유예요.

오답 사례 5: 각주를 잃어버려서

질문: "이 조건의 예외는?" 오답: "예외 없음"

원인: 예외가 각주에 있었는데, 각주가 문서 끝 청크로 분리돼서 본문 조각과 같이 검색되지 않았어요.

고친 것: 각주를 참조 문단 청크 안에 인라인으로 넣었어요.

공통점

다섯 사례 모두 생성 모델을 바꿔도 해결되지 않아요. 더 좋은 모델은 더 그럴듯하게 틀릴 뿐이에요. 해결은 전부 전처리에 있었어요.

저희가 권하는 RAG 전처리 체크리스트

  • 표가 구조(행·열·병합)를 유지한 채 뽑히나요?
  • 표가 청크 경계에서 잘리지 않나요?
  • 헤딩·조항 번호가 텍스트로 남아 있고, 청크에 상위 경로가 붙나요?
  • 각주가 참조 위치 근처에 있나요?
  • 다단 레이아웃의 읽기 순서가 맞나요?
  • 문서 날짜·버전이 메타데이터로 있나요?
  • 청크마다 원본 위치(문서·페이지·블록)가 있나요?

마지막 항목이 있어야 답변에 "출처: ○○규정 제12조 (p.4)"를 붙일 수 있고, 그래야 사용자가 답을 확인해요. 확인 못 하는 답변은 사내에서 안 써요.

평가는 어떻게

질문-정답 쌍을 만들어 두고, "정답 조각이 상위 N개에 들어오는 비율"(검색)과 "최종 답이 맞는 비율"(생성)을 따로 재세요. 둘을 나눠야 어디를 고칠지 알아요. 저희 경험상 검색 쪽 지표를 올리는 게 생성 쪽보다 효과가 컸어요.

다음 주는 PoC 이야기예요. 데모는 성공했는데 도입은 왜 실패하는지요.