阿里云向量检索服务Milvus版对接使用完全指南

apphuang2026年07月08日 21:45:432

一、初识阿里云向量检索服务Milvus版

阿里云向量检索服务Milvus版是阿里云提供的Serverless Milvus全托管服务,100%兼容开源Milvus。它提供高性能、可扩展的大规模向量数据库相似性检索服务,具备开箱即用、弹性可扩展、全链路监控告警的能力,同时提供开源Attu的可视化工具。作为一款云原生向量检索引擎,Milvus基于Faiss、Annoy、HNSW等知名库构建并进行了深度优化,实现了高可用、高性能、易扩展的特性,特别适于处理海量向量数据的实时召回场景。

在版本选择上,阿里云Milvus提供标准版和单机版两种规格。标准版是为企业级应用和大规模生产环境设计的分布式向量检索方案,采用多可用区集群部署,提供生产级高可用SLA,支持计算和存储资源的独立横向扩展,适用于需要高可靠性、高并发和大规模数据处理的生产场景。单机版则是为个人开发者和小型团队设计的轻量级方案,采用单进程部署,不具备横向扩展能力,建议用于开发学习、功能验证或初期测试场景,不建议直接用于生产环境。两者的核心差异在于:标准版支持多可用区高可用部署和资源独立横向扩展,而单机版仅支持垂直升配且无法直接升级为标准集群版,如需升级需通过数据迁移实现。

从成本角度考量,阿里云Milvus单机版4CU起配即可支撑约900万级向量,月付成本相对可控,适合中小项目做RAG验证起步。当数据量突破千万级别后,可以平滑升级到集群版,避免早期过度工程化。

二、开通与创建Milvus实例

使用阿里云Milvus服务前,首先需要拥有阿里云账号并完成实名认证。首次购买时,需要授予Milvus访问相应云资源的权限。如果使用RAM用户(子账号)进行操作,则需要提前完成RAM用户授权。

需要先登录阿里云控制台,点击:阿里云控制台

创建实例的具体操作步骤如下:

首先进入阿里云Milvus产品页面,在左侧导航栏中单击“实例列表”。在实例列表页面单击“创建实例”按钮,开始配置实例参数。

关键配置项包括以下几个方面。商品类型支持包年包月和按量付费两种方式,可根据业务预算和使用周期灵活选择。地域选择至关重要,因为实例创建后无法更改地域,建议选择与业务应用相同的地域以保证内网访问的低延迟。网络配置方面,需要选择已有的专有网络和交换机,或者新建VPC和交换机。部署方案提供单可用区、多可用区基础版和多可用区高可用版三种选项。单可用区适合开发测试环境,成本较低但不具备跨可用区容灾能力。多可用区基础版计算资源仅有一份,宕机时恢复时间在1小时内。多可用区高可用版配置两份计算资源,业务异常时可直接切换主备集群,恢复时间在3分钟内。

配置完成后,查阅并选中服务合约,单击“创建实例”即可完成创建。实例创建后,系统会生成一个内网访问域名,格式通常为 c-xxx.milvus.aliyuncs.com。同时需要设置访问密码,请务必牢记,因为当前版本不支持密码更改。

三、网络访问配置

阿里云Milvus支持VPC内网访问和公网访问两种方式。新创建的Milvus实例默认使用内网域名进行访问。如果客户端部署在与Milvus实例相同的VPC内,直接使用内网地址连接即可,无需额外配置。

如果存在公网访问需求,需要手动开启Proxy和Attu的公网访问。Milvus实例不提供独立的公网IP地址,而是通过内网域名或公网域名进行连接。开启公网访问后,必须设置公网访问白名单,只有白名单中的IP地址才能访问实例。需要注意的是,当两个Milvus实例在不同地域时,需要通过公网地址连接,并需要将目标实例所在区域的公网IP地址段添加到源实例的公网白名单中。

四、PyMilvus客户端对接

PyMilvus是Milvus官方提供的Python SDK,是连接和操作阿里云Milvus实例的主要方式。在开始编码之前,需要在本地安装或更新PyMilvus库:

pip install --upgrade pymilvus

4.1 连接Milvus实例

使用MilvusClient连接阿里云Milvus实例的代码如下:

