Rizzo-AI-Academy/rizzo-pii

Local-first privacy guard: anonymize your documents before sharing with LLMs.

rizzo‑pii – 本地、可逆的義大利法律文本 PII 匿名化

它是什麼 – 一個微小(~0.3 B 參數)以義大利語為優先的 token‑classification 模型,建立在 mmBERT 骨幹上,能偵測 22 類個人資料(包括義大利特定識別碼,如 codice fiscalepartita IVA 與土地登記參考)。該模型可在普通 CPU 上運行(約 0.5 GB RAM),並打包為桌面應用程式(Windows 安裝程式、macOS DMG、Linux AppImage)。其設計是放在任何「前沿」LLM(ChatGPT、Claude、Gemini)之前,使得只有假名化佔位符被送往雲端,然後在本地還原真實值。


關鍵概念

概念 為什麼重要
100 % 本地偵測 & 重新識別 不需要 API 金鑰,也不會收集遙測 – 敏感跨度永不離開使用者的機器。
可逆佔位符 應用程式會將每個 PII 範圍替換為穩定的標籤,例如 [FULLNAME_1],並儲存本地字典,以便在 LLM 回覆後將原始值重新插入。
義大利法律覆蓋 22 種實體類型,明確涵蓋 codice fiscalepartita IVA、土地登記資料、行為識別碼等,這些是通用英語優先模型常會遺漏的。
校驗支撐的安全網 對於結構化識別碼(IBAN、CF、PIVA、信用卡號),決定性的 regex + mod‑97/Luhn 檢查會覆蓋神經標註器,保證數學上正確的偵測。
微小 CPU 友好占用 約 0.3 B 密集參數,~0.5 GB RAM,可在任何 64‑bit CPU 上運行 – 推理時不需要 GPU。

運作方式(工作流程)

  1. 本地標註 – 模型掃描文件,輸出 22 類別的 BIO 標籤,並由決定性的 regex/校驗層捕捉結構化 ID。
  2. 佔位符替換 – 每個範圍會被類型感知的佔位符取代(如 [IBAN_1], [CF_1] …),並將映射儲存在磁碟上。
  3. 送往前沿 LLM – 只有佔位符純文字會被送到遠端模型(ChatGPT、Claude、Gemini …)。LLM 仍能因為重複的佔位符保持連貫性而對文件進行推理。
  4. 本地還原 – LLM 的回答會進行後處理:使用儲存的字典將佔位符替換回真實值。

隱私保證是結構性的:第三方處理器永遠不會看到任何真實的個人資料。


技術快照

  • 模型:mmBERT‑base (ModernBERT) 為 token classification 進行微調,0.3 B 密集參數,fp32 檢查點約 1.2 GB,量化後約 0.5 GB 用於 CPU 推理。
  • 訓練資料:約 745 k 標註列(約 45 % 為義大利文),來源為真實資料(Ai4Privacy、DeepMount)加上合成的法律散文,其中包含數學上有效的識別碼。在 16 GB 消費級 GPU 上單 epoch 微調(約 2 小時)。
  • 效能:micro‑F1 = 0.989,token 正確率 = 0.998,在 7k 真義大利留出集上;所有五個義大利法律標籤皆達到完美 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 「side‑car」後端,以及用於程式化使用的簡單 HTTP API。

常見使用情境

  • 律師事務所 & 公證人 – 在將合約、判決書或客戶信件送給強大的 LLM 進行摘要或起草之前,先進行遮蓋,同時保護姓名、稅號與土地登記資料的隱私。
  • 會計師 & 稅務顧問 – 在使用 AI 輔助分析工具之前,對發票、稅務申報表或財務報表進行假名化。
  • 醫療管理員 – 在向 LLM 查詢編碼協助之前,從醫療報告中移除患者識別碼(CF、IBAN 等)。
  • 任何受 GDPR 約束的組織 – 透過確保只有假名化文字離開場所,來滿足資料最小化需求。

開始使用

  1. 下載 – 從 Releases 頁面取得預建的安裝程式/AppImage(Windows、macOS Apple Silicon、Linux)。
  2. 執行 – 啟動應用程式;將 PDF、.txt.md 檔案拖放進去,或直接貼上純文字。
  3. 匿名化 – 點擊 Anonymise;UI 會顯示著色標籤並提供可下載的字典。
  4. 查詢 LLM – 將佔位符純文字複製到您喜愛的 LLM 介面(ChatGPT、Claude、Gemini 等)。
  5. 還原 – 將 LLM 的回答貼回應用程式並點擊 Restore;原始識別碼將重新出現。

對於想要重建或擴充模型的開發者:

  • 克隆儲存庫,建立 Python 3.11 虛擬環境,安裝 requirements.txt(若有 Blackwell GPU 則安裝 PyTorch + CUDA 12.8,否則僅 CPU)。
  • 執行資料生成腳本(src/data_pipeline/*)以重新產生合成語料庫。
  • 使用 src/training/train_pii.py 進行微調(--type quick 用於快速測試,--type full 用於完整的 745 k 列)。
  • 可透過 python src/app/app.py 啟動網頁服務(公開 http://127.0.0.1:5005)。

限制與注意事項

  • 語言焦點 – 針對義大利法律文本進行優化;其他語言的表現無法保證(模型確實支援少數其他語言,但準確度會降低)。
  • 結構化 ID 依賴 – 正則表達式+校驗層對於 IBAN、CF、PIVA 等的完美偵測至關重要;若文件包含格式錯誤的識別碼,則可能被遺漏。
  • 推理時不需要 GPU 加速,但訓練仍需要適度的 GPU(約 16 GB VRAM)。
  • 佔位符衝突 – 相同值會共用同一個佔位符,這是為了保持 LLM 連貫性的設計,但意味著系統無法區分同一值的兩個不同出現。

結論

rizzo‑pii 提供了一個實用的、符合 GDPR‑by‑design 原則的隱私層,讓義大利語使用者能在不暴露個人識別碼的情況下利用強大的雲端 LLM。其微小的 CPU 足跡、可逆的假名化以及法律特定實體覆蓋,使其成為少數可用的開源隱私保護 AI 工具之一。