上周我们给取证系统装上了"眼睛"——本地多模态视觉模型。成功从一本首版《了不起的盖茨比》中提取出神秘手写题词,全程没有让一个像素流出本地网络。

但感知只是第一步。要把原始文本变成取证结论,往往需要Claude 3.5或GPT-4o这类前沿云模型的"高阶推理"能力。这就陷入了一个隐私悖论:如何把发现结果的上下文发给云端,同时不泄露其中包含的个人身份信息(PII)?

打开网易新闻 查看精彩图片

今天我们实现"主权审查器"——一个精准控制的隔离舱,在数据离开边缘节点前就擦除敏感实体。

核心问题:NLP过度审查

传统审查是钝器。简单正则或基础命名实体识别(NER)模型会把作者"F. Scott Fitzgerald"或出版商"Scribner's"一并涂黑,因为它们被识别为PERSON或ORGANIZATION。

在珍本取证场景中,作者姓名不是PII,而是核心元数据。如果把审计对象的名字都涂掉,云端推理代理就废了。系统必须能区分"要保留的元数据"和"要隐藏的PII"。

技术栈:Microsoft Presidio + spaCy

解决方案是集成Microsoft Presidio。与标准正则不同,Presidio允许定义复杂的"识别器"和"匿名器"管道。

底层NLP引擎采用spaCy的en_core_web_lg(大型)模型。这让审查器具备语言上下文能力,理解"Gatsby"出现在书名里应该保留,但私人信件中作为人名出现的"Gatsby"可能需要删除。

架构设计:默认安全

审查器遵循"默认安全"哲学。编排器不问某个提供商是否"危险",只问它是否本地。

如果提供商是ollama或none,数据保持原样。如果是其他(Anthropic、OpenAI等),"主权保险库"隔离舱自动启动。

精准护盾:白名单机制

为解决"Fitzgerald问题",我们实现了精准控制白名单。审查器扫描文本前,编排器基于主书目动态构建"安全词"列表:

1. 书名
2. 作者姓名
3. 出版商名称

这些实体作为allow_list传给审查器,指示Presidio即使99%确定它们是PERSON或ORGANIZATION也予以忽略。

代码逻辑很直接:定义LOCAL_PROVIDERS = {'ollama', 'none'},非本地提供商自动触发审查流程,返回脱敏文本和实体计数,同时记录日志:"主权保险库:X个实体已从出口数据移除。"

这套机制的核心价值在于:让本地视觉模型和云端推理模型协同工作,既享受前沿模型的分析能力,又把敏感数据锁在本地。对于处理历史文献、法律档案、医疗记录等敏感场景,这种"边缘脱敏+云端推理"的架构可能是平衡智能与隐私的务实路径。