
类型:向量数据库
简介:存储、索引和管理由深度神经网络和机器学习(ML)模型生成的大规模嵌入向量。
本文介绍 Milvus 备份与恢复思路,包括原始文档、切分片段、向量数据、Schema、索引参数、Embedding 模型信息和恢复演练。
一、Milvus 备份不能只备份数据库
很多人理解备份时,只想到把数据库里的数据保存下来。但 Milvus 场景更复杂。向量检索结果由多部分共同决定:
- 原始文档;
- 文本切分规则;
- Embedding 模型;
- 向量数据;
- Collection Schema;
- 索引参数;
- 查询参数;
- 过滤字段。
如果只备份 Milvus 中的向量记录,却没有保存原始文档和切分规则,后续想重建同样结果会很困难。
二、先列出必须备份的对象
备份前建议先做一张清单,明确哪些内容必须保存。
1、原始资料
包括 PDF、Markdown、HTML、Word 文档、产品资料、FAQ、网页内容等。原始资料是重建知识库的源头。
2、切分后的片段
建议保存切分后的文本片段。这样即使需要重新生成向量,也不用重新做文档解析和切分。
3、Collection 配置
包括 Collection 名称、字段名、字段类型、向量维度、主键策略等。
4、索引和查询参数
包括索引类型、metric_type、关键参数、TopK、过滤字段和返回字段。
5、Embedding 信息
包括模型名称、维度、生成时间、是否归一化、调用方式和代码版本。
这些信息缺一部分,恢复后结果都可能和原来不同。
三、按业务频率制定备份周期
备份频率取决于数据变化速度。
1、低频知识库
如果文档一个月才更新一次,可以在每次更新后备份。重点是保留版本记录。
2、高频业务数据
如果每天都有大量数据写入,建议每天备份关键数据,并保留导入日志。高频更新场景还要考虑增量备份和回滚策略。
3、测试环境也要备份配置
测试环境的数据可以少一些,但配置要保存。很多生产问题来自测试环境配置和生产环境不一致。
四、恢复演练比备份文件更重要
备份文件存在,不代表能恢复。真正可靠的备份,必须经过恢复演练。
1、准备一个测试 Collection
不要直接在生产环境验证恢复。可以新建一个测试 Collection,只恢复一小批数据。
2、导入备份数据
按记录恢复 Schema、写入向量数据、创建索引,并配置查询参数。
3、运行固定问题集
使用之前保存的测试问题,检查搜索结果是否接近原环境。如果结果差异明显,要排查模型、维度、metric_type、索引参数和过滤条件。
五、恢复后结果不一致怎么查
恢复后搜索结果变化,通常不是单一原因。可以按下面顺序排查。
1、检查 Embedding 模型
确认恢复时是否使用了同一个模型、同一维度和同一向量处理方式。
2、检查 Schema
字段名、类型、向量维度、主键策略是否和原 Collection 一致。
3、检查索引参数
索引类型、metric_type 和查询参数是否和原环境一致。
4、检查过滤字段
如果恢复后漏掉 status、version、category 等字段,搜索范围可能发生变化。
六、建议保留一份恢复说明文档
恢复说明文档不需要写得很复杂,但要能让别人照着做。
建议包含:
- Milvus 版本;
- 部署方式;
- Collection 名称;
- Schema 配置;
- 索引参数;
- Embedding 模型;
- 数据来源;
- 备份文件位置;
- 恢复步骤;
- 验证问题集。
当真正发生故障时,一份清晰的恢复说明,比临时回忆命令可靠得多。
七、什么时候需要做备份检查
以下情况建议主动检查备份:
- 大批量导入前;
- 大批量删除前;
- 更换 Embedding 模型前;
- 升级 Milvus 前;
- 调整索引参数前;
- 迁移服务器前;
- 上线新知识库前。
备份不是出事后才想起来的动作,而是每次高风险变更前的准备工作。
FAQ
Q1:只备份 Milvus 数据够不够?
A:通常不够。还需要备份原始文档、切分片段、模型信息、Schema 和索引参数。
Q2:为什么恢复后搜索结果变了?
A:常见原因是模型、维度、索引参数、metric_type、过滤字段或切分规则不一致。
Q3:备份多久做一次合适?
A:取决于数据更新频率。高频更新可以每天备份,低频资料可在每次更新后备份。

