从阿里云Milvus Beta版或自建集群向阿里云Milvus版的迁移方案

阿里云向量检索服务Milvus版是由阿里云与Zilliz联合打造的一款全托管向量检索引擎,集成Zilliz商业版内核,并确保与开源Milvus的完全兼容性,支持无缝迁移。本文主要介绍如何使用迁移工具,将存量数据从阿里云Beta版Milvus集群或用户自建的Milvus集群,迁移到阿里云Milvus Zilliz内核版集群的方案。

前提条件

  • 已创建阿里云Beta版Milvus集群或自建的Milvus集群。

  • 已安装Docker,详情请参见Docker官方文档

    说明

    迁移工具在容器环境中运行,因此需要确保Docker已安装。

使用限制

  • 源集群和目标集群的Milvus版本必须大于2.3.0。

  • 确保客户端的网络环境可以访问源集群和目标集群。

  • 确认源集群内的Collection处于已加载(Loaded)状态。

    说明

    如果目标集群中没有该Collection,迁移工具会自动创建该Collection。但需要注意的是,迁移完成后,目标集群的索引不会自动创建,需要您手动创建相应的索引。

注意事项

该迁移方案专注于存量数据的迁移。如果在迁移过程中,Collection不断接收到新的数据录入(即增量数据),那么迁移将无法自动包含这些增量的数据。

迁移流程

步骤一:下载迁移工具

下载迁移工具milvus-migration-tool-0.1.26.tar.gz。该迁移工具是免安装版,直接解压即可使用。

步骤二:配置迁移工具

  1. 进入解压缩后的milvus-migration-tool目录。

  2. 修改configs目录下的migration.yaml文件。

    migration.yaml文件内容示例如下所示。

    dumper:
      worker:
        workMode: milvus2x  # 定义工具模式,设置为milvus2x即可,代表迁移至milvus2.x。
        reader:
          bufferSize: 500   # 每次从源集群批量读取数据的行数。
    
    meta:
      mode: config         # 设置为config即可,声明从配置文件中读取元数据配置。
      version: 2.3.0       # 源集群版本,设置为2.3.0及以上。
      collection: "*"      # 从该源集合迁移数据,'*'表示在脚本模式下所有集合。
    
    source:
      milvus2x:
        endpoint: {milvus2x_domain}:{milvus2x_port} 
        database: xxxx 
        username: xxxx 
        password: xxxxx 
    
    
    target:
      milvus2x:
        endpoint: {milvus2x_domain}:{milvus2x_port}
        database: xxxx 
        username: xxxx  
        password: xxxxx 
    
    index:
      mode: manual             # 指定索引模式。取值为migration、new和manual。
    

    涉及以下参数需要您根据实际情况进行替换。

    参数

    说明

    version

    源集群的Milvus版本。

    collection

    源集群的Collection名称。*表示需要对所有Collection进行操作。

    本文示例中,源集群仅包含一个名为milvus_collection的集合。

    endpoint

    源集群或者目标集群的Endpoint。

    如果是阿里云Beta版Milvus集群,则格式为c-xxx.milvus.aliyuncs.com:19530或者c-xxx-internal.milvus.aliyuncs.com:19530,其中c-xxx为Milvus集群的ID。

    database

    源集群或者目标集群的数据库名称。不指定时默认为default。

    username

    源集群或者目标集群用于登录数据库的账号。如果是阿里云Beta版Milvus集群,则使用root账号。

    password

    源集群或者目标集群用于登录数据库账号的密码。

    index.mode

    指定索引模式。取值为:

    • manual(默认):不迁移索引。迁移完成后如需创建索引,请参见(可选)步骤四:创建索引

    • migration:迁移源集群的索引。

    • new:将全量切换至商业化特性AUTOINDEX的索引。

步骤三:启动迁移工具

在迁移工具的milvus-migration-tool目录下,执行以下命令。

bin/milvus-migration script

整体迁移完成之后,您可以看到类似如下返回信息。

2024-09-27 06:39:14,346 INFO Collection pending migration: ['milvus_collection']
2024-09-27 06:39:14,347 INFO Starting to migrate collection: milvus_collection, current progress: 1/1
2024-09-27 06:39:14,464 INFO Successfully migrated data on collection: milvus_collection

(可选)步骤四:创建索引

