> ## Documentation Index
> Fetch the complete documentation index at: https://docs.platform.nora.my/llms.txt
> Use this file to discover all available pages before exploring further.

# Clean 스테이지

> 데이터가 인덱스에 닿기 전 PII 편집, 중복 제거, 잡음 제거.

**Clean** 스테이지는 Source 와 Normalize 사이에 있습니다. 저장하고 싶지 않은 것들을 제거하는 역할입니다 — 우발 PII, 보일러플레이트, 근접 중복, 워크스페이스를 떠나면 안 되는 콘텐츠.

## Clean 블록

### PII 편집

자동 감지·치환:

* **이메일** → `[email]`
* **전화번호** → `[phone]` (US, EU, JP, KR 포맷)
* **신용카드 번호** → `[cc]`
* **국가 ID** (SSN, KRRN, MyKad) → `[id]`
* **이름** — 옵션, 기본 오프. NER + 작은 온-디바이스 모델 사용.
* **커스텀 regex** — 자체 패턴 추가.

문서 안에서 치환은 일관됨 (같은 이메일은 같은 플레이스홀더로) 이라 의미 보존.

### 보일러플레이트 제거

흔한 잡음 제거:

* 이메일 헤더와 시그니처.
* HTML 태그와 스타일링.
* 목차, 페이지 번호, 헤더/푸터.
* 법적 푸터와 면책 조항.
* 쿠키 고지와 내비게이션 (웹 콘텐츠).

### 언어 필터

원치 않는 언어의 항목 드롭. 허용 목록 설정 (예: `en, ko, ja`). 나머지는 필터되고 로그.

### 콘텐츠 필터

**거부 목록** 에 매치되는 콘텐츠 드롭 — 패턴·키워드·제공한 작은 분류기. 테스트 데이터나 내부 전용 콘텐츠를 공개 에이전트 지식에서 빼는 데 유용.

### 근접 중복 감지기

이미 인제스트된 것과 95% 이상 유사한 항목 제거. MinHash 스케치 사용 — 빠르고 재임베딩 불필요.

임계값 조정 가능. 높게 (>99%) 는 거의 동일한 사본만; 낮게 (\~85%) 는 공격적.

### 커스텀 변환 (인라인)

각 항목에 작은 JS/Python 함수 실행. `content`, `metadata`, 헬퍼 라이브러리 (`re`, `bs4`, `markdown-it`) 전체 접근. 변환된 항목 반환, 또는 `null` 반환으로 드롭.

## 순서가 중요

Clean 블록은 배선한 순서대로 실행. 흔한 레시피:

1. 언어 필터 (일찍 드롭 — 저렴).
2. 보일러플레이트 제거 (구조 정리).
3. PII 편집 (깨끗한 텍스트에 작용).
4. 근접 중복 감지기 (다른 것들이 잡음을 정규화한 후 중복 제거).

## 무엇이 정리됐는지 로깅

실행 로그가 항목별 정리 작업을 기록: PII 히트 수, 무엇이 제거됐는지, 항목이 드롭됐는지. 정리 전 데이터를 보관하지 않고도 감사 가능.

## 되돌리기

편집은 설계상 **되돌릴 수 없음**. 편집 해제가 필요하면 다시 소싱하고 다시 실행해야 함.

원본이 감사용으로 필요하면 원본을 원래 저장소에 그대로 유지하세요 — Nora 는 파이프라인의 파생 사본만 편집합니다.