from pymilvus import MilvusClient

# 创建Milvus Client
client = MilvusClient(
    uri="http://c-xxxx.milvus.aliyuncs.com:19530",  # Milvus实例的公网或内网地址
    token="<yourUsername>:<yourPassword>",        # 用户名和密码
    db_name="default"                                # 数据库名称
)

其中 uri 参数为Milvus实例的访问地址,格式为 http://<地址>:<端口>,默认端口为19530。token 参数为创建实例时设置的用户名和密码。db_name 指定要连接的数据库名称,默认为 default

4.2 创建Collection

Collection类似于关系型数据库中的表,是组织和管理向量数据以及相关标量数据的核心单元。可以通过以下代码快速创建一个Collection:

# 快速创建Collection(自动应用默认配置)
client.create_collection(
    collection_name="demo",  # 集合名称
    dimension=5               # 向量维度
)

这段代码会自动应用以下默认配置:使用默认的主键字段 id 和向量字段 vector,度量类型采用默认的COSINE,主键字段设定为整型且不会自动递增。

如果需要更精细地控制Schema,可以手动定义字段结构:

from pymilvus import MilvusClient, DataType

client = MilvusClient(
    uri="http://c-xxxx.milvus.aliyuncs.com:19530",
    token="<yourUsername>:<yourPassword>",
    db_name="default"
)

# 创建Schema
schema = MilvusClient.create_schema(
    auto_id=False,
    enable_dynamic_field=True,
)

# 添加字段
schema.add_field(field_name="id", datatype=DataType.INT64, is_primary=True)
schema.add_field(field_name="vec", datatype=DataType.FLOAT_VECTOR, dim=5)

# 创建Collection
client.create_collection(
    collection_name="my_collection",
    schema=schema
)

在创建Collection时,如果在请求中明确指定创建并立即加载索引,需要同时声明向量字段的维度和度量类型。

4.3 插入数据

Collection创建完毕后,系统会自动将其及其对应的索引加载至内存中。可以使用以下代码插入数据:

# 准备待插入的数据
data = [
    {'id': 0, 'vector': [0.1, 0.2, 0.3, 0.4, 0.5], 'color': 'red'},
    {'id': 1, 'vector': [0.6, 0.7, 0.8, 0.9, 1.0], 'color': 'blue'},
    {'id': 2, 'vector': [1.1, 1.2, 1.3, 1.4, 1.5], 'color': 'green'}
]

# 插入数据
result = client.insert(
    collection_name="demo",
    data=data
)

print(f"插入成功,主键: {result['primary_keys']}")

Milvus支持动态Schema特性,允许插入Schema中未预定义的字段。这一特性提供了极大的灵活性,可以在不预先定义所有字段的情况下灵活插入和管理数据。

4.4 向量检索

向量检索是实现高效相似性搜索的关键技术。以下代码演示了如何执行向量相似性检索:

# 查询向量
query_vector = [0.15, 0.25, 0.35, 0.45, 0.55]

# 执行向量检索
results = client.search(
    collection_name="demo",
    data=[query_vector],
    anns_field="vector",
    param={"metric_type": "COSINE", "params": {"nprobe": 128}},
    limit=10,
    output_fields=["color"]
)

# 输出检索结果
for hits in results:
    for hit in hits:
        print(f"ID: {hit['id']}, 距离: {hit['distance']}, color: {hit['entity']['color']}")

其中 metric_type 支持COSINE(余弦相似度)、L2(欧氏距离)和IP(内积)三种度量方式。nprobe 参数控制检索时扫描的桶数量,值越大召回率越高但查询速度越慢。

五、索引类型与选择策略

索引是优化向量搜索性能的关键,不同的索引类型对查询速度、精度和资源使用有着不同的影响。向量索引通过先进的索引结构和算法(如IVF、HNSW等),有效压缩向量空间并加速在海量数据中定位与查询向量最相似的数据点。

5.1 主流索引类型

HNSW(Hierarchical Navigable Small World):基于图结构的索引,能够提供非常高的查询效率,尤其在高维数据空间中表现出色。但是对计算资源和内存的需求较高,适合需要最快查询速度且资源充足的场景。

