KNOWLEDGE BASES / 03

Chunking

길이 단위와 문서 구조를 구분하고, 청크 크기·겹침이 검색 근거에 미치는 영향을 계산한다.

4 TABSv1.0Corpus ↗
03.01 / Length Units

Length Units

문자·바이트·단어·토큰

Overview 개요#

청크 크기를 정하기 전에 길이의 단위를 명시한다. 같은 한국어 조문을 Unicode 문자, UTF-8 바이트, 공백 단위, 검색 특징 단위로 세면 서로 다른 값이 나온다.

Concept 핵심 개념#

JavaScript 문자열의 length는 UTF-16 코드 단위다. 코드 포인트를 세는 Array.from과 다를 수 있고, 사람이 보는 한 글자도 여러 코드 포인트로 이루어질 수 있다. 이 페이지의 문자 청킹은 코드 포인트 기준이며 사용자 지각 문자소 분할은 수행하지 않는다.

LLM(Large Language Model)의 토큰 수는 사용하는 모델의 tokenizer에 따라 달라진다. 공백으로 나눈 개수나 글자 수를 실제 토큰 수로 표시하면 context window 계산이 틀어질 수 있다. 여기서 mixed IR feature라고 부르는 단위는 검색을 위한 단어·한글 n-gram이며 LLM 토큰이 아니다.

UTF-8 bytes, Unicode code points, and model tokens are different units.

Hands-on 직접 살펴보기#

조문 ID를 바꾸며 각 길이 수치를 비교한다. 한 단위의 개수를 다른 단위의 예산으로 그대로 옮겨 쓰지 않는다.

입력을 바꾸며 비교하기

기본 입력으로 계산한 결과

유니코드 문자408
공백 단위84
특징 토큰342
단위 · 개수0102204306408408Characters84Whitespace342IR features개수단위

여기서 센 특징 토큰은 LLM의 BPE 토큰 수가 아니다.

단위개수
Unicode code points408
UTF-16 code units408
UTF-8 bytes928
Whitespace units84
Mixed IR features342
제618조 · 정의
제618조(정의) 이 장에서 사용하는 용어의 뜻은 다음과 같다. <개정 2017. 3. 3., 2023. 11. 14.>
1. “밀폐공간”이란 산소결핍, 유해가스로 인한 질식ㆍ화재ㆍ폭발 등의 위험이 있는 장소로서 별표 18에서 정한 장소
를 말한다.
2. “유해가스”란 이산화탄소ㆍ일산화탄소ㆍ황화수소 등의 기체로서 인체에 유해한 영향을 미치는 물질을 말한다.
3. “적정공기”란 산소농도의 범위가 18퍼센트 이상 23.5퍼센트 미만, 이산화탄소의 농도가 1.5퍼센트 미만, 일산화탄
소의 농도가 30피피엠 미만, 황화수소의 농도가 10피피엠 미만인 수준의 공기를 말한다.
4. “산소결핍”이란 공기 중의 산소농도가 18퍼센트 미만인 상태를 말한다.
5. “산소결핍증”이란 산소가 결핍된 공기를 들이마심으로써 생기는 증상을 말한다.

원문 발췌와 검색 질의는 한국어를 유지합니다. 문서 ID와 PDF 페이지로 계산에 쓰인 출처를 확인할 수 있습니다.

Summary 핵심 정리#

  • 길이 값에는 반드시 단위를 붙인다.
  • 모델별 토크나이저 없이 정확한 LLM 토큰 수를 주장하지 않는다.
  • 청킹과 검색 토큰화의 단위를 분리한다.

Notation 기호·단위#

기호의미단위
t문자열Unicode
BUTF-8 크기bytes
L코드 포인트 길이characters

References 참고 자료#

  1. Unicode · UAX #15: Unicode Normalization Forms
  2. scikit-learn · Feature extraction
  3. 실습 코퍼스 · 첨부 PDF와 추출 레코드
03.02 / Fixed Windows

Fixed Windows

길이만 보고 자르는 청크

Overview 개요#

Fixed-window chunking(고정 창 청킹)은 일정 길이의 문자열 구간을 만든다. 구현이 단순하고 경계를 재현하기 쉽지만 문장이나 항의 의미를 알지 못한다.

Concept 핵심 개념#

