PreProcessors

PreProcessors

파일을 문서로 변환한 뒤에는 그대로 쓰기보다 다듬어야 하는 경우가 많아요. PreProcessors는 문서 안의 공백을 정규화하고, 머리글·바닥글을 제거하고, 빈 줄을 정리하고, 긴 문서를 더 작은 조각으로 나누는 데 쓰는 컴포넌트 묶음입니다. 인덱싱 파이프라인에서 파일을 검색 가능한 상태로 준비하는 역할을 하죠.

출처: 공식문서

어떤 전처리기가 있나

PreProcessor 설명
ChineseDocumentSplitter HanLP를 사용한 정확한 중국어 단어 분리와 문장 토큰화로 중국어 텍스트 문서를 더 작은 청크로 나눕니다.
ChonkieRecursiveDocumentSplitter Chonkie의 RecursiveChunker로 규칙 계층을 재귀적으로 적용해, 모든 청크가 크기 제약을 만족할 때까지 점점 더 세밀하게 분할합니다.
ChonkieSemanticDocumentSplitter Chonkie의 SemanticChunker로 임베딩 유사도를 이용해 의미 주제 경계에서 문서를 분할해, 관련 문장을 함께 유지합니다.
ChonkieSentenceDocumentSplitter Chonkie의 SentenceChunker로 문장 경계를 존중하며 분할해, 문장 중간에 잘리지 않게 합니다.
ChonkieTokenDocumentSplitter Chonkie의 TokenChunker로 고정 크기 토큰 기반 청크로 분할하며, 여러 토크나이저를 지원합니다.
CSVDocumentCleaner 특정 무시할 행·열을 보존하면서 빈 행과 열을 제거해 CSV 문서를 정리합니다.
CSVDocumentSplitter 빈 행과 열을 기준으로 CSV 문서를 더 작은 하위 테이블로 나눕니다.
DocumentCleaner 문서에서 여분의 공백, 빈 줄, 지정된 부분 문자열, 정규식, 페이지 머리글과 바닥글을 제거합니다.
DocumentPreprocessor 텍스트 문서 목록을 더 짧은 텍스트 문서 목록으로 나눈 뒤 정리해서 더 읽기 좋게 만듭니다.
DocumentSplitter 텍스트 문서 목록을 텍스트가 더 짧은 문서 목록으로 분할합니다.
EmbeddingBasedDocumentSplitter 연속된 문장 그룹 사이의 코사인 거리를 사용해 임베딩 유사도를 기준으로 문서를 분할합니다.
HierarchicalDocumentSplitter 텍스트 세그먼트 간 부모-자식 관계를 기반으로 다단계 문서 구조를 만듭니다.
MarkdownHeaderSplitter ATX 스타일 Markdown 헤더(#)에서 문서를 분할하고 선택적으로 2차 분할합니다. 헤더 계층을 메타데이터로 보존합니다.
PresidioDocumentCleaner Microsoft Presidio를 사용해 문서 텍스트의 PII를 엔티티 유형 자리표시자로 바꿉니다.
PresidioTextCleaner 일반 문자열의 PII를 대체합니다. LLM에 도달하기 전에 사용자 질의를 정화하는 데 유용합니다.
PythonCodeSplitter import, 함수, 클래스 헤더, 메서드, 문장 같은 AST 단위를 사용해 Python 소스 문서를 구문 인식 청크로 분할합니다.
RecursiveSplitter 구분자 목록을 주어진 순서대로 텍스트에 재귀적으로 적용해 더 작은 청크로 분할합니다.
TextCleaner 정규식, 구두점, 숫자를 제거하고 텍스트를 소문자로 변환합니다. 평가 전 텍스트 데이터를 정리하는 데 유용합니다.

실제로는 어떻게 쓰나

PreProcessors는 보통 변환기(Converter) 뒤, 검색기(Retriever)와 Write 컴포넌트 앞에 놓여요. 먼저 변환기로 파일을 문서로 바꾸고, DocumentCleaner로 노이즈를 제거한 뒤, DocumentSplitter 같은 분할기로 긴 문서를 검색·생성에 알맞은 크기로 쪼개는 식이죠. 어떤 파일 형식을 다루느냐에 따라 CSV 전용이나 Python 코드 전용 분할기를 골라 쓰면 됩니다.

더 알아보기