MarkdownTextSplitter 사용하기

Tasker_Jang·2026년 3월 31일

1. 기본 개념

MarkdownTextSplitter는 LangChain의 langchain_text_splitters 모듈에 포함된 클래스입니다. Markdown 문서를 헤더(#, ## 등) 및 구조 기준으로 의미 단위로 분할해주는 텍스트 스플리터입니다.

from langchain_text_splitters import MarkdownTextSplitter

2. 기본 사용법

from langchain_text_splitters import MarkdownTextSplitter

text = """
# 제목

## 섹션 1
첫 번째 섹션의 내용입니다.

## 섹션 2
두 번째 섹션의 내용입니다.
"""

splitter = MarkdownTextSplitter(chunk_size=100, chunk_overlap=10)
chunks = splitter.split_text(text)

for chunk in chunks:
    print(chunk)
    print("---")

chunk_size는 문자 수 기준이며, Markdown 구조를 우선적으로 고려해 분할합니다.


3. MarkdownTextSplitter를 쓰지 않으면

일반 CharacterTextSplitter는 구조를 무시하고 글자 수만으로 자릅니다.

# 헤더 중간에서 잘릴 수 있음 — 의미 단위 보장 X
from langchain_text_splitters import CharacterTextSplitter

splitter = CharacterTextSplitter(chunk_size=100, chunk_overlap=10)
chunks = splitter.split_text(text)

MarkdownTextSplitter##, ### 등 헤더 경계를 우선 분할 기준으로 삼아 의미 있는 단위를 유지합니다.


4. 자주 쓰는 옵션

# Document 객체 리스트로 반환 (metadata 포함)
from langchain_core.documents import Document

docs = splitter.create_documents([text])
# docs[0].page_content — 청크 내용
# docs[0].metadata     — 기본적으로 비어 있음, 직접 추가 가능

# metadata 함께 전달
docs = splitter.create_documents(
    [text],
    metadatas=[{"source": "report.md"}]
)

5. 핵심 요약

옵션설명
chunk_size청크 최대 문자 수
chunk_overlap청크 간 겹치는 문자 수
split_text(text)문자열 리스트로 반환
create_documents(texts)Document 객체 리스트로 반환
분할 기준Markdown 헤더 → 단락 → 문자 수 순으로 우선 적용

한 줄 요약: MarkdownTextSplitter는 Markdown 헤더와 단락 구조를 기준으로 텍스트를 의미 단위로 분할해, RAG 파이프라인에서 청크 품질을 높여주는 스플리터입니다.

profile
ML Engineer 🧠 | AI 모델 개발과 최적화 경험을 기록하며 성장하는 개발자 🚀 The light that burns twice as bright burns half as long ✨

0개의 댓글