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 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、信用卡号),确定性的 regex + mod‑97/Luhn 检查会覆盖神经标注器,保证数学上正确的检测。 |
| 微小 CPU 友好占用 | 约 0.3 B 密集参数,~0.5 GB RAM,可在任何 64‑bit CPU 上运行 – 推理时不需要 GPU。 |
它是如何工作的(工作流程)
- 本地标注 – 模型扫描文档,输出 22 类别的 BIO 标签,并由确定性的 regex/校验层捕捉结构化 ID。
- 占位符替换 – 每个跨度被类型感知的占位符替换(如
[IBAN_1],[CF_1]…),并将映射保存到磁盘。 - 发送到前沿 LLM – 只有占位符纯文本被发送到远程模型(ChatGPT、Claude、Gemini …)。LLM 仍能因为重复的占位符保持连贯性而对文档进行推理。
- 本地还原 – 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 约束的组织 – 通过确保只有假名化文本离开场所,来满足数据最小化需求。
开始使用
- 下载 – 从 Releases 页面获取预构建的安装程序/AppImage(Windows、macOS Apple Silicon、Linux)。
- 运行 – 启动应用程序;将 PDF、
.txt或.md文件拖放进去,或直接粘贴纯文本。 - 匿名化 – 点击 Anonymise;UI 会显示彩色标签并提供可下载的字典。
- 查询 LLM – 将占位符纯文本复制到您喜爱的 LLM 界面(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用于快速测试,--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 工具之一。