幽灵向量:已删除的嵌入在 RAG 向量数据库中仍可恢复
Trinity College 于 2026 年 6 月的研究表明,HNSW 索引中被「软删除」的向量仍物理留存于磁盘,并可被反演还原为原始文本与图像——这是一处「被遗忘权」缺口。
这是什么?
2026 年 6 月,Chandranil Chakraborttii、Jackeline García Alvarado、Sitora Abdulofizova 与 Shivanshu Dwivedi(Trinity College)发表了 Ghost Vectors: Soft-Deleted Embeddings Remain Reconstructible in HNSW Vector Databases。该论文审视了几乎所有检索增强生成(RAG)架构中一个不被言明的假设:当一条记录从向量数据库中被删除后,数据就已经消失。
通常并非如此。大多数基于 HNSW(Hierarchical Navigable Small World)索引构建的生产级向量数据库,都将删除实现为「软删除」:记录被打上「墓碑」(tombstone)标记,使搜索不再返回它,但底层嵌入仍物理地写在磁盘的索引文件中。作者表明,这些「已删除」的向量可以在存储层直接从原始索引中读取,随后被反演,重建出原始内容的近似。由于嵌入常常编码个人或医疗数据,一次普通的删除请求便成为在 GDPR 第 17 条与 HIPAA 等数据擦除制度下的合规问题。
工作原理
两个事实叠加在一起,且都无需攻击生产环境的查询 API。
其一,软删除并不擦除。为保持速度,HNSW 索引将节点标记为已删除并在遍历时跳过它,把该空间的实际回收推迟到之后(往往很少发生)的压缩或重建。在此之前,向量以及与其一同存储的任何载荷仍留在磁盘上。作者在三种不同的 HNSW 实现中确认了这一行为:读取原始索引文件即可恢复 API 声称已删除的向量,完全绕过访问层。
其二,嵌入并非单向不可逆。团队使用开箱即用、且未做任何领域专用微调的 Vec2Text 反演模型,从恢复出的向量中,在多个真实数据集和多种模态(文本与图像)上重建出可读内容,重建率相当可观。理解这一结果并不需要利用代码:嵌入是其输入的有损但可逆的投影,因此凡能读取向量者,皆可近似还原源文本。此处的威胁模型针对的是任何能触及存储层的人——被窃取的磁盘快照、配置错误的备份存储桶、遗留为可读的云卷,或内部人员——而非通过搜索端点发起查询的远程用户。
为何重要
RAG 管线已在无声中成为敏感文本的长期存储库:客服记录、人力资源档案、临床笔记、合同。团队把嵌入当作不透明、已匿名化的数字块,并将 API 层的删除视为对用户擦除请求的履行。这篇论文一次性推翻了这两个假设。向量可恢复,且可逆——因此「我们已删除」恰恰可能在监管方、审计方或数据泄露通报义务要求其为真的那一刻,是假的。
这一缺口尤其危险,因为从应用自身的视角看它是隐形的。删除后查询 API,记录确已消失;检查索引文件或夜间备份,它却仍在那里。每一个在压缩前捕获了该向量的副本、快照与冷备份,都是这份「被遗忘」数据的独立拷贝。这是RAG 知识库泄露所述检索期泄露在存储层的同宗表亲,也提醒我们——连同多智能体环境下嵌入防御失效等工作——嵌入应当与它们所编码的原始数据受到同等对待。
防御
论文是建设性的:它点明了缺陷,并给出缓解措施。
-
不要把墓碑等同于擦除。 如果你的合规立场声称数据已被删除,那么向量及其载荷必须真正从索引、其副本与其备份中移除,而不仅仅是对搜索隐藏。应安排并核验压缩/重建,而非无限期推迟。
-
以密码学销毁替代软删除。 作者提出 Epoch Key Rotation:对存储的向量加密,并在删除时丢弃密钥,使密文不可恢复。他们报告称,此法将观测到的 PII 重建降至 0%,对 500 个被删除向量约在 2.5 毫秒内完成,并生成一份 ECDSA 签名的删除已发生的证明——一个可向监管方出示的可审计凭证。
-
将嵌入视为受监管数据。 对静态的向量索引加密,以与源语料相同的控制手段限制对原始文件与快照的访问,并将个人或健康数据的嵌入排除于低信任存储之外。
-
将删除扩展至完整数据谱系。 一次经核验的擦除必须触及曾经持有该向量的每一份备份、副本与导出快照。在向用户承诺其数据已消失之前,先盘点这些拷贝。
-
产出删除证据。 对于 GDPR 第 17 条与 HIPAA,一份带时间戳的密码学擦除证明,远比一个返回「未找到」的 API 更为可靠。
状态
| 项目 | 参考 | 日期 | 说明 |
|---|---|---|---|
| Ghost Vectors 论文(arXiv 2606.18497) | arXiv | 2026-06 | Trinity College;分析了三种 HNSW 实现 |
| 恢复方法 | arXiv | 2026-06 | 在存储层读取原始索引文件 + Vec2Text 反演,无需微调 |
| 重建的数据类型 | arXiv | 2026-06 | 多个数据集上的文本与图像嵌入 |
| 合规视角 | arXiv | 2026-06 | GDPR 第 17 条、HIPAA 数据擦除要求 |
| 所提防御 | arXiv | 2026-06 | Epoch Key Rotation:PII 重建 0%,约 2.5 毫秒 / 500 向量,ECDSA 签名的删除证明 |
要点不是「向量数据库坏了」。而是:在 RAG 存储中,删除是存储层的属性,而非一次 API 响应——如果你的擦除保证止步于查询接口,那么每一条被删除记录的幽灵,仍然静静躺在你的索引文件里。