迁移数据完成后,如需为Collection创建相应的索引,请参阅以下示例。

AUTOINDEX

HNSW

IVF_FLAT

AUTOINDEX索引的更多详情,请参见使用AUTOINDEX

from pymilvus import MilvusClient

# 创建Milvus Client。
client = MilvusClient(
    uri="http://c-xxxx.milvus.aliyuncs.com:19530",  # Milvus实例的公网地址。
    token="<yourUsername>:<yourPassword>",  # 登录Milvus实例的用户名和密码。
    db_name="default"  # 待连接的数据库名称,本文示例为默认的default。
)

index_params = MilvusClient.prepare_index_params()

index_params.add_index(
    field_name="vector",
    metric_type="L2",
    index_type="AUTOINDEX",
)

client.create_index(
    collection_name="src_collection_name",
    index_params=index_params
)

client.load_collection(
    collection_name="src_collection_name"
)
### 如何在阿里云上使用 Milvus #### 1. 准备工作 为了成功部署和配置 Milvus,需先完成以下准备工作: - 创建一个阿里云账号并开通相关服务。 - 安装 Docker 和 Docker Compose,因为 Milvus Standalone 分布式本通常通过容器化的方式运行[^2]。 #### 2. 部署 Milvus Milvus 可以作为独立实例(Standalone)集群模式(Cluster)进行部署。以下是两种主要的部署方法: ##### (a) 单机(Standalone) 单机适用于开发测试环境小型生产环境。可以通过以下命令快速启动 Milvus Standalone 实例: ```bash docker run --name milvus-standalone -d \ -p 19530:19530 \ -p 8080:8080 \ registry.zilliz.com/milvus/milvus:v2.2.3 ``` 此命令将下载官方镜像 `registry.zilliz.com/milvus/milvus` 并启动容器,其中端口 `19530` 是用于 gRPC 接口,而 `8080` 则是 HTTP API 的默认监听端口[^1]。 ##### (b) 分布式部署 对于更高性能需求的应用场景,可以采用分布式架构。这需要额外的服务组件支持,例如 etcd 和 MinIO。以下是典型的分布式部署流程: ```bash # 启动依赖服务 docker-compose up -d milvus-etcd milvus-minio # 启动 Milvus 主节点 docker-compose up -d milvus-distributed ``` 需要注意的是,创建这些服务可能耗时较长,请保持耐心等待直到所有服务都显示为 `done` 状态。 #### 3. 配置 Milvus 无论是单机还是分布式部署,都需要对 Milvus 进行必要的参数调整来适配实际业务需求。常见的配置项包括但不限于以下几个方面: - **存储路径设置**:指定数据持久化的目录位置; - **内存分配策略**:定义缓存大小以及索引构建过程中的资源占用比例; - **网络连接选项**:修改绑定地址以便外部访问。 具体的配置文件位于 `/milvus/configs/` 下,默认名称为 `config.yaml`。可以根据官方文档指导编辑该文件内的字段值[^1]。 #### 4. 整合 RAG 技术于医疗领域 如果目标是在医疗机构内部搭建基于 Milvus 的检索系统,则可参照如下思路实施: - 构建知识库:把疾病百科 PDF、临床指南 CSV 文件上传到 OSS 上面,并利用通义千问 Max 对其做深入分析提取特征向量[^3]。 - 应用 Embedding 模型 bge-m3 转换文本成稠密表示形式后存入 Milvus 数据库里形成高效索引结构[^3]。 最后一步就是设计前端界面供医护人员输入查询条件并通过调用后端接口返回最匹配的结果列表给用户查看。 ### 示例代码片段 下面给出一段简单的 Python SDK 使用例子展示如何插入一条记录到集合里去: ```python from pymilvus import connections, FieldSchema, CollectionSchema, DataType, Collection connections.connect() fields = [ FieldSchema(name="id", dtype=DataType.INT64, is_primary=True), FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=768) ] schema = CollectionSchema(fields) collection_name = "example_collection" if not Collection.has(collection_name): collection = Collection(name=collection_name, schema=schema) else: collection = Collection(name=collection_name) data_to_insert = [[i for i in range(10)], [[float(j)/100+i for j in range(768)]for i in range(10)]] collection.insert(data=data_to_insert) print(f"{len(data_to_insert[0])} entities inserted.") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值