BetterHTMLChunking 소개
HTML 문서를 다룰 때, 특정 크기의 청크로 나누는 것은 검색, 분석, 요약 등에 매우 유용합니다. 기존에는 주로 텍스트 기반 혹은 토큰 기반으로 일정 길이만큼 잘라내는 방식이 많이 사용되었습니다. 하지만 이 방식은 문서의 구조적 정보를 무시하기 때문에, 문맥을 고려한 정밀한 정보 추출이 어려운 한계가 있을 수 있습니다. 따라서, HTML 문서와 같이 계층적 구조를 갖는 문서에 대한 LLM 기반 검색이나 QA 시스템을 구축할 때는 단순한 텍스트 기반이 아니라 HTML의 계층 구조를 유지한 채 분할하는 방법이 필요합니다.
BetterHTMLChunking 라이브러리는 바로 이러한 용도로 개발된 라이브러리로, 기존의 단순한 텍스트 분할 방식과 달리, HTML의 DOM 구조를 유지하면서 청크(Chunk)를 생성하는 기능을 제공합니다. 즉, DOM 트리 분석을 통해 최적의 분할 지점을 찾아 HTML 문서를 구조적 관계를 유지한 채 여러 청크들로 나눌 수 있습니다.
BetterHTMLChunking를 사용하여 얻을 수 있는 이점은 다음과 같습니다:
- 제목과 본문이 함께 유지되며, 논리적 구성을 깨지 않고 분할 가능
- 특정 태그(
<script>
,<style>
등)를 필터링하여 불필요한 내용 제거 가능 - HTML과 텍스트 버전의 청크를 동시에 생성 가능
- HTML 문서에서 어떤 부분이 어느 청크에 포함되었는지 정확히 추적 가능 (XPath 기반)
BetterHTMLChunking 라이브러리를 사용하여 크롤링(Crawling)한 HTML을 의미 있는 단위로 나누어 처리하거나, 불필요한 부분을 제외한 가독성 높은 데이터를 추출하는데 사용할 수 있습니다. 이를 통해 LLM에 입력으로 제공되는 정보를 최적화하여 보다 나은 성능의 청크 기반 요약, 검색, QA 시스템을 구축할 수 있습니다.
BetterHTMLChunking의 주요 기능
- DOM 기반 문서 표현: HTML을 트리 구조로 변환하여 문서 계층을 분석
- 청크 크기 설정: 텍스트 길이 또는 HTML 길이를 기준으로 분할 가능
- 중요 영역(ROI) 자동 탐지: 의미 있는 콘텐츠를 중심으로 분할
- 이중 출력 지원: HTML 청크 & 텍스트 청크 동시 생성
- 필터링 기능 제공: 특정 태그를 제외할 수 있음 (
<script>
,<style>
등) - 청크별 문맥 유지: 문서의 논리적 관계를 보존하며 분할
BetterHTMLChunking의 동작 방식
-
DOM 트리 분석
- HTML 문서를 파싱하여 트리 구조를 생성
- 각 노드의 텍스트 길이, HTML 길이 등을 계산
-
영역 탐지 (Region Detection)
- BFS(너비 우선 탐색) 기반의 트리 탐색을 수행
- 문맥을 유지하며 특정 크기 이하로 노드 결합
- 부모-자식 관계를 유지하여 논리적 흐름 보존
-
청크 생성
- HTML 원본 유지한 청크 생성
- 텍스트 버전의 청크 동시 생성
- XPath 기반으로 문서 내 원본 위치 추적 가능
라이선스
BetterHTMLChunking 프로젝트는 MIT License로 배포됩니다.
BetterHTMLChunking GitHub 저장소
더 읽어보기
이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다.
파이토치 한국 사용자 모임
이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일
로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)
아래
쪽에 좋아요
를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~