겹침이 없는 길이 L의 분할은 시작점 0, L, 2L에서 자르고 마지막 구간만 짧을 수 있다. 시작·끝 offset을 원문 기준으로 기록하면 청크가 어느 부분에서 왔는지 되돌아갈 수 있다. 청크마다 독립 ID를 주더라도 source ID와 offset을 함께 보존한다.

짧은 청크는 특정 표현을 집중적으로 담을 수 있지만 필요한 조건이나 예외가 다음 청크로 넘어간다. 긴 청크는 문맥을 더 담지만 검색 점수가 관련 없는 부분과 섞일 수 있다. 하나의 길이가 모든 문서와 질의에 최선이라고 가정하지 않는다.

Cᵢ = t[iL : min((i+1)L, |t|)]

Hands-on 직접 살펴보기#

청크 길이를 바꾸고 원문 구절이 청크 경계에서 나뉘는지 확인한다. 표의 시작·끝은 끝점을 포함하지 않는 구간이다.

입력을 바꾸며 비교하기
150

기본 입력으로 계산한 결과

청크 수3
총 복사 문자408
추가 복사 비율0%
청크 · 문자 수037.575112.5150150C1150C2108C3문자 수청크

고정 길이는 문장·항의 경계를 알지 못한다. 구절 포함 표시는 입력 문자열의 정확한 일치다.

청크시작끝길이찾는 구절 포함
10150150—
2150300150✓
3300408108—
C1 · 제618조 · 정의
제618조(정의) 이 장에서 사용하는 용어의 뜻은 다음과 같다. <개정 2017. 3. 3., 2023. 11. 14.>
1. “밀폐공간”이란 산소결핍, 유해가스로 인한 질식ㆍ화재ㆍ폭발 등의 위험이 있는 장소로서 별표 18에서 정한 장소
를 말한다.
2. “유해가스”란
C2 · 제618조 · 정의
 이산화탄소ㆍ일산화탄소ㆍ황화수소 등의 기체로서 인체에 유해한 영향을 미치는 물질을 말한다.
3. “적정공기”란 산소농도의 범위가 18퍼센트 이상 23.5퍼센트 미만, 이산화탄소의 농도가 1.5퍼센트 미만, 일산화탄
소의 농도가 30피피엠 미만, 황화수소의 농도가 10피
C3 · 제618조 · 정의
피엠 미만인 수준의 공기를 말한다.
4. “산소결핍”이란 공기 중의 산소농도가 18퍼센트 미만인 상태를 말한다.
5. “산소결핍증”이란 산소가 결핍된 공기를 들이마심으로써 생기는 증상을 말한다.

원문 발췌와 검색 질의는 한국어를 유지합니다. 문서 ID와 PDF 페이지로 계산에 쓰인 출처를 확인할 수 있습니다.

Summary 핵심 정리#

  • 경계 offset을 원문과 연결한다.
  • 크기만으로 의미적 완결성을 보장하지 않는다.
  • 마지막 짧은 청크도 별도 처리한다.

Notation 기호·단위#

기호의미단위
L청크 길이characters
i청크 번호0-based
Cᵢ청크 본문Unicode

References 참고 자료#

  1. Lewis et al. · Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks (2020)
  2. W3C · PROV-DM: The PROV Data Model (2013)
  3. 실습 코퍼스 · 첨부 PDF와 추출 레코드
03.03 / Structure-aware Chunking

Structure-aware Chunking

문서의 경계를 먼저 읽기

Overview 개요#

Structure-aware chunking(구조 기반 청킹)은 제목·절·항·목을 먼저 읽고 검색 단위를 만든다. 문서마다 다른 구조 신호를 처리해야 한다.

Concept 핵심 개념#

이 코퍼스는 제n조 제목으로 문서를 나누며 삭제 조문도 별도 레코드로 보존한다. 선택 조문 안에서는 ①·② 같은 항 기호를 후보 경계로 삼는다. 글머리 기호가 예시나 표 안에 나오는 경우에는 정규식만으로 잘못 나눌 수 있다.

구조를 존중해도 한 항이 너무 길 수 있다. 이 경우 최대 길이로 다시 나누는 fallback을 둔다. 검색용 자식 청크와 읽기용 부모 조문을 연결하면 작은 검색 단위와 큰 문맥 단위를 분리할 수 있다. 이 체험은 부모 조문 ID를 모든 하위 구간에 유지한다.

chunks = ⋃ⱼ split_L(paragraphⱼ)

Hands-on 직접 살펴보기#

