Skip to main content
Normalize 단계는 대개 파이프라인에서 가장 큰 부분입니다. 원시 항목을 리트리벌 인덱스가 검색할 수 있는 구조화된 청크로 파싱합니다.
Chunk 블록 설정 — 분할 방식, 청크 크기, 겹침, 구분자를 정한다

왜 청킹을 하나

리트리벌은 쿼리에 가장 관련 있는, 가장 작은 콘텐츠 조각을 찾아냅니다. 200페이지 PDF 통째로는 너무 굵습니다(관련 없는 부분이 신호를 덮습니다). 문장 하나는 너무 잘습니다(맥락을 잃습니다). 청크가 딱 알맞은 단위죠. 알맞은 청크 크기는 콘텐츠마다 다릅니다. 문서 페이지는 200~500 토큰, 채팅 트랜스크립트는 대화 통째로, 코드는 파일이나 함수 단위입니다. Nora에 무난한 기본값이 있지만, 블록마다 손볼 수 있습니다.

청커 종류

마크다운 청커

마크다운, HTML, 구조가 좋은 PDF, Notion 페이지에 씁니다.
  • 먼저 헤딩 계층에서 나눕니다(섹션 중간을 자르지 않습니다).
  • 청크마다 헤딩 경로(Guides > Auth > OAuth)를 메타데이터로 답니다.
  • 섹션이 너무 길면 1200자쯤에서 문자 단위로 나누고 100자를 겹칩니다.

시맨틱 청커

작은 모델로 자연스러운 주제 경계를 찾습니다. 느리고 비싸지만, 뚜렷한 헤딩이 없는 산문에서는 더 나은 청크를 만듭니다.

PDF 청커

레이아웃이 있는 PDF를 다룹니다. 컬럼, 각주, 표를 처리하고 읽는 순서를 지킵니다. 취향에 따라 표를 HTML이나 CSV로 뽑습니다.

스프레드시트 청커

CSV, XLSX, Google Sheets 용입니다. 두 모드가 있습니다.
  • Row-wise 행마다 청크입니다. 레코드 같은 데이터에 좋습니다.
  • Table-summary 시트마다 청크 하나입니다(요약 + 원본 데이터 링크). 리트리벌이 레코드 조회가 아니라 주제형인 큰 표에 좋습니다.

코드 청커

언어를 압니다. 함수/클래스 경계에서 나눕니다. 임포트와 파일 스코프 맥락을 함수 청크마다 붙여 둡니다. JS/TS, Python, Rust, Go, Java, C++, C#, Ruby, PHP, SQL을 지원합니다. 나머지는 문자 단위로 나눕니다.

커스텀 청커(인라인)

항목을 받아 청크 객체 목록을 돌려주는 JS/Python 함수를 씁니다. 완전히 통제할 수 있습니다.

청크 메타데이터

청크마다 이런 걸 가집니다.
  • Content 텍스트.
  • Source ID 어느 소스 항목에서 왔는지.
  • Path 계층 위치(예: 헤딩 경로, 시트 이름, 함수 이름).
  • Position 소스 안에서 청크 번호.
  • 커스텀 필드 상류에서 더한 임의 메타데이터.
리트리벌은 이 중 무엇으로든 거를 수 있습니다. 부서로 태그하면 Agent를 그 부서 청크로 제한할 수 있죠.

겹침

일부 청커는 겹침을 지원합니다. 한 청크의 마지막 N 토큰을 다음 청크 앞머리에 다시 씁니다. 조금만 겹치면(50~100 토큰) 쿼리가 청크 경계를 넘을 때 리콜이 좋아집니다.

테스트

청크 블록마다 Preview 버튼이 있습니다. 샘플 소스 항목을 골라 정확히 어떻게 나뉘는지 봅니다. 청커 설정을 손볼 때 좋습니다.

변경 감지

소스 항목이 바뀌면 영향받은 청크만 다시 계산하고 다시 색인합니다. Nora가 청크와 소스의 계보를 따라갑니다.