privacy-filter.cpp 是一个用 C++/GGML 实现的轻量级 PII/NER 隐私信息识别推理引擎,面向 OpenAI privacy-filter 系列 token-classification 模型。它可以从文本中识别姓名、邮箱、电话、地址、证件号等敏感实体,并返回精确的 UTF-8 字节偏移。项目支持 CPU、Vulkan、CUDA 后端,提供 CLI、C API、GGUF 模型转换脚本和测试/验证工具,重点优势是长文本场景下比 Hugging Face Transformers 更低内存、更高吞吐。
适用领域
隐私保护 / PII 检测 / NER 命名实体识别 / 大模型数据治理 / 本地化 AI 推理 / 合规审计 / 日志脱敏 / 边缘设备 AI / C/C++ 推理引擎 / GGML/GGUF 模型部署
配置难度
中等。直接使用 CLI 和预转换 GGUF 模型较简单;但如果要在生产系统中集成 C API、启用 CUDA/Vulkan、转换自定义模型、做中文业务评测和合规级脱敏,需要具备 C++ 构建、模型推理、GPU 环境和数据安全工程经验。
商业价值
该项目适合用于构建企业级本地隐私过滤、数据脱敏和 LLM 输入输出安全网关。它的核心商业价值在于减少敏感数据外泄风险、降低对外部 API 的依赖、提升长文本 PII 扫描性能,并能以较低资源成本部署在服务器或边缘设备上。对于金融、医疗、政企、客服、日志治理、RAG 数据治理等场景,可作为隐私合规基础组件集成到现有数据处理和 AI 应用链路中。
01
技术亮点
- 相比 Hugging Face Transformers,在长文本 PII 检测上速度和内存优势明显
- GPU 场景下 README 报告可处理 131k token 文档,而 HF 在 16GiB 显存下约 16k token OOM
- CPU 8k token 场景报告约 7.7 倍加速
- 支持 Raspberry Pi 5 等边缘设备本地推理,适合离线隐私检测
- 返回精确 UTF-8 字节偏移,便于直接做文本脱敏、替换和审计
- 提供预转换 GGUF 模型,降低部署门槛
- 自带 Hugging Face checkpoint 到 GGUF 的转换脚本,不依赖 llama.cpp converter
- 提供稳定的 C API,便于绑定到 Go、Python、Rust 等语言
- 支持 CPU、Vulkan、CUDA 多后端
- 项目包含 parity 验证、tokenizer 差分测试、fuzz 测试等质量保障措施
- MIT License,便于商业集成
02
目标用户
- 需要在本地或私有环境中检测敏感信息的后端开发者
- 构建日志、工单、客服记录、医疗文本脱敏系统的工程团队
- 关注数据合规、隐私保护、DLP 的安全团队
- 希望避免调用外部 API 处理敏感数据的企业开发者
- 需要在 CPU、GPU 或边缘设备上部署 NER/PII 模型的 AI 工程师
- 使用 C/C++、Go、Python ctypes/cgo 等集成底层推理库的开发者
- LocalAI、私有 LLM 网关、RAG 平台、数据清洗平台的开发团队
03
配置要求
- 需要 CMake 和支持 C++ 的编译器
- 仓库依赖 GGML,建议使用 --recursive 克隆以获取子模块
- 模型文件需要为 GGUF 格式,架构为 openai-privacy-filter
- CPU 推理可直接使用;多线程数可通过 C API 的 n_threads 参数控制
- GPU 推理需要额外编译 Vulkan 或 CUDA 后端
- Vulkan 后端需要 Vulkan SDK/headers、loader 和 glslc
- CUDA 后端需要 CUDA Toolkit,并可能需要针对新 GPU 架构设置 CMAKE_CUDA_ARCHITECTURES
- 模型转换脚本依赖 Python、torch、safetensors、gguf 等 requirements.txt 中的包
- C API 调用时需要管理 pf_ctx 生命周期,并用 pf_entities_free / pf_buf_free 释放返回缓冲区
- 长文本可通过 pf_set_window(ctx, max_forward_tokens) 设置窗口大小,窗口值大于 2048 时启用分窗处理
04
适用场景
- 在发送文本到大模型之前,自动识别并打码邮箱、手机号、姓名、地址等 PII 信息
- 对日志、客服对话、工单、医疗记录、金融文档进行批量隐私扫描
- 在企业内部构建离线敏感数据检测服务,避免数据传出内网
- 为 RAG 数据入库前增加隐私过滤步骤
- 在边缘设备或低资源服务器上运行隐私识别,例如 Raspberry Pi 本地扫描
- 在 LLM 网关中实现请求/响应内容的实时 PII 检测与拦截
- 替代部分基于 Python Transformers 的隐私识别服务,以降低延迟和显存占用
- 通过 C API 嵌入到 Go、Rust、Python、Java 等上层服务中
05
部署与配置
- 克隆仓库并拉取子模块:git clone --recursive <repo>
- 构建 CPU 版本:cmake --preset release && cmake --build --preset release -j
- 如需 Vulkan 后端,安装 Vulkan headers、loader 和 glslc,然后配置 -DPF_VULKAN=ON
- 如需 CUDA 后端,安装 CUDA Toolkit,然后配置 -DPF_CUDA=ON;新架构 GPU 可能需要手动指定 CMAKE_CUDA_ARCHITECTURES
- 下载预转换的 GGUF 模型,例如 LocalAI-io/privacy-filter-multilingual-GGUF、LocalAI-io/privacy-filter-GGUF 或 LocalAI-io/privacy-filter-nemotron-GGUF
- 查看模型信息:build/release/pf-cli --info model.gguf
- 运行分类示例:echo "Contact John Doe at jdoe@example.com" | build/release/pf-cli --classify model.gguf 0.5
- 如需自行转换 Hugging Face checkpoint,执行 pip install -r scripts/requirements.txt,然后运行 python scripts/convert.py --model <hf-model-dir> --outfile model-f16.gguf
06
风险与注意事项
- 项目 star 数约 217,生态和社区规模仍较小,生产环境采用前需要充分验证
- 模型效果取决于所使用的 privacy-filter checkpoint,不保证覆盖所有行业专有敏感字段
- PII/NER 检测存在误报和漏报风险,不能作为唯一合规保障措施
- C++/C API 集成需要注意内存释放、ABI 兼容和异常处理边界
- GPU 后端编译依赖环境较复杂,Vulkan/CUDA 在不同平台上可能需要额外调试
- 中文场景效果需要实测,虽然有 multilingual 模型,但具体类别、召回率和边界准确性应结合业务数据评估
- 长文本窗口和阈值设置会影响召回率、速度和误报,需要根据场景调参
- 处理敏感数据时仍需做好访问控制、日志保护和结果存储安全
- README 中的性能数据来自特定硬件和配置,实际部署性能可能不同
2026-06-20
第30名
新收录 · github_search