제619조의2처럼 항이 여러 개인 조문을 선택한다. 최대 길이를 줄이고, 구조 경계와 길이 fallback이 동시에 적용되는 방식을 확인한다.

입력을 바꾸며 비교하기
350

기본 입력으로 계산한 결과

청크 수5
총 복사 문자1015
추가 복사 비율0%
청크 · 문자 수085.5171256.534233C1342C2218C3168C4254C5문자 수청크

항 기호를 경계로 나누고, 너무 긴 항은 문자 수로 다시 나눈다. 전문 문서 파서의 대체품은 아니다.

청크시작끝길이찾는 구절 포함
103333✓
233375342✓
3375593218✓
4593761168✓
57611015254✓
C1 · 제619조의2 · 산소 및 유해가스 농도의 측정 및 기록 등
제619조의2(산소 및 유해가스 농도의 측정 및 기록 등) 
C2 · 제619조의2 · 산소 및 유해가스 농도의 측정 및 기록 등
① 사업주는 밀폐공간에서 근로자에게 작업을 하도록 하는 경우
작업을 시작(작업을 일시 중단하였다가 다시 시작하는 경우를 포함한다. 이하 이 조에서 같다)하기 전에 밀폐공간의
산소 및 유해가스 농도의 측정 및 평가에 관한 지식과 실무경험이 있는 사람을 지정하여 측정장비를 지급하고, 그로
하여금 해당 밀폐공간의 산소 및 유해가스 농도를 측정(「전파법」 제2조제1항제5호ㆍ제5호의2에 따른 무선설비 또
는 무선통신을 이용한 원격 측정을 포함한다. 이하 제629조, 제638조 및 제641조에서 같다)하여 적정공기가 유지되
고 있는지를 평가하도록 해야 한다. <개정 2024. 6. 28., 2025. 12. 1.>
C3 · 제619조의2 · 산소 및 유해가스 농도의 측정 및 기록 등
② 사업주는 제1항에 따라 밀폐공간의 산소 및 유해가스 농도를 측정 및 평가하는 자에 대하여 밀폐공간에서 작업
을 시작하기 전에 다음 각 호의 사항의 숙지여부를 확인하고 필요한 교육을 실시해야 한다.<신설 2024. 6. 28.>
1. 밀폐공간의 위험성
2. 측정장비의 이상 유무 확인 및 조작 방법
3. 밀폐공간 내에서의 산소 및 유해가스 농도 측정방법
4. 적정공기의 기준과 평가 방법
C4 · 제619조의2 · 산소 및 유해가스 농도의 측정 및 기록 등
③ 사업주는 제1항에 따라 산소 및 유해가스 농도를 측정한 결과 적정공기가 유지되고 있지 아니하다고 평가된 경
우에는 작업장을 환기시키거나, 근로자에게 공기호흡기 또는 송기마스크를 지급하여 착용하도록 하는 등 근로자의
건강장해 예방을 위하여 필요한 조치를 하여야 한다.<개정 2024. 6. 28.>
C5 · 제619조의2 · 산소 및 유해가스 농도의 측정 및 기록 등
④ 사업주는 제1항에 따른 밀폐공간의 산소 및 유해가스 농도의 측정 및 평가 결과에 대하여 측정 및 평가한 사람
의 성명, 측정 및 평가한 일시ㆍ장소 및 그 결과 등을 기록(「개인정보 보호법」 제2조제7호에 따른 고정형 영상정보
처리기기 또는 같은 조 제7호의2에 따른 이동형 영상정보처리기기를 활용하여 기록하는 것을 포함한다)하여 3년간
보존해야 한다.<신설 2025. 12. 1.>
[본조신설 2017. 3. 3.]
[제목개정 2025. 12. 1.]

원문 발췌와 검색 질의는 한국어를 유지합니다. 문서 ID와 PDF 페이지로 계산에 쓰인 출처를 확인할 수 있습니다.

Summary 핵심 정리#

  • 구조 경계도 파서의 가정이다.
  • 긴 구조 단위에는 fallback이 필요하다.
  • 부모 ID와 원문 offset을 잃지 않는다.

Notation 기호·단위#

기호의미단위
paragraphⱼ항 단위 후보text span
L최대 길이characters
parent원본 조문ID

References 참고 자료#

  1. PyMuPDF · Text extraction recipes
  2. W3C · PROV-DM: The PROV Data Model (2013)
  3. 실습 코퍼스 · 첨부 PDF와 추출 레코드
