원본 파일을 그냥 쓰면 안되는 이유?
- AI(LLM)한테 문서를 줄 때 그냥 원본 파일을 바로 던져주면 안된다.
- PDF 파일에 표, 머리글/바닥글, 페이지 번호, 이미지 캡션, 특수문자, 줄바꿈 깨짐 같은게 다 섞여있다.
- AI한테 이걸 그대로 주면 쓸데 없는 노이즈가 너무 많아서 검색 품질이 엄청 떨어지게 된다.
- 전처리는 한마디로 AI가 읽기 좋은 깨끗한 텍스트로 만드는 과정
전처리 전체 흐름

전처리 단계 1 - 텍스트 추출(Text Extraction)

- 파일 포맷에서 순수 텍스트만 꺼내는 것
- PDF, HWP, Word 같은 파일은 텍스트가 아닌 바이너리 형식이기 때문에 먼저 이 파일을 열어서 텍스트만 뽑아내야된다.
- 텍스트를 뽑아내면 쓸데없는 것들이 잔뜩 섞여 나오기 때문에 다음 단계가 필요하다.
전처리 단계 2 - 정제(Cleaning)

- AI한테 의미 없는 노이즈를 제거하는 것
전처리 단계 3 - 정규화(Normalization)
- 같은 의미인데 다르게 표현된 것들을 하나로 통일하는 것
- 만약 임베딩 모델이 RAG와 rag를 다른 단어로 인식할 수 있다.
- 통일을 하지 않으면 검색 품질이 떨어진다.
| 문제 | 정규화 전 | 정규화 후 |
| 전각/반각 혼재 | AI서비스, AI서비스 | AI서비스 |
| 유니코드 공백 | 행정 안전부 (공백이 이상함) | 행정안전부 |
| 영문 대소문자 | RAG, rag, Rag | RAG (통일) |
| 줄바꿈 방식 차이 | \r\n, \n, \r 혼재 | \n 통일 |
| 날짜 표현 | '25년, 2025년, 2025.01 | 2025년 |
| 숫자 단위 | 18,313백만원, 183억원 | 그대로 or 통일 |
전처리 단계 4 - 메타데이터 태그 부착

- 나중에 검색 필터로 쓸 정보를 미리 붙여두는 것
- 청크에 메타데이터를 붙여두면 나중에 AI가 검색할 때 "이 기관 문서만", "2025년 이후 문서만" 같은 필터링이 가능하다.
- 이 메타데이터 덕분에 나중에 "행안부 문서만 검색", "법령 유형만 검색" 같은 필터 검색이 가능해진다.
전처리 완료 후 - 청킹과 벡터화

- 전처리가 끝난 텍스트는 이제 청킹(분할) -> 임베딩(벡터화) -> 저장 순서로 진행된다.
전체 흐름을 한 줄로 요약
| 단계 | 이름 | 하는 일 | 예시 |
| 1 | 텍스트 추출 | 파일 → 순수 텍스트 | PDF → 문자열 |
| 2 | 정제 | 노이즈 제거 | 페이지번호, 머리글 삭제 |
| 3 | 정규화 | 표현 통일 | AI → AI |
| 4 | 메타데이터 부착 | 필터 정보 태깅 | 기관명, 날짜, 문서유형 |
| 5 | 청킹 | 단락 단위 분할 | 500토큰 청크 |
| 6 | 임베딩 | 텍스트 → 벡터 | [0.23, -0.87, ...] |
| 7 | 저장 | pgvector에 적재 | 검색 DB |
'AI' 카테고리의 다른 글
| 파이프라인 (0) | 2026.05.19 |
|---|---|
| MCP(Model Context Protocol) (0) | 2026.05.19 |