[错误]: `vacuum` 不会从 HNSW 索引中删除已删除记录的向量
作者: Agenvana创建于 2026年8月31日更新于 2026年9月8日
发生了什么
在配置默认值且持久集合中有 2000 条记录的 chromadb 1.5.9 中,通过 ID 删除 100 条记录后,data_level0.bin 中所有 100 个向量的位元都保持不变。索引文件在删除前和后是完全相同的(SHA-256),并且已删除的 ID 仍然存在于分段的 id_to_label 映射中,因此直接读取文件可以从报告 1900 条记录的集合中恢复 2000 个向量。运行 chroma vacuum --path <store> --force(退出 0)后,将彻底清除这些记录的标识符,而所有 100 个向量仍然保留在原位。我认为这组组合值得您关注:处理删除请求的操作员执行了文档中描述的清理操作,并使用 SQL 进行验证,结果是存储库清洁,并且仍然在磁盘上保存了数据。delete_collection() 同样会将已填充的分段目录保留下来。
内容来源: chroma-core/chroma