오늘 방문 /누적 방문 /완성한 레슨 소개 ↗
SECONDTEAM
RAG·검색
🔍 레슨

청킹 — 문서를 어떻게 자르나

통째로 넣으면 못 찾고, 너무 잘게 자르면 맥락이 죽어요. 자르기의 기술.

① 오늘의 미스터리
"분명 적어뒀는데 왜 못 찾지?"
반찬가게 레시피북을 통째로 AI에게 넣고 물었어요 — "멸치볶음에 견과류 언제 넣어?" 레시피북 어딘가에 분명 적혀 있는데, AI가 엉뚱한 답을 합니다.

파일은 넣었는데 왜 못 찾을까요? 오늘은 검색이 안 될 때의 진짜 범인 — 청킹(chunking, 문서를 자르는 법)을 잡으러 갑니다.

설명을 따라 진행하면, 여기서 직접 쳐보게 돼요 👇
~/my-shop
$ _
📚 「청킹 — 문서를 어떻게 자르나」 레슨 내용 전체 텍스트로 훑어보기
"분명 적어뒀는데 왜 못 찾지?"
반찬가게 레시피북을 통째로 AI에게 넣고 물었어요 — "멸치볶음에 견과류 언제 넣어?" 레시피북 어딘가에 분명 적혀 있는데, AI가 엉뚱한 답을 합니다.

파일은 넣었는데 왜 못 찾을까요? 오늘은 검색이 안 될 때의 진짜 범인 — 청킹(chunking, 문서를 자르는 법)을 잡으러 갑니다.

레시피북을 검색에 쓰려면 잘라서 넣어야 해요. 그런데 자르는 크기를 극단으로 가보면 둘 다 망합니다.
📕 통째로 (자르지 않음): 레시피북 100쪽을 한 덩어리로. "멸치볶음" 한 줄을 찾으려는데 책 전체가 딸려와요. 핵심이 잡탕에 묻혀 못 찾아요.
🔤 한 글자씩 (너무 잘게): '멸', '치', '볶', '음'… 글자 단위로. 조각은 많은데 맥락이 죽어요. '견과류'만 있고 '언제 넣는지'는 옆 조각에 흩어져요.

그래서 적당한 크기로 자릅니다. 이 한 조각을 청크(chunk)라고 해요. 레시피북을 레시피 카드 한 장씩으로 나누는 거예요.

좋은 청크의 감각
· 한 조각 = 한 가지 이야기 (멸치볶음 카드 한 장)
· 너무 크면 → 잡탕이라 못 찾고
· 너무 작으면 → 맥락이 끊겨 쓸모없고
· 그래서 보통 문단·섹션 단위로 자릅니다

지난 레슨에서 의미를 숫자(임베딩)로 바꿨죠? 그 임베딩을 '청크 한 장마다' 만들어 둬야 검색이 잘 돼요.

우리 레시피북을 청크로 나눈다면, 어떤 단위로 자르는 게 검색에 제일 좋을까요?
맞아요. 의미가 이어지는 단위(메뉴 하나 = 한 섹션)로 잘라야 카드 한 장이 완결돼요. 글자 수로 칼같이 자르면 멸치볶음 설명이 두 카드로 쪼개지기도 해요. 그래서 문단·섹션이 기본 단위예요.

레시피북에 메뉴가 30개 있어요. 메뉴(섹션) 단위로 청킹하면 청크는 대략 몇 장이 나올까요?

30장 안팎이에요. 메뉴 하나가 청크 한 장이 되니까요. 긴 메뉴는 두 장으로 쪼개질 수도 있어 정확히 30은 아니지만, '섹션 개수쯤'으로 감 잡으면 충분해요.

실제로 잘라봐요. 가게 폴더에서 Claude를 켜고, 레시피북을 청크로 나눠달라고 해봐요.

recipes.md 레시피북을 메뉴(섹션) 하나당 한 조각씩 청크로 나눠줘. 각 조각에 메뉴 이름을 붙여줘 — 레시피북을 메뉴 단위로 잘라달라고 말해요
보세요 — 책 한 권이 찾기 좋은 카드 30장이 됐어요. 이제 "멸치볶음" 카드 한 장만 정확히 꺼낼 수 있어요.

그런데 한 가지 함정. 멸치볶음 설명이 딱 카드 경계에서 끊기면? "마지막에 견과류를 넣는다"의 '견과류를'은 1번 카드 끝, '넣는다'는 2번 카드 시작 — 둘 다 반쪽이 돼요.

그래서 — 조각을 살짝 겹친다
카드를 자를 때 앞 카드의 끝 몇 줄을 다음 카드 앞에도 복붙해요. 이렇게 경계를 겹치는 걸 겹침(overlap)이라고 해요. 경계에 걸친 문장이 어느 한 카드엔 온전히 들어가게 하는 안전장치예요.
청크끼리 끝을 조금 겹치게(overlap) 만드는 이유는 뭘까요?
맞아요. 경계에서 끊긴 문장 때문에 답을 놓치는 사고를 막는 안전장치예요. 다만 너무 많이 겹치면 같은 내용이 여러 카드에 중복돼 낭비예요. '끝부분 살짝'만 겹치는 게 적당해요.

청크끼리 경계를 살짝 겹쳐서 잘린 문장을 살리는 이 기법, 영어로 뭐라고 부를까요?

정답! overlap(오버랩, 겹침)이에요. 청킹을 설정할 때 보통 '청크 크기''겹침 크기' 두 개를 함께 정해요.

검색이 이상할 땐 청크가 어떻게 잘렸는지부터 봐야 해요. Claude에게 청크 상태를 점검해달라고 해봐요.

방금 나눈 청크들 중에 너무 크거나, 한 메뉴가 둘로 쪼개진 게 있는지 점검해줘 — 청크가 너무 크거나 잘못 잘렸는지 확인해요
이렇게 청크를 눈으로 점검하는 습관이 검색 품질을 지켜요.

이제 가장 중요한 실무 감각 하나. 나중에 우리 가게 챗봇이 "검색이 영 엉뚱하다" 싶을 때 —

검색이 나쁘면, 청킹부터 의심하라
많은 사람이 임베딩 모델이나 AI를 탓하지만, 1순위 용의자는 보통 청킹이에요.
· 청크가 너무 크면 → 핵심이 잡탕에 묻혀 안 잡혀요
· 청크가 너무 작거나 경계가 끊기면 → 맥락이 죽어요
그래서 검색이 이상할 땐 "어떻게 잘랐지?"부터 들여다봐요.
한 줄로
레시피북은 통째로도 한 글자씩도 안 되고, 의미 단위(메뉴·섹션)의 청크로 자른다. 경계가 끊기지 않게 겹침(overlap)을 살짝 주고, 검색이 나쁘면 청킹부터 의심한다.
다음 레슨에서
이제 잘 자른 청크가 준비됐어요. 그럼 이 레시피 카드들을 실제로 우리 가게에 붙여 AI가 꺼내 쓰게 만들 차례예요. 다음 '내 문서 연결하기'에서 손으로 연결합니다. 가게는 계속 자랍니다. 🌱