背景介绍
在如今大数据和人工智能应用场景中,企业往往需要对存储在云数据仓库(如云原生大数据计算服务 MaxCompute)中的大规模结构化数据进行向量化处理,以支持高效的向量检索和相似性分析等AI应用。
阿里云向量检索服务Milvus版是一款全托管向量检索引擎,并确保与开源Milvus的完全兼容性,支持无缝迁移。它在开源版本的基础上增强了可扩展性,能提供大规模AI向量数据的相似性检索服务。凭借其开箱即用的特性、灵活的扩展能力和全链路监控告警,Milvus云服务成为多样化AI应用场景的理想选择,包括多模态搜索、检索增强生成(RAG)、搜索推荐、内容风险识别等。您还可以利用开源的Attu工具进行可视化操作,进一步促进应用的快速开发和部署。
结合MaxCompute与Milvus,可充分整合MaxCompute在处理海量结构化数据(如日志、元数据)及执行复杂计算(如特征工程、模型训练)方面的算力优势,同时利用Milvus高效存储与检索高维向量的性能特性,能够支撑电商用户行为分析、医疗知识库构建及游戏内容推荐等多种场景。并通过结构化数据处理与向量检索能力的协同,实现多模态数据的融合分析,满足行业应用中对高维度特征检索与复杂逻辑计算的双重需求。
然而,如何将存储在MaxCompute中的大规模结构化数据高效、稳定地导入Milvus,成为企业在数据智能化转型过程中的一大挑战。
DataWorks作为一站式智能大数据开发治理平台,提供了强大的数据集成服务。用户可以通过DataWorks的数据集成服务实现无缝同步。本文介绍如何利用DataWorks,快速完成从MaxCompute到Milvus的离线数据同步。
前提条件
- 已在Milvus中创建Milvus实例。
- 已在MaxCompute中创建MaxCompute项目。
- DataWorks环境准备:
- 已创建工作空间。
- 已购买所需DataWorks资源组绑定至相应的工作空间,详情请参见新增和使用独享数据集成资源组。
操作流程
步骤一:数据准备
以下数据仅供测试使用,请您根据实际情况准备相应的数据。
- 在MaxCompute创建表。
本文使用的建表语句及数据如下所示。
CREATE TABLE dl_1216.`default`.mc_table ( id INT, namespace STRING, vector ARRAY<DOUBLE> ); INSERT INTO dl_1216.`default`.mc_table VALUES(100, 'aaa', array(1554047123.0, 1554047123.0)); INSERT INTO dl_1216.`default`.mc_table VALUES(200, 'bbb', array(1554047999.0, 1554047999.0)); SELECT * FROM dl_1216.`default`.mc_table;
- 在Milvus创建Collection。
本文通过Attu页面创建Collection,您也可以通过Python SDK方式来创建,详情请参见创建Collection。
步骤二:新增数据源
- 进入数据集成页面。
登录DataWorks控制台,切换至目标地域,单击左侧导航栏的数据集成 > 数据集成,在下拉框中选择对应工作空间后单击进入数据集成。
- 在左侧导航栏单击数据源,然后单击新增数据源。
- 新增Milvus和MaxCompute数据源。
DataWorks通过创建数据源的方式,接入数据来源和数据去向,因此,本步骤需要分别创建Milvus和MaxCompute两个数据源。
- 创建Milvus数据源
- 在新增数据源的搜索栏中,选择数据源类型为Milvus数据源。
- 在新增Milvus数据源对话框中,配置以下基础信息,其余参数保持默认值即可。
参数 |
说明 |
数据源名称 |
本示例为Milvus_Source。 |
配置模式 |
选择阿里云实例模式。 |
地域 |
选择华东1(杭州)。 |
实例 |
选择已创建的Milvus实例。 |
数据库名称 |
配置为 |
用户名 |
输入用户名 |
密码 |
输入Milvus实例的密码。 |
- 创建MaxCompute数据源
- 在新增数据源的搜索栏中搜索并单击MaxCompute。
- 在新增MaxCompute数据源对话框中,配置以下基础信息,其余参数保持默认值即可。
参数 |
说明 |
数据源名称 |
本示例为MaxCompute_Source。 |
地域 |
选择华东1(杭州)。 |
MaxCompute项目名称 |
选择已在MaxCompute中创建的项目名。 |
默认访问身份 |
选择阿里云主账号。 |
- 在连接配置区域,找到工作空间已绑定的资源组,单击连通状态列的测试连通性。
- 如果测试资源组连通性状态为可连通,即完成新增数据源的创建。
- 如果显示无法连通,表示资源组与数据源无法连通,后续相应数据源任务将无法正常执行,此时您需要根据右侧弹出的连通性诊断工具窗口,自助解决连通性问题,连通性诊断工具会提示目前连通失败的原因,请根据提示进行修改调整。
- 单击完成。
步骤三:配置同步任务
- 在左侧导航栏中选择同步任务,对同步任务的来源和去向进行设置,然后单击新建同步任务。
- 在新建同步任务页面,同步类型选择为单表离线,然后单击确定,前往DataStudio页进行数据传输设置。
- 在新建节点对话框中,节点类型选择离线同步,路径和名称可以根据实际情况设置,然后单击确认。
- 在网络与资源配置阶段,分别对数据来源、资源组、数据去向的内容进行设置,然后单击下一步。
涉及参数如下:
- 数据来源:MaxCompute。对应的数据源名称,选择前一步骤中新增的MaxCompute数据源,例如,MaxCompute_Source。
- 资源组:已在DataWorks中购买的DataWorks资源组。
- 数据去向:Milvus。对应的数据源名称,选择前一步骤中新增的Milvus数据源,例如,Milvus_Source。
- 在配置任务阶段,分别对数据来源与去向、字段映射、通道控制的内容进行设置,然后单击图标。
更多配置信息,请参见通过向导模式配置离线同步任务。
- 在数据来源区域,选择待同步的表。
- 在数据去向区域,配置数据去向的各参数。
- 在字段映射区域中,设置来源字段与目标字段的映射关系。
- 字段映射中的来源字段和目标字段需要一致,并且同行相对应,详情请参见类型映射表格。如果字段本身在表中没有(或不支持)默认值填充,则同步会出错。
MaxCompute字段类型 |
Milvus字段类型 |
ARRAY<FLOAT> |
Float Vector |
ARRAY<FLOAT> |
BFloat16 Vector |
ARRAY<FLOAT> |
Float16 Vector |
BINARY |
Binary Vector |
STRING |
JSON |
ARRAY<INT> |
Array |
INT |
Int64 |
TINYINT |
Int8 |
INT |
Int16 |
INT |
Int32 |
FLOAT |
Float |
DOUBLE |
Double |
STRING |
VarChar |
BOOLEAN |
Boolean |
- 在通道控制区域,配置通道参数。
- 运行任务。
- 在节点区域的左上角,单击 图标。
- 在节点区域的左上角,单击 图标。
当运行日志中出现Shell run successfully
时表明任务运行成功。
步骤四:查询测试
- 访问Attu页面。
- 进入目标集合(本文示例为collection_name),在数据页签中查看同步的数据。
相关信息
- 向量检索服务 Milvus 版官网:https://www.aliyun.com/product/milvus
- 大数据开发治理平台DataWorks官网:https://www.aliyun.com/product/dide
- 云原生大数据计算服务MaxCompute官网:https://www.aliyun.com/product/maxcompute
- Milvus最新动态: