문서 처리 (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 | 정규식, 구두점, 숫자를 제거하고 텍스트를 소문자로 변환합니다. 평가 전에 텍스트 데이터를 정리할 때 유용합니다. |