청킹이 필요한 두 가지 이유
- 임베딩 모델에는 토큰 한도가 있어. 한도를 넘긴 부분은 경고도 없이 잘릴 수 있어.
- 문서 전체를 임베딩하면 여러 주제가 벡터 하나에 뒤섞여. 결제를 다루는 10페이지 문서에도 체험판 가입, 환불 정책, 미납 안내 메일, 세금 준수처럼 서로 다른 주제가 들어갈 수 있어. 이를 점 하나로 표현하면 그 점은 모든 주제의 평균 부근에 놓여 어떤 구체적인 질문과도 멀어져.
검색 정밀도와 문맥 사이의 균형
청크가 작으면 검색은 정밀해지지만 결과 하나가 주는 문맥은 줄어. 청크가 크면 문맥은 풍부해지지만 관련 없는 내용까지 섞이고 주제 경계를 넘기 쉬워져. 많은 지식 베이스에서 쓸 만한 출발점은 200–800토큰에 10–20% 중첩이야. 법칙은 아니니 실제 코퍼스와 쿼리로 측정해야 해.
분할 방식 네 가지
- 고정 크기 — N자 또는 N토큰마다 나눠. 단순하지만 결과를 예측하기 쉬워.
- 재귀 문자 분할 — 문단, 문장, 단어 순으로 경계를 찾아. LangChain의 기본 방식이야.
- 구조 기반 분할 — 마크다운 제목, HTML 태그, 코드 AST를 따라 논리 경계를 보존해.
- 의미 기반 분할 — 문장을 임베딩하고 의미가 크게 바뀌는 지점에서 새 청크를 시작해. 품질은 높지만 느리고 동작을 설명하기도 어려워.