Milvus数据更新与删除

2026-06-29 4
Milvus

类型:向量数据库

简介:存储、索引和管理由深度神经网络和机器学习(ML)模型生成的大规模嵌入向量。

本文介绍 Milvus 数据更新和删除方法,包括版本字段设计、upsert 思路、按条件删除、软删除、旧数据清理和回滚验证。

一、向量数据更新不能只看“覆盖”

知识库、商品库和搜索库都会遇到数据更新。文档内容变了,商品信息改了,旧版本资料失效了,都需要更新 Milvus 中的数据。

很多人会想到“直接覆盖旧数据”。但在正式项目里,直接覆盖并不总是最安全。因为你需要知道:

  1. 哪些数据来自旧版本;
  2. 新版本是否已经验证可用;
  3. 如果新版本效果不好,能不能回滚;
  4. 删除操作是否会误删其他数据。

因此,Milvus 数据更新更推荐按版本管理,而不是简单覆盖。

二、先给数据加上版本字段

如果早期没有版本字段,后面更新会很难。建议在 Collection 中保留这些字段:

  • doc_id:文档编号;
  • chunk_id:片段编号;
  • version:版本号;
  • status:状态;
  • source:来源;
  • updated_at:更新时间。

1、doc_id 用来定位文档

同一份文档可能被切成多个片段,这些片段应共享同一个 doc_id。更新整份文档时,就可以按 doc_id 找到相关片段。

2、version 用来区分新旧内容

例如:

  • 2026-06
  • v1
  • v2
  • 2026-q3

版本号不一定复杂,但要稳定、可识别。

3、status 用来做软删除

可以用 activeinactive 标记数据是否参与检索。软删除的好处是更安全,出问题时还能恢复。

三、推荐的更新流程

正式项目中,建议按下面顺序更新数据。

1、先写入新版本

不要一开始就删除旧版本。先把新文档切分、生成向量,并写入新的 version

2、用测试问题验证新版本

写入后,用固定问题集测试。重点看:

  1. 是否命中新内容;
  2. 是否还命中过期内容;
  3. 返回来源是否正确;
  4. 回答是否符合业务预期。

3、确认后再清理旧版本

确认新版本可用后,再按 doc_id 和旧 version 删除旧数据,或把旧数据状态改为 inactive

这种方式比直接覆盖更稳妥。

四、upsert 适合哪些场景

Milvus 官方文档提供了数据插入、更新、删除等操作能力。具体是否使用 upsert,要结合主键策略和当前版本支持情况。

1、适合主键明确的数据

如果每条记录都有稳定主键,upsert 可以用于替换同一主键的数据。

2、不适合混乱主键的数据

如果片段 ID 每次切分都会变化,就不适合直接按主键覆盖。此时更适合按 doc_id + version 写入新批次,再清理旧批次。

3、更新前先备份导入日志

无论使用 insert、upsert 还是 delete,都建议保存导入日志。日志能告诉你这批数据从哪里来、切了多少片、写入了多少条。

五、删除数据前先统计影响范围

删除操作要谨慎。按条件删除前,应先用相同条件查询或统计,确认会影响哪些记录。

1、常见删除条件

可以按这些条件删除:

  1. 某个 doc_id
  2. 某个旧 version
  3. status = inactive 的数据;
  4. 某个来源文件;
  5. 某个分类下的过期数据。

2、不要使用过宽条件

如果条件写得太宽,可能误删大量数据。例如只按分类删除,而没有加版本或来源限制,就可能删掉仍在使用的数据。

六、软删除更适合高风险更新

软删除不是立即删除记录,而是把状态改为不可用,例如把 status 设置为 inactive。搜索时通过过滤条件只检索 active 数据。

软删除适合:

  1. 数据很重要;
  2. 需要回滚;
  3. 更新频繁;
  4. 删除条件不容易完全确认。

等确认旧数据确实不再需要后,再定期做物理清理。

七、回滚时怎么做

如果新版本上线后发现结果不准,可以按下面方式回滚:

  1. 把新版本状态改为 inactive
  2. 把旧版本状态恢复为 active
  3. 重新加载或刷新搜索逻辑;
  4. 用固定问题集验证结果;
  5. 记录回滚原因。

回滚能不能顺利,取决于你是否保留了旧版本数据和导入日志。

FAQ

Q1:更新数据时一定要删除旧数据吗?

A:不一定。可以先使用版本字段和状态字段控制是否参与检索,确认无误后再清理旧数据。

Q2:软删除会不会占用空间?

A:会占用一定存储,但它更安全。可以定期清理长期不用的 inactive 数据。

Q3:为什么要保留导入日志?

A:导入日志可以帮助追踪数据来源、切分规则、模型版本和写入批次,是回滚和排错的重要依据。

  • 广告合作

  • QQ群号:4114653

温馨提示:
1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com(#改为@)。 2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。
Milvus
上一篇: Milvus相似度搜索
Milvus
下一篇: Milvus备份与恢复