RAG 知识库里的个人信息被要求删除,怎么做到彻底删除?

第 1244 题 约 2 分钟读完

本文目录
  1. 面试怎么回答
  2. 个人信息可能存在的地方
  3. 设计的关键:血缘可追踪
  4. 删除流程
  5. 模型里的信息怎么办

面试怎么回答

一份文档进入 RAG 后会派生出原始文件的多个版本、解析文本、切片、向量、全文索引、各种缓存、对话日志、评测和微调数据集以及备份,所以删除的前提是血缘可追踪:切片记录来源文档和版本,向量记录切片 ID,缓存元数据记录涉及的文档,数据集记录样本来源。流程是通过用户标识和实体识别定位涉及的文档和日志,按血缘级联删除或脱敏后重新处理,清理缓存,处理对话日志,备份按周期过期或恢复时重删,删除后用该用户标识检索验证,并留下审计记录。如果信息已经进入微调数据,模型层面很难精确删除,只能在下次训练时剔除并在输出层过滤,所以最好在训练前就清洗个人信息。

先把这段讲顺;面试官追问时,再展开下面的原理和细节。

详细讲解

用户依法提出删除个人信息的请求,业务数据库里删了,数仓里也删了。但这个用户的信息还存在于:知识库的文档切片里、向量索引里、缓存的回答里、对话日志里、甚至微调数据里。面试官问这题,想看你是否意识到 AI 系统让「删除」变得更复杂,以及怎么设计才能删干净。

个人信息可能存在的地方

一份文档进入 RAG 后,会派生出很多副本:

  • 原始文件(对象存储,可能有多个版本);
  • 解析后的文本;
  • 切片(Chunk);
  • 向量(向量索引中,可能有多个副本、多个版本的索引);
  • 全文检索索引;
  • 缓存:检索结果缓存、回答缓存;
  • 对话日志:用户问过的问题和模型给出的回答中可能引用了这些信息;
  • 评测集、微调数据集中可能用到了相关内容;
  • 备份。

设计的关键:血缘可追踪

能删干净的前提是知道一条数据派生出了哪些东西:

  • 每个切片记录来源文档 ID 和版本;
  • 每条向量记录对应的切片 ID;
  • 缓存的 key 或元数据中记录涉及的文档 ID;
  • 数据集记录样本来源。

这样,从「某个用户的信息出现在哪些文档中」出发,能找到所有的派生数据。

删除流程

  1. 定位:通过用户标识在文档、对话日志等数据中搜索(结构化字段 + 文本中的姓名、手机号等实体识别),找出涉及的文档和记录;
  2. 级联删除或脱敏:根据血缘删除原始文件及其所有版本、文本、切片、向量、全文索引条目;能脱敏的文档(比如只是在一份会议纪要中提到了用户)可以脱敏后重新处理;
  3. 清理缓存:失效相关的缓存;
  4. 处理日志:对话日志中的相关内容删除或脱敏;
  5. 备份:按备份的保留周期自然过期,或者在恢复时重新执行删除;
  6. 验证:删除后用该用户的标识检索,确认无法再检索到;
  7. 记录:删除请求、执行范围、完成时间形成审计记录。

模型里的信息怎么办

如果个人信息进入了微调的训练数据,模型可能已经「记住」了。从模型中删除特定信息目前没有成熟可靠的通用方法,通常需要:

  • 从训练数据中删除后,在下一次训练时生效;
  • 在输出层增加过滤,防止模型输出这些信息;
  • 最好的办法是预防:训练数据在进入训练前就做个人信息的清洗。