RAG2026-5일7차시 · 텍스트 분할 이해10 / 19← 이전목차다음 →MetaContents

7차시. 텍스트 분할 이해

7. 실습 ③ — chunk_size 비교 실험

출처: 원본 PDF 07차시_텍스트분할이해.pdf 15~16쪽 · 쪽 그림 15쪽 16쪽

오늘의 핵심 실습입니다. 값을 바꿔가며 무엇이 달라지는지 관찰합니다.

📝 src/compare_size.py

Python
from langchain_text_splitters import RecursiveCharacterTextSplitter
def try_size(docs, size, overlap):
    sp = RecursiveCharacterTextSplitter(
        chunk_size=size, chunk_overlap=overlap,
        separators=["\n\n", "\n", ". ", " ", ""])
    chunks = sp.split_documents(docs)
    lengths = [len(c.page_content) for c in chunks]
    print(f"size={size:<5} overlap={overlap:<4} "
          f"조각수={len(chunks):<4} "
          f"평균={sum(lengths)//len(lengths):<5} "
          f"최소={min(lengths):<5} 최대={max(lengths)}")
    return chunks
print("chunk_size별 비교 (작은 문서라 30자부터 시작)")
print("-" * 60)
for s in (30, 50, 100, 150, 250):
    try_size(docs, s, int(s * 0.2))

7-1) 실행 결과 예시

출력
chunk_size별 비교
────────────────────────────────────────────────
size=30    overlap=6    조각수=17   평균=20    최소=7    최대=30
size=50    overlap=10   조각수=14   평균=25    최소=7    최대=49
size=100   overlap=20   조각수=6    평균=59    최소=13   최대=99
size=150   overlap=30   조각수=3    평균=113   최소=67   최대=143
size=250   overlap=50   조각수=2    평균=171   최소=143  최대=200

💡 표에서 읽어낼 것
① 조각 수와 크기는 반비례합니다
size가 커지면 조각 수가 줄어듭니다. 당연하죠.
② 평균이 chunk_size보다 작습니다
separators 때문입니다. 500자를 채우기 전에
문단 끝이 나오면 거기서 자르니까요. 정상입니다.
③ 최소값을 눈여겨보세요
size=200일 때 42자짜리 조각이 있습니다.
42자로 무슨 답을 할 수 있을까요? 너무 작습니다.

👉 최소 조각이 100자 미만이면 size를 키워야 합니다.

← 이전 절7차시 · 6. 실습 ② — overlap을 눈으로 확인하기다음 절 →7차시 · 8. 실습 ④ — 내 문서에 맞는 값 찾기