Rizzo-AI-Academy/rizzo-pii
Local-first privacy guard: anonymize your documents before sharing with LLMs.
rizzo‑pii – 이탈리아어 법률 텍스트를 위한 로컬 및 가역적 PII 익명화
이것은 무엇인가요 – 약 0.3 B 파라미터의 이탈리아어 우선 토큰 분류 모델로, mmBERT 백본 위에 구축되어 개인 데이터 22가지 범주(이탈리아 특정 식별자 포함: codice fiscale, partita IVA, 토지 등기 참조)를 감지합니다. 이 모델은 일반 CPU에서 실행 가능(약 0.5 GB RAM)이며 데스크톱 앱으로 패키징됩니다(Windows 설치 프로그램, macOS DMG, Linux AppImage). 어떤 "프론티어" LLM(ChatGPT, Claude, Gemini) 앞에 배치되어 클라우드에는 가명화된 플레이스홀더만 전송되고, 이후 로컬에서 실제 값이 복원됩니다.
핵심 아이디어
| 아이디어 | 왜 중요한가 |
|---|---|
| 100 % 로컬 감지 & 재식별 | API 키 필요 없음, 원격 측정 없음 – 민감한 스팬은 사용자 머신을 절대 떠나지 않습니다. |
| 가역적 플레이스홀더 | 앱은 각 PII 스팬을 [FULLNAME_1] 같은 안정적인 태그로 대체하고 로컬 사전에 저장하여 LLM이 답변을 반환한 후 원래 값을 다시 삽입할 수 있게 합니다. |
| 이탈리아 법적 범위 | 22개 엔티티 유형을 명시적으로 포함하여 codice fiscale, partita IVA, 토지 등기 데이터, 행위 식별자 등을 커버하며, 영어 우선 범용 모델에서는 자주 놓치는 부분입니다. |
| 체크섬 기반 안전망 | 구조화된 식별자(IBAN, CF, PIVA, 신용카드 번호)에 대해 결정적 정규식 + mod‑97/Luhn 검사가 신경 태거를Override하여 수학적으로 정확한 감지를 보장합니다. |
| 초소형 CPU 친화적 footprint | 약 0.3 B 밀집 파라미터, 약 0.5 GB RAM, 어떤 64‑bit CPU에서도 실행 가능 – 추론에는 GPU 필요 없음. |
작동 방식 (워크플로우)
- 로컬 태깅 – 모델이 문서를 스캔하여 22개 범주의 BIO 태그를 출력하고, 결정적 정규식/체크섬 레이어가 구조화된 ID를 포착합니다.
- 플레이스홀더 대체 – 각 스팬이 타입 인식 플레이스홀더(
[IBAN_1],[CF_1]등)로 대체되고 매핑이 디스크에 저장됩니다. - 프론티어 LLM에 전송 – 플레이스홀더만 포함된 텍스트가 원격 모델(ChatGPT, Claude, Gemini 등)에 전송됩니다. LLM은 반복되는 플레이스홀더로 인해 문서 일관성을 유지하면서 추론할 수 있습니다.
- 로컬 복원 – LLM의 답변이 후처리되어 저장된 사전을 사용하여 플레이스홀더가 실제 값으로 다시 바뀝니다.
개인정보 보호 보장은 구조적입니다: 제3자 처리자는 실제 개인 데이터를 절대 보지 않습니다.
기술 스냅샷
- 모델: mmBERT‑base (ModernBERT)를 토큰 분류에 대해 파인튜닝, 0.3 B 밀집 파라미터, fp32 체크포인트 약 1.2 GB, CPU 추론용으로 약 0.5 GB로 양자화.
- 훈련 데이터: 약 745k 라벨 행(약 45% 이탈리아어)에서 실제 데이터(Ai4Privacy, DeepMount)와 수학적으로 유효한 식별자를 포함한 합성 법률 산문. 16 GB 소비자 GPU에서 1 에포크 파인튜닝(약 2시간).
- 성능: 마이크로 F1 = 0.989, 토큰 정확도 = 0.998, 7k 실제 이탈리아어 홀드아웃 세트에서; 이탈리아어 법적 태그 5개 모두 완벽한 1.000 점수 달성.
- 카테고리: 22개 BIO 태그(FULLNAME, AGE, GENDER, DATE, TIME, STREET, BUILDINGNUM, ZIPCODE, CITY, PROVINCE, EMAIL, TELEPHONENUM, CF, PIVA, ID_DOC, IBAN, CREDITCARDNUMBER, AMOUNT, TARGA, ORG, DOCID, CATASTO) + regex 전용
URL태그. - 패키징: Tauri로 구축된 데스크톱 UI, 경량 Flask "사이드카" 백엔드, 그리고 프로그래밍 용도를 위한 간단한 HTTP API.
일반적인 사용 사례
- 법률 사무소 & 공증인 – 강력한 LLM에 요약 또는 초안을 의뢰하기 전에 계약서, 판결문, 고객 서신에서 이름, 세금 코드, 토지 등기 데이터를 제거하여 프라이버시 보호.
- 회계사 & 세무 컨설턴트 – AI 지원 분석 도구를 사용하기 전에 송장, 세금 신고서, 재무제표를 가명화.
- 의료 관리자 – LLM에 코딩 지원을 요청하기 전에 환자 식별자(CF, IBAN 등)를 의료 보고서에서 제거.
- GDPR 적용 조직 – 장소에서 나가는 텍스트가 가명화만 되도록 하여 데이터 최소화 요구 사항 충족.
시작하기
- 다운로드 – Releases 페이지에서 사전 빌드된 설치 프로그램/AppImage 가져오기(Windows, macOS Apple Silicon, Linux).
- 실행 – 앱 실행; PDF,
.txt, 또는.md파일을 드래그 앤 드롭하거나 순수 텍스트 붙여넣기. - 익명화 – Anonymise 버튼 클릭; UI에 색상 태그 표시 및 다운로드 가능한 사전 제공.
- LLM 질의 – 플레이스홀더만 포함된 텍스트를 선호하는 LLM UI(ChatGPT, Claude, Gemini 등)에 복사.
- 복원 – LLM의 답변을 앱에 붙여넣고 Restore 버튼 클릭; 원래 식별자가 다시 나타납니다.
개발자가 모델을 재구축하거나 확장하고자 하는 경우:
- 저장소를 클론하고 Python 3.11 가상 환경을 설정하고
requirements.txt설치(Blackwell GPU가 있으면 PyTorch + CUDA 12.8 설치, 그렇지 않으면 CPU 전용). - 데이터 생성 스크립트(
src/data_pipeline/*) 실행하여 합성 코퍼스 재생성. src/training/train_pii.py로 파인튜닝(빠른 테스트용--type quick, 전체 745k 행용--type full).- 웹 서비스는
python src/app/app.py로 시작하여http://127.0.0.1:5005노출.
제한 및 주의 사항
- 언어 초점 – 이탈리아어 법률 텍스트에 최적화; 다른 언어에서의 성능은 보장되지 않음(다른 언어도 지원하지만 정확도가 낮아질 수 있음).
- 구조화된 ID 의존 – IBAN, CF, PIVA 등에 대한 완벽한 감지를 위해 정규식/체크섬 레이어가 필수이며, 문서에 잘못된 식별자가 있으면 놓칠 수 있음.
- 추론에서는 GPU 가속 불필요 – 그러나 훈련에는 약 16 GB VRAM의 적당한 GPU 필요.
- 플레이스홀더 충돌 – 동일한 값은 동일한 플레이스홀더를 공유(LLM 일관성을 유지하기 위해 의도적)이므로 시스템은 같은 값의 두 가지 다른 발생을 구분할 수 없음.
결론
rizzo‑pii는 이탈리아어 사용 전문가가 개인 식별자를 노출하지 않고 강력한 클라우드 LLM을 활용할 수 있게 하는 GDPR‑by‑design 프라이버시 계층을 제공합니다. 극소한 CPU 발자국, 가역적 가명화, 그리고 법률 특화 엔티티 커버리지로 인해 이용 가능한 오픈소스 프라이버시 보존 AI 도구의 드문 사례입니다.