IVF_FLAT:通过量化操作将向量聚类为多个桶,检索时仅扫描质心接近查询向量的桶内向量,在保持可接受精度的同时降低计算成本。它提供了一种平衡准确率与查询速度的方案,资源消耗相对较低,适合需要在查询性能与资源成本间取得平衡且数据量较大的场景。

DISKANN:基于磁盘的近似最近邻搜索技术,采用Vamana图算法,在有限内存条件下仍能实现高效的向量索引与检索,适合处理超大规模的高维数据。

AUTOINDEX:阿里云Milvus提供的便捷索引创建特性,免去手动调节参数的烦恼,帮助实现最佳搜索性能。通过配置index参数并调用create_index函数即可创建自动索引。

5.2 索引创建示例

可以使用以下代码为向量字段创建索引:

# 准备索引参数
index_params = MilvusClient.prepare_index_params()
index_params.add_index(
    field_name="vec",          # 向量字段名
    metric_type="L2",          # 度量类型
    index_type="IVF_PQ",       # 索引类型
    index_name="vector_index"  # 索引名称
)

# 创建索引
client.create_index(
    collection_name="my_collection",
    index_params=index_params
)

5.3 资源估算

阿里云Milvus提供了资源计算器功能,帮助用户合理估算所需的计算资源。用户只需输入向量数据规模和维度,并选择合适的索引类型,系统将自动推荐适宜的实例配置。例如,输入800万条768维向量、HNSW索引(M=4)时,计算器预估所需内存资源约31.2GB,推荐集群配置为CPU 40核、内存160GB。各Milvus组件推荐配置为:元数据服务4核16GB×1、Proxy 2核8GB×1、Query Node 4核16GB×2、Index Node 4核16GB×1、Data Node 2核8GB×1。需要注意的是,启用高可用配置所需的资源是非高可用配置的两倍。

六、Milvus Manager可视化管理工具

Milvus Manager是阿里云向量检索服务Milvus版提供的可视化管理工具,用户可以通过Web控制台统一完成Milvus实例的数据库对象管理、数据操作、向量检索调试、用户与权限管理以及运行状态查看等操作。

Milvus Manager的核心功能包括以下几个方面。在数据与对象管理方面,支持可视化Schema管理,通过图形界面创建、查看和修改Collection的Schema,直观查看字段类型、索引、默认值和描述等属性。支持数据库与Collection的全生命周期管理,包括创建、查看、编辑、加载、释放和删除等操作。支持数据导入导出与编辑,可以按表达式、主键或向量进行数据过滤和查询,支持CSV、JSON格式文件的小批量导入。

在检索与调试方面,Milvus Manager支持可视化向量检索,通过图形界面输入或上传查询向量,配置检索参数并实时查看检索结果和距离信息。同时支持标量过滤表达式、主键查询以及向量与标量结合的混合检索。

在使用Milvus Manager之前,需要确保已创建Milvus实例并获取至少一个数据库用户的账号和密码,默认初始用户为 root

七、权限体系与安全管理

阿里云Milvus提供了完善的权限管理体系,涵盖RAM账号授权和Milvus原生RBAC两个层面。

7.1 RAM用户授权

当RAM用户(子账号)需要进行向量检索Milvus操作(如创建、查看或删除实例等)时,必须具有相应的权限。RAM用户授权通过RAM控制台完成。在用户页面单击目标RAM用户操作列的“添加权限”,在系统策略中搜索并选择 AliyunMilvusFullAccess 权限即可授予Milvus产品的完整管理权限。如果只需要只读权限,可以授予 AliyunMilvusReadOnlyAccess 策略。

7.2 Milvus RBAC权限体系

Milvus Manager的权限体系基于Milvus原生RBAC机制,并在External Collection功能上结合阿里云RAM身份体系实现双重管控。权限分为三个层级:集群级(Cluster)影响整个实例的权限,如系统配置、全局监控等;数据库级(Database)影响特定数据库的权限,如创建/删除数据库、管理数据库内Collection等;Collection级影响特定Collection的权限,如数据读写、索引管理、加载/释放等。

