데이터

청킹

Chunking

청킹은 긴 문서를 벡터 DB에 넣기 전에 검색하기 좋은 작은 조각으로 쪼개는 전처리로, RAG를 만들 때 반드시 거치는 단계다. 어떻게 자르느냐가 검색 품질의 상한선을 정한다.

자르는 크기결과
너무 크게잡다한 내용이 섞여 검색이 흐려진다
너무 작게문맥이 끊겨 찾아도 무슨 말인지 모른다
적당하게구체적인 질문과 정확히 맞물린다

기본은 재귀 분할, 구조가 있으면 구조대로

처음이라면 문단, 문장, 단어 순으로 자연스러운 경계를 찾아 자르는 재귀 분할로 시작한다. LangChain의 RecursiveCharacterTextSplitter가 대표적이다.

설정출발점이유
조각 크기400~512토큰무난한 기본값
오버랩10~20%경계에 걸린 문장이 한 조각엔 통째로 남는다

마크다운은 헤딩 단위로, 코드는 함수·클래스 단위로 자르면 조각 하나하나가 그 자체로 이해되는 내용이 된다.

잘린 조각에 문맥 되살리기

"이 경우 전액 환불한다"처럼 '이 경우'가 조각 밖에 있으면 검색에도 답변에도 쓸모가 떨어진다. 이를 보완하는 기법은 효과만큼 비용도 붙는다.

기법방법비용
시맨틱 청킹문장 사이 의미가 크게 바뀌는 지점에서 자른다단순 분할보다 수십 배 느림
컨텍스추얼 리트리벌조각 앞에 "어느 문서 어느 절" 설명을 LLM으로 붙인다조각마다 LLM 호출

작게 찾고, 크게 넘긴다

검색은 조각이 작을수록 정확하지만, LLM이 답을 쓸 때는 주변 맥락이 넉넉해야 한다. 그래서 작은 조각으로 찾은 뒤 그 조각이 속한 문단이나 섹션을 통째로 모델에 넘기는 부모 문서 검색이 자주 쓰인다.

조각마다 파일명, 섹션 제목, 날짜 같은 메타데이터를 같이 저장해 두면 "2025년 이후 문서에서만 찾아줘" 같은 필터도 걸 수 있다.

답변이 이상하면 조각부터 본다

법률 문서, 채팅 로그, 코드는 맞는 전략이 저마다 다르다. 재귀 분할로 기준을 만들고, 대표 질문 수십 개로 검색 정확도를 잰 뒤, 부족한 곳에만 비싼 기법을 더하면 된다.

답변이 엉뚱할 때는 모델이나 프롬프트를 바꾸기 전에 검색된 조각부터 직접 열어 본다. 모델을 바꾸지 않고 청킹만 고쳐도 성능이 크게 오르는 경우가 흔하다.

문서를 찾아 답하는 곳이면 어디든 들어간다

LLM이 내 문서를 근거로 답하게 만드는 곳에는 거의 항상 청킹이 들어간다. 문서 종류에 맞춰 자르는 단위를 바꾸는 게 핵심이다.

어디서어떻게 쓰나
사내 문서 검색 챗봇위키·규정 문서를 헤딩 단위로 자르고 부서·날짜 메타데이터를 붙여 필터 검색
고객 지원 봇FAQ·매뉴얼을 질문-답 한 쌍씩 조각으로 만들어 문의와 바로 맞물리게
코딩 어시스턴트코드베이스를 함수·클래스 단위로 잘라 관련 코드를 찾아 모델에 넘김
긴 보고서·계약서 질의작은 조각으로 찾고 해당 조항이나 섹션 전체를 넘기는 부모 문서 검색
#전처리#문서분할
참고 자료
관련 영상
← AI Wiki에서 더 보기
updated at 2026-10-20