RAG 청킹 계산기
입력
| 문서 토큰 | 8,000 |
|---|---|
| 청크 크기 | 512 |
| 청크 겹침 | 64 |
RAG 청킹 계산기
검색 증강 생성을 위해 문서가 겹침을 포함한 청크 몇 개로 분할되는지, 그리고 그것이 임베딩 모델로 보내는 토큰이 몇 개인지 계산합니다.
입력
문서
청킹
결과
값을 입력하면 계산 결과가 표시됩니다.
세부 정보
RAG 청킹
검색 증강 생성(RAG)은 먼저 문서 모음에서 관련 구절을 검색한 뒤 그 구절을 언어 모델에 전달하여 질문에 답하는 방식입니다. 문서 전체는 보통 하나의 단위로 임베딩하고 검색하기에는 너무 길기 때문에, 각 문서는 먼저 청크라고 부르는 더 작은 조각으로 분할됩니다. 청킹은 그 조각을 어떻게 자를지 결정하는 단계이며, 검색 품질과 임베딩 비용 양쪽 모두를 좌우합니다. 이 계산기는 주어진 길이의 문서가 몇 개의 청크를 만들어 내는지, 그리고 그것이 임베딩 모델로 보내는 토큰이 몇 개인지 알려 줍니다.
청킹의 원리
분할기는 고정 크기의 윈도를 문서 위로 미끄러뜨립니다. 윈도의 폭은
chunk_size 토큰이며, 청크 하나를 내보낸 뒤에는 전체 폭이 아니라 보폭만큼
전진하므로 연속한 두 청크는 chunk_overlap 토큰의 띠를 공유합니다. 겹침이
존재하는 이유는 청크 경계에 걸친 사실이 적어도 한 청크 안에서는 온전히
나타나도록 하기 위함입니다. 겹침이 없으면 둘로 잘린 문장은 어느 쪽 절반에서도
검색되지 못할 수 있습니다.
보폭은 청크 크기에서 겹침을 뺀 값입니다.
s=c−o토큰 문서는 첫 청크가 토큰만큼 머리를 차지하고 남은 토큰을 단위로 걸어 나가면 모두 덮이며, 이는 다음만큼의 청크가 필요합니다.
n=⌈sT−o⌉올림은 마지막의, 짧을 수도 있는 윈도를 고려한 것입니다. 개의 청크는 각각 전체 크기로 임베딩되므로 임베딩 모델로 보내는 총 토큰 수는 다음과 같습니다.
Temb=n⋅c첫 청크 이후의 모든 청크가 토큰을 반복하므로, 겹침이 있는 한 는 원본 보다 큽니다.
계산 예시
8,000 토큰 문서를 청크 크기 512, 겹침 64로 분할한다고 합시다. 윈도는 다음만큼 전진합니다.
s=512−64=448 토큰그리고 청크 수는 다음과 같습니다.
n=⌈4488000−64⌉=⌈4487936⌉=⌈17.71⌉=1818개의 청크를 모두 전체 크기로 임베딩하면 임베딩 모델로 다음만큼이 전달됩니다.
Temb=18×512=9216 토큰겹침은 임베딩 분량을 8,000에서 9,216 토큰으로, 약 15% 늘렸습니다. 이는 경계에 걸친 구절을 온전히 유지하기 위해 치르는 대가입니다. 그 비율은 청크 크기를 보폭으로 나눈 값에 가깝습니다().
참고와 변형
실제 분할기가 정확한 토큰 경계에서 자르는 경우는 드뭅니다. 대부분은 문장이나 문단 경계를 존중하므로 청크 길이가 제각각이고 그 수도 여기의 균일 윈도 추정과 조금씩 다릅니다. 재귀적 분할기와 의미 기반 분할기는 경계를 자연스러운 구조에 맞추어, 균일성을 양보하는 대신 일관성을 얻습니다. 겹침 비율은 임베딩 분량을 좌우하는 주된 지렛대입니다. 겹침이 50%면 임베딩 토큰이 대략 두 배가 되고, 겹침이 0이면 정확히 문서 길이만큼 임베딩하지만 사실이 잘릴 위험이 있습니다.
활용
청크 수는 이후 단계의 규모 산정을 좌우합니다. 각 청크는 벡터 하나가 되므로 벡터 데이터베이스 용량 계산기가 계산하는 색인 용량에 직접 반영되고, 임베딩 토큰 합계는 임베딩 비용 계산기이 추정하는 일회성 임베딩 비용을 결정합니다. 따라서 청크 크기와 겹침을 조정하는 일은 검색 정밀도를 저장 비용과 임베딩 비용 양쪽과 동시에 맞바꾸는 작업입니다.
자주 묻는 질문 (FAQ)
청크 사이에 겹침을 두는 이유는 무엇입니까?
경계에서 그대로 잘라내면 문장이나 표의 행, 사실 하나가 둘로 나뉘어 어느 청크에도 완전한 정보가 남지 않을 수 있습니다. 겹침은 한 청크의 끝부분을 다음 청크의 시작에 반복하므로, 경계에 걸친 구절도 적어도 한 청크 안에서는 온전히 나타납니다. 다만 반복된 토큰이 두 번 이상 임베딩되어 임베딩 비용이 늘고 색인에 거의 중복인 항목이 추가되는 절충이 따릅니다.
어떤 청크 크기를 사용해야 합니까?
보편적으로 가장 좋은 값은 없으며 콘텐츠와 검색 과제에 따라 달라집니다. 256에서 512 토큰 정도의 작은 청크는 청크마다 하나의 개념을 분리해 정밀하게 검색하므로 사실 조회에 적합합니다. 1,000 토큰 이상의 큰 청크는 주변 맥락을 더 많이 보존하므로 요약이나 추론 질문에 도움이 됩니다. 흔한 출발점은 청크 크기 512 토큰에 10~20%의 겹침을 두고, 이후 검색 품질에 따라 조정하는 것입니다.
문서에 담긴 것보다 더 많은 토큰이 임베딩되는 이유는 무엇입니까?
첫 청크 이후의 모든 청크는 이전 청크의 겹침 영역을 반복하므로 해당 토큰은 두 번 임베딩됩니다. 총 임베딩 토큰 수는 청크 수에 청크 크기를 곱한 값이며, 겹침이 조금이라도 있으면 항상 원본 문서 길이보다 큽니다. 임베딩 토큰과 문서 토큰의 비율은 대략 청크 크기를 보폭으로 나눈 값이므로, 겹침이 크면 임베딩 분량이 원본 문서 크기를 훨씬 웃돌 수 있습니다.
면책조항
토큰 수는 모델의 토크나이저와 분할기가 문장 및 문단 경계를 처리하는 방식에 따라 달라지며, 실제 파이프라인에서 완전히 균일한 청크가 나오는 경우는 드뭅니다. 이 수치는 계획용 추정치로 보고 정확한 토큰 수와 임베딩 비용은 직접 도구로 확인하시기 바랍니다.