Milvus Manager提供了9个内置权限组:集群级包括ClusterReadOnly(全局只读)、ClusterReadWrite(全局读写)和ClusterAdmin(全局管理);数据库级包括DatabaseReadOnly、DatabaseReadWrite和DatabaseAdmin;Collection级包括CollectionReadOnly(含Query、Search等14项权限)、CollectionReadWrite(含Insert、Delete等)和CollectionAdmin(含Load、Release等)。除了系统内置权限组外,Milvus Manager还支持创建自定义权限组以满足更细粒度的权限管理需求。一个权限组只能包含同一层级的权限,不支持跨层级混用。

7.3 用户管理

在Milvus Manager中,管理员可以添加用户、为用户分配角色、修改密码以及删除用户。添加用户时需要设置用户名(必须以字母开头,只能包含下划线、字母或数字,不超过32个字符)和密码(6-32个字符,必须包含大写字母、小写字母、数字及特殊符号)。内置用户 root 为超级管理员不可删除。

八、典型应用场景与实践

8.1 检索增强生成(RAG)

RAG是阿里云Milvus最核心的应用场景之一。大语言模型常因知识局限而产生“幻觉”,RAG技术通过连接外部知识库有效解决了这一痛点。阿里云Milvus与Dify、PAI LangStudio、百炼等平台深度集成,可以快速构建企业级RAG应用。

在RAG实践中,文档切片策略至关重要。应避免无脑按固定字数切片,而是对表格、代码块、FAQ等采用不同的切片策略。推荐使用LangChain的 RecursiveCharacterTextSplitter 按标题层级进行结构化切片。同时,切片时必须保留文档标题、章节路径、文档类型等元数据,在Milvus中用标量字段存储,后续做过滤检索能大幅提升准确率。

检索策略方面,纯向量检索在企业场景下往往不够用,推荐采用“混合检索+重排序”的方案。Milvus 2.5版本内置了Sparse-BM25算法,支持全文检索与向量检索的混合检索。向量检索负责语义匹配,全文检索负责关键词匹配,最后通过重排序(Rerank)模型对结果进行精排。

8.2 多模态检索

阿里云Milvus支持文本、图像、视频等多模态数据的向量化存储与检索。在Milvus控制台的AI中心开通Embedding服务后,在数据写入和检索时可直接传入原始文本或多模态数据,由系统自动完成向量生成,无需单独部署Embedding推理服务。这一能力使Milvus在电商以图搜图、内容推荐、智能搜索等场景中发挥重要作用。

8.3 监控告警与运维

阿里云Milvus的监控告警通过云监控产品实现。用户可以在Milvus控制台的“监控告警”页面启用“一键告警”功能,也可以跳转至云监控控制台自定义告警规则。阿里云Milvus免费提供超过100项监控指标,涵盖CPU使用率、内存使用率、查询延迟等关键性能指标。此外,Milvus支持将数据以快照文件的形式进行备份,并可将备份数据恢复到当前实例中,有效保障数据安全性和业务连续性。

九、最佳实践与注意事项

索引选择建议:对于大多数应用场景,IVF_FLAT提供了准确率与查询速度的良好平衡。如果追求极致查询速度且资源充足,可以选择HNSW。处理超大规模数据时可以考虑DISKANN。新手用户也可以直接使用AUTOINDEX免去调参烦恼。

网络访问规划:生产环境建议始终使用内网访问以保证最佳性能和安全性。如需公网访问,务必配置IP白名单。

资源规划:使用资源计算器提前评估所需资源配置。生产环境建议开启高可用配置,但需注意资源消耗翻倍。

数据建模:合理设计标量字段用于元数据过滤,可大幅提升检索精度。利用动态Schema特性可以获得更大的数据灵活性。

权限管理:遵循最小权限原则,使用RAM子账号进行日常操作,避免使用主账号。在Milvus内部合理分配RBAC权限。

十、常见问题解答

问:阿里云Milvus与开源Milvus的兼容性如何?

答:阿里云向量检索服务Milvus版100%兼容开源Milvus。所有基于开源Milvus开发的应用程序和SDK代码都可以无缝迁移到阿里云Milvus服务上,无需修改代码。

问:单机版可以直接升级到标准版吗?

