문서 처리 (Document Processing)

문서 처리 (Document Processing)

검색이나 RAG 파이프라인을 만들 때, 원본 파일을 그대로 쓰기보다 먼저 데이터를 다듬는 작업이 필요해요. Haystack의 PreProcessors가 바로 그 일을 담당합니다. 공백을 정리하고, 머리글·바닥글을 제거하고, 문서 안의 빈 줄을 정리하거나, 하나의 문서를 여러 조각으로 나누는 것까지요. 인덱싱 파이프라인에서 파일을 검색 가능한 상태로 준비해 주는 유용한 컴포넌트 그룹이에요.

어떤 PreProcessor가 있는지, 각각이 정확히 무엇을 하는지 표로 정리했어요.

PreProcessor 설명
ChineseDocumentSplitter HanLP를 활용한 중국어 단어 분리·문장 토큰화로, 중국어 텍스트 문서를 작은 청크로 나눕니다.
ChonkieRecursiveDocumentSplitter Chonkie의 RecursiveChunker로 규칙 계층을 따라 문서를 재귀적으로 나누고, 모든 청크가 크기 조건을 만족할 때까지 점점 더 잘게 나눕니다.
ChonkieSemanticDocumentSplitter Chonkie의 SemanticChunker로 임베딩 유사도를 이용해 의미적 주제 경계에서 문서를 나누고, 관련 문장끼리 묶어 둡니다.
ChonkieSentenceDocumentSplitter Chonkie의 SentenceChunker로 문장 경계를 존중하며 문서를 나눠서, 문장 중간에서 잘리지 않게 합니다.
ChonkieTokenDocumentSplitter Chonkie의 TokenChunker로 다양한 토크나이저를 지원하며 고정 크기의 토큰 기반 청크로 문서를 나눕니다.
CSVDocumentCleaner 특정 행·열은 보존하면서, 빈 행과 빈 열을 제거해 CSV 문서를 정리합니다.
CSVDocumentSplitter 빈 행과 빈 열을 기준으로 CSV 문서를 더 작은 하위 표(sub-table)로 나눕니다.
DocumentCleaner 문서에서 불필요한 공백, 빈 줄, 지정한 부분 문자열, 정규식, 페이지 머리글과 바닥글을 제거합니다.
DocumentPreprocessor 텍스트 문서 리스트를 더 짧은 텍스트 문서 리스트로 나눈 뒤, 정리(cleaning)를 거쳐 더 읽기 좋게 만듭니다.
DocumentSplitter 텍스트 문서 리스트를 더 짧은 텍스트를 가진 문서 리스트로 나눕니다.
EmbeddingBasedDocumentSplitter 연속된 문장 그룹 사이의 코사인 거리, 즉 임베딩 유사도를 기준으로 문서를 나눕니다.
HierarchicalDocumentSplitter 텍스트 세그먼트 사이의 부모-자식 관계를 바탕으로 다단계 문서 구조를 만듭니다.
MarkdownHeaderSplitter ATX 형식의 Markdown 헤더(#)에서 문서를 나누고, 옵션으로 2차 분할도 지원합니다. 헤더 계층을 메타데이터로 보존합니다.
PresidioDocumentCleaner Microsoft Presidio를 사용해 문서 텍스트의 PII(개인 식별 정보)를 엔티티 유형 자리표시자로 교체합니다.
PresidioTextCleaner 일반 문자열의 PII를 교체해, LLM에 도달하기 전에 사용자 쿼리를 정화(sanitizing)하는 데 유용합니다.
PythonCodeSplitter AST 단위(import, 함수, 클래스 헤더, 메서드, 문(statement) 등)를 사용해 Python 소스 문서를 문법을 고려한 청크로 나눕니다.
RecursiveSplitter 분리자(separator) 리스트를 주어진 순서대로 텍스트에 재귀적으로 적용하며 더 작은 청크로 나눕니다.
TextCleaner 정규식, 구두점, 숫자를 제거하고 텍스트를 소문자로 변환합니다. 평가 전에 텍스트 데이터를 정리할 때 유용합니다.