03.04 / Overlap & Redundancy

Overlap & Redundancy

경계 보완과 중복 비용

Overview 개요#

Overlap(겹침)은 이전 청크의 일부를 다음 청크에 반복한다. 경계에 걸친 구절을 보존하는 데 도움이 되지만 근거의 수를 과대평가하게 만들 수 있다.

Concept 핵심 개념#

길이 L과 겹침 O에서 이동 간격은 L−O다. O가 L에 가까워지면 거의 같은 문자열을 반복 저장하게 된다. 구현은 O<L을 유지해야 하며 그렇지 않으면 진행하지 않는 반복문이 될 수 있다.

청크 적중 수가 늘어도 원본 근거가 늘어난 것은 아니다. 같은 조문에서 겹쳐 나온 결과는 citation deduplication과 parent grouping으로 묶을 수 있다. 이 체험은 총 복사 문자 수와 원문 길이를 비교하고 정확히 같은 구절을 포함하는 청크를 표시한다.

overhead = (Σᵢ |Cᵢ| − |t|) / |t|

Hands-on 직접 살펴보기#

겹침을 0에서 늘리며 찾는 구절이 보존되는지와 복사량이 얼마나 증가하는지 함께 본다. 구절 포함은 의미검색의 정답이 아니다.

입력을 바꾸며 비교하기
200
75

기본 입력으로 계산한 결과

청크 수3
총 복사 문자558
추가 복사 비율36.7647%
청크 · 문자 수050100150200200C1200C2158C3문자 수청크

같은 원문을 반복 복사하므로 검색 적중 수가 늘어도 서로 독립된 근거가 늘어난 것은 아니다.

청크시작끝길이찾는 구절 포함
10200200—
2125325200✓
3250408158—
C1 · 제618조 · 정의
제618조(정의) 이 장에서 사용하는 용어의 뜻은 다음과 같다. <개정 2017. 3. 3., 2023. 11. 14.>
1. “밀폐공간”이란 산소결핍, 유해가스로 인한 질식ㆍ화재ㆍ폭발 등의 위험이 있는 장소로서 별표 18에서 정한 장소
를 말한다.
2. “유해가스”란 이산화탄소ㆍ일산화탄소ㆍ황화수소 등의 기체로서 인체에 유해한 영향을 미치는 물질을 말한다.
C2 · 제618조 · 정의
서 정한 장소
를 말한다.
2. “유해가스”란 이산화탄소ㆍ일산화탄소ㆍ황화수소 등의 기체로서 인체에 유해한 영향을 미치는 물질을 말한다.
3. “적정공기”란 산소농도의 범위가 18퍼센트 이상 23.5퍼센트 미만, 이산화탄소의 농도가 1.5퍼센트 미만, 일산화탄
소의 농도가 30피피엠 미만, 황화수소의 농도가 10피피엠 미만인 수준의 공기를 말한다.
4. “산
C3 · 제618조 · 정의
농도가 1.5퍼센트 미만, 일산화탄
소의 농도가 30피피엠 미만, 황화수소의 농도가 10피피엠 미만인 수준의 공기를 말한다.
4. “산소결핍”이란 공기 중의 산소농도가 18퍼센트 미만인 상태를 말한다.
5. “산소결핍증”이란 산소가 결핍된 공기를 들이마심으로써 생기는 증상을 말한다.

원문 발췌와 검색 질의는 한국어를 유지합니다. 문서 ID와 PDF 페이지로 계산에 쓰인 출처를 확인할 수 있습니다.

Summary 핵심 정리#

  • 겹침과 이동 간격을 함께 계산한다.
  • 중복 청크는 독립된 근거가 아니다.
  • 효과와 저장·검색 비용을 함께 비교한다.

Notation 기호·단위#

기호의미단위
L청크 길이characters
O겹침 길이characters
Cᵢ청크text span

References 참고 자료#

  1. Lewis et al. · Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks (2020)
  2. W3C · PROV-DM: The PROV Data Model (2013)
  3. 실습 코퍼스 · 첨부 PDF와 추출 레코드
다음 주제 · Lexical Indexing →

이 페이지의 체험은 원리를 보이기 위해 단순화한 모델이다.

실습 값은 상태 링크에 포함된다. 이 브라우저에는 테마와 글자 크기만 저장한다.