答:不可以直接升级。单机版无法直接升级为标准集群版,需要通过数据迁移的方式实现。建议在项目初期就根据业务规模预期选择合适的版本,或在数据量增长后通过数据迁移方案进行升级。

问:连接Milvus实例时提示连接超时怎么办?

答:首先检查网络连通性,可以使用 telnet 命令检测与Milvus实例的网络连接情况。确认客户端是否在实例的访问白名单中,如果开启了公网访问,需要将客户端的公网IP添加到白名单中。同时确认使用的地址是内网地址还是公网地址,跨地域访问需要使用公网地址。

问:如何选择向量维度?

答:向量维度由Embedding模型决定。不同的Embedding模型输出不同维度的向量,例如常见的文本Embedding模型通常输出768维、1024维或1536维向量。选择Embedding模型时需要考虑业务场景的精度要求和计算资源消耗,高维度向量虽然可能带来更好的语义表达能力,但也会增加存储和计算成本。

问:数据插入后多久可以被检索到?

答:数据插入Collection后,系统会自动将其及其对应的索引加载至内存中。对于已经创建索引的Collection,数据插入后需要等待索引构建完成才能被高效检索。使用AUTOINDEX可以自动管理这一过程。

问:如何降低Milvus的使用成本?

答:成本优化可以从几个方面入手:根据实际数据规模选择合适的实例规格,避免过度配置;开发测试阶段使用单机版,生产环境再考虑标准版;合理选择索引类型,IVF_FLAT相比HNSW资源消耗更低;利用资源计算器提前评估所需资源;按量付费实例在非高峰期可以释放或降配以节省费用。

相关文章

买阿里云服务器能便宜吗?十年代理揭秘 3 大省钱攻略!

买阿里云服务器能便宜吗?十年代理揭秘 3 大省钱攻略!

作为深耕阿里云代理领域 10 年的 “老司机”,经常被问到:“买阿里云服务器能便宜吗?有没有优惠价格?” 今天就用实打实的行业经验告诉你:不仅能便宜,选对渠道还能省一大笔! 这篇文章带你解锁阿里云服务…

做了 10 年腾讯云代理,我想跟你聊聊返佣那些事儿​

做了 10 年腾讯云代理,我想跟你聊聊返佣那些事儿​

最近总有朋友问我:“腾讯云有返点吗?腾讯云服务器能拿佣金不?返佣比例到底有多少?” 作为一个在腾讯云代理行业摸爬滚打了 10 年的 “老人”,今天就来跟大家好好…

阿里云代理商返佣机制深度解析:头部代理优势与企业合作策略

阿里云代理商返佣机制深度解析:头部代理优势与企业合作策略

阿里云代理商的核心价值定位1. 代理商的角色与职责阿里云代理商作为阿里云生态的核心合作伙伴,承担着双重核心职能:• 产品销售:负责推广销售阿里云全系列云产品,包括云服务器ECS、云数据库RDS、对象存…

阿里云代理商返佣机制深度解析:头部代理优势与企业合作策略

阿里云代理商返佣机制深度解析:头部代理优势与企业合作策略

01一、阿里云代理商的核心价值定位1. 代理商的角色与职责阿里云代理商作为阿里云生态的核心合作伙伴,承担着双重核心职能:• 产品销售:负责推广销售阿里云全系列云产品,包括云服务器ECS、云数据库RDS…

2026阿里云代理商生态全解析:五级代理体系、返佣政策与企业上云指南

2026阿里云代理商生态全解析:五级代理体系、返佣政策与企业上云指南

一、阿里云五级代理体系:权益阶梯与合作价值1. 五级代理的核心权益差异阿里云构建了多层次的代理生态体系,涵盖全国总代理、区域核心代理、行业ISV(独立软件开发商)、金牌/银牌认证代理及标准代理五大核心…

2026年阿里云代理商政策深度解析:战略级代理引领AI时代上云

2026年阿里云代理商政策深度解析:战略级代理引领AI时代上云

核心摘要本文全面解读阿里云2026年合作伙伴政策升级,聚焦新增「战略级代理」梯队的核心权益、「三维返点体系」的激励逻辑,以及从「销售驱动」到「AI价值驱动」的战略转型。结合上海汪远信息科技有限公司作为…