Milvus 迁移概述
认识到用户群的多样化需求,Milvus 扩展了其迁移工具,不仅便于从 Milvus 1.x 早期版本升级,还能无缝集成来自Elasticsearch和Faiss 等其他系统的数据。Milvus 迁移项目旨在弥合这些不同数据环境与 Milvus 技术最新进展之间的差距,确保您能无缝利用改进的功能和性能。
支持的迁移
Milvus-migration工具支持多种迁移路径,以满足不同用户的需求:
- 从 Elasticsearch 迁移到 Milvus 2.x:使用户能够从 Elasticsearch 环境迁移数据,以利用 Milvus 的优化向量搜索功能。
- Faiss 到 Milvus 2.x:为从 Faiss(一种用于高效相似性搜索的流行库)传输数据提供实验支持。
- Milvus 1.x 到 Milvus 2.x:确保早期版本的数据顺利过渡到最新框架。
- Milvus 2.3.x 到 Milvus 2.3.x 或更高版本:为已迁移至 2.3.x 的用户提供一次性迁移路径。
特点
Milvus-migration 具有强大的功能,可处理各种迁移情况:
- 多种交互方式:你可以通过命令行界面或Restful API来执行迁移,并可灵活掌握迁移的执行方式。
- 支持各种文件格式和云存储:Milvus 迁移工具可以处理存储在本地文件以及 S3、OSS 和 GCP 等云存储解决方案中的数据,确保广泛的兼容性。
- 数据类型处理:Milvus-migration既能处理向量数据,也能处理标量字段,是满足不同数据迁移需求的多功能选择。
架构
Milvus-migration的架构设计具有战略意义,可促进高效的数据流、解析和写入过程,实现跨各种数据源的强大迁移能力。
Milvus-迁移架构
在上图中
- 数据源 Milvus-migration支持多种数据源,包括通过scroll API读取的Elasticsearch、本地或云存储数据文件,以及Milvus 1.x数据库。这些数据都可以通过简化的方式访问和读取,从而启动迁移过程。
- 流水线:
- 解析过程:来自数据源的数据将根据其格式进行解析。例如,对于来自 Elasticsearch 的数据源,会使用 Elasticsearch 格式解析器,而其他格式则使用各自的解析器。这一步对于将原始数据转换为可进一步处理的结构化格式至关重要。
- 转换过程:解析后,数据将进行转换,根据目标 Milvus 2.x 模式过滤字段、转换数据类型并调整表名。这可确保数据符合 Milvus 的预期结构和类型。
- 数据写入和加载
- 写入数据:将处理后的数据写入中间 JSON 或 NumPy 文件,以便加载到 Milvus 2.x 中。
- 加载数据:使用BulkInsert操作将数据最终加载到 Milvus 2.x,该操作可高效地将大量数据写入 Milvus 存储系统(基于云或文件存储)。
未来计划
开发团队致力于通过以下功能增强Milvus 迁移功能:
- 支持更多数据源:计划扩展对其他数据库和文件系统的支持,如 Pinecone、Chroma 和 Qdrant。如果你需要特定数据源的支持,请通过GitHub 问题链接提交请求。
- 命令简化:努力简化命令流程,使其更易于执行。
- SPI 解析器/转换器:该架构有望包含用于解析和转换的服务提供商接口 (SPI) 工具。这些工具允许自定义实现,用户可将其插入迁移过程,以处理特定的数据格式或转换规则。
- 检查点恢复:允许迁移从上一个检查点恢复,以提高迁移中断时的可靠性和效率。将创建保存点以确保数据完整性,并将保存点存储在 SQLite 或 MySQL 等数据库中,以跟踪迁移过程的进度。