TL;DR
웹 HTML을 그대로 토큰 단위로 분할하면 문단 절단과 계층 정보 손실로 RAG 임베딩의 품질이 저하되므로 작성자는 Docling과 Trafilatura를 병행해 자동 스코어링으로 깔끔한 텍스트를 선택하고 Markdown 헤딩을 기준으로 청크를 생성하는 파이프라인을 설계했다. 각 섹션은 토큰 제한(예: 400 tokens) 내에서 온전히 유지되며 초과 시 문장 단위 오버랩 분할로 문장 절단을 방지하고, 청크에는 원본 URL·SHA-256 문서 ID·토큰 수·헤딩 텍스트와 레벨 같은 구조화된 메타데이터를 포함해 LangChain Document로 바로 매핑하도록 구성되었다. 멀티-URL 큐 병목을 개선해 복잡한 DOM과 쿠키 월을 처리할 수 있게 되었고 다양한 도메인 테스트에서 64개의 고품질 청크를 만들었다고 보고되었으나 구현 복잡성과 운영 비용, 특정 동적 레이아웃에서의 재현 가능성은 추가 검증이 필요하다.
실용적 조언
- 원본 HTML을 Markdown으로 변환한 뒤 헤딩 단위로 청킹하면 문단·섹션의 계층 정보를 유지할 수 있으며, 토큰 제한 내에서는 섹션을 온전하게 유지하고 초과 시 문장 단위 오버랩을 적용해 문장 절단을 방지해야 한다.
- 추출 단계에서 Trafilatura로 원시 텍스트를 분리하고 Docling으로 레이아웃·테이블을 처리한 뒤 텍스트 밀도와 구조 요소로 자동 스코어링을 수행하면 서로 다른 도메인의 레이아웃 변화를 보완할 수 있다.
- 청크 메타데이터로 원본 URL, SHA-256 기반 문서 ID, 정확한 토큰 수, 헤딩 텍스트와 레벨을 포함하면 LangChain Document로의 매핑과 Parent-Child 관계 보존, Self-Querying Retriever 적용이 용이해진다.
섹션별 상세
용어 해설
- 헤딩 기반 청킹(Heading-Aware Chunking)
- — 문서의 Markdown 헤딩 구조(H1~H6)를 기준으로 텍스트를 분할하는 기법으로, 입력 HTML을 Markdown으로 변환한 뒤 각 헤딩 단위가 토큰 제한 내이면 온전한 단위로 유지하고 초과 시 문장 단위 오버랩 분할로 문맥을 보존하는 방식이다. 이 방법은 임의 문자 수 분할로 인한 문단 절단과 계층 정보 손실을 방지하여 RAG용 임베딩 품질을 높인다.
- Trafilatura
- — 웹 페이지에서 본문 텍스트를 추출하기 위한 Python 라이브러리로서 잡다한 레이아웃 요소를 제거하고 연속 텍스트를 분리하는 데 강점이 있다. 본문 추출을 전처리로 수행하면 불필요한 스크립트·네비게이션 텍스트가 줄어들어 임베딩의 잡음이 감소한다.
- Docling
- — 복잡한 레이아웃, 테이블, 내비게이션이 혼재한 HTML에서 구조적 콘텐츠를 보존하며 추출하는 도구로, 표나 계층적 섹션을 보존해야 하는 문서에서 유용하다. Trafilatura와 병행 사용하면 레이아웃 기반 추출과 순수 텍스트 기반 추출을 상호 보완할 수 있다.
- SHA-256
- — 입력 텍스트 또는 문서 URL로부터 고유한 256비트 해시를 생성하는 해시 알고리즘으로, 각 문서 청크에 불변 식별자를 부여하여 중복 검출과 데이터 무결성 검증에 활용된다. RAG 파이프라인에서 문서 ID를 일관되게 관리하는 수단으로 사용된다.
언급된 도구
웹 페이지에서 원시 본문 텍스트를 추출하는 라이브러리로, 잡음 제거와 연속 텍스트 분리에 사용된다.
복잡한 레이아웃과 표를 구조적으로 처리하는 추출 엔진으로, 레이아웃 보존이 중요한 문서에 사용된다.
문서 객체 모델을 통해 청크와 메타데이터를 임베딩·검색 파이프라인으로 연결하는 개발 프레임워크로 사용된다.
공유된 크롤러 구현체로 멀티-URL 처리, 추출·스코어링·헤딩 기반 청킹, 메타데이터 주입을 수행한다.
언급된 리소스
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.
