【向量检索引擎】Delete · Upsert · TTL:软删、覆盖写与过期回收

💡 原文中文,约3300字,阅读约需8分钟。
📝

内容提要

本文讨论了向量库中的删除、更新和过期策略。删除操作可通过过滤或主键进行,采用软删方式以保持数据一致性。更新操作(Upsert)根据主键决定插入或更新,提供覆盖和合并两种模式。集合的TTL属性允许自动删除过期数据,删除和更新操作的可见性受一致性约束。逻辑删除和物理回收是分开的,需注意容量规划。

🎯

关键要点

  • 向量库的删除操作可以通过过滤表达式或主键进行,支持按属性批量删除和精确删除。

  • 删除操作采用软删方式,使用bitset标记删除的实体,确保搜索时不参与计算。

  • Upsert操作根据主键决定是插入新实体还是更新已有实体,提供覆盖和合并两种模式。

  • TTL属性允许集合中的数据在过期后自动删除,删除过程是异步的,物理删除依赖于后续的垃圾回收和压缩周期。

  • 删除和更新操作的可见性受一致性约束,逻辑不可见并不意味着磁盘空间立即减少。

  • 高频的upsert操作可能导致大量的删除和插入,影响系统性能和资源使用。

🔎

延伸解读

软删的优势与挑战

软删通过bitset标记删除的实体,确保在搜索时不参与计算,从而维护数据一致性。然而,这种方式并不立即释放磁盘空间,实际的物理回收依赖于后续的compaction过程。因此,用户在进行数据删除时需考虑到这一延迟,避免误判系统的存储状态。

Upsert操作的复杂性

Upsert操作分为覆盖和合并两种模式,覆盖模式实际上是先删除旧实体再插入新实体,这可能导致频繁的删除和插入,影响系统性能。用户在设计数据更新策略时,应评估操作频率与系统资源的关系,以避免性能瓶颈。

TTL与数据管理

TTL属性允许自动删除过期数据,但删除过程是异步的,可能导致短期内逻辑不可见与物理空间未及时回收之间的矛盾。用户在进行容量规划时,需考虑TTL设置对存储空间的影响,避免因过期数据未及时清理而导致的存储不足问题。

延伸问答

向量库的删除操作是如何进行的?

向量库的删除操作可以通过过滤表达式或主键进行,支持按属性批量删除和精确删除。

什么是软删,如何实现?

软删是通过bitset标记删除的实体,使其在搜索时不参与计算,确保数据一致性。

Upsert操作的两种模式是什么?

Upsert操作有覆盖模式和合并模式,覆盖模式插入新数据并删除旧实体,合并模式则在已有实体上合并字段更新。

TTL属性在向量库中有什么作用?

TTL属性允许集合中的数据在过期后自动删除,删除过程是异步的,物理删除依赖于后续的垃圾回收和压缩周期。

删除和更新操作的可见性受什么约束?

删除和更新操作的可见性受一致性约束,逻辑不可见并不意味着磁盘空间立即减少。

高频的Upsert操作会带来什么影响?

高频的Upsert操作可能导致大量的删除和插入,影响系统性能和资源使用。

🏷️

标签

➡️

继续阅读