[拥抱AI]向量检索服务Milvus版

阿里云向量检索服务Milvus版是一款云原生、全托管的向量检索引擎,确保与开源Milvus的完全兼容,支持自建集群无缝迁移上云,集成Zilliz商业版内核提供比开源版更强大的检索性能和更高的准确性。在开源版版本的基础上增强了稳定性、可用性与可扩展性,能提供超大规模向量数据的相似性检索服务

操作步骤

以下示例展示了如何根据id字段的数值范围进行过滤。

query_vectors = [
[-0.30932351869632435, -0.7132856078639205, 0.6006201320181415, 0.40140510356426784, -0.21223937444001328]
]

res = client.search(
    collection_name="demo",
    data=query_vectors,
    filter="3 < id < 5",  # 数值字段范围过滤条件。
    limit=3
)

print(res)

步骤三:插入数据

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

插入少量数据

插入更多数据

这段代码插入了预定义的10个Entity,每个Entity具有固定的向量和颜色标签。

data=[{'id': 0, 'vector': [-0.493313706583155, -0.172001225836391, 0.16825615330139554, -0.0198911518739604, -0.9756816265213708], 'color': 'green_5760'}, {'id': 1, 'vector': [0.6695699219225086, 0.49952523907354496, -0.49870548178008534, 0.8824655547230731, -0.7182693622931615], 'color': 'blue_2330'}, {'id': 2, 'vector': [-0.6057771959702387, 0.9141473782193543, 0.32053983678483466, -0.32126010092015655, 0.725222856037071], 'color': 'grey_9673'}, {'id': 3, 'vector': [0.14082089434165868, 0.9924029949938447, 0.7943279666144052, -0.7898608705081103, -0.9941425813199956], 'color': 'white_2829'}, {'id': 4, 'vector': [-0.46180540826224026, 0.33216876051895783, 0.5786699695956004, 0.8891120357625131, 0.04872530176990697], 'color': 'pink_9061'}, {'id': 5, 'vector': [-0.6097452740606673, 0.35648319550551144, -0.5699789153006387, 0.15085357921088316, -0.8817226997144627], 'color': 'pink_8525'}, {'id': 6, 'vector': [0.7843522543512762, -0.7663837586858071, -0.8681839054724569, 0.6880645348647785, -0.5151293183261791], 'color': 'green_5016'}, {'id': 7, 'vector': [-0.9967116931989293, 0.5741923070732655, -0.019126124261334976, -0.34163875885482753, -0.8189843931354175], 'color': 'brown_7434'}, {'id': 8, 'vector': [0.7347243385915765, -0.7358853080124825, -0.23737428377511716, 0.06980552357261627, -0.30613964550461437], 'color': 'blue_5059'}, {'id': 9, 'vector': [-0.21187155428455862, -0.3288541717216129, -0.32564136453418824, -0.14054963599686743, 0.5491320339870627], 'color': 'yellow_9887'}]

res = client.insert(
    collection_name="demo",
    data=data
)

步骤四:向量检索

重要

数据插入过程采用异步机制,这意味着在您完成数据插入操作后,系统并不会立即更新相应的搜索索引。为确保查询到最新插入的数据,建议您在数据插入后耐心等待数秒,待索引更新完成后再进行搜索操作

单一向量检索

批量向量检索

通过提供一个查询向量列表,您可以进行单一向量的相似性检索。

query_vectors = [
[-0.8832567462711804, -0.2999882617491647, 0.9921295273224382, -0.272575369985379, -0.688914679645338]
]

res = client.search(
    collection_name="demo",     # 查询collection
    data=query_vectors,                # 查询vectors。
    limit=3,                           # 返回entities数量。
)

print(res)

步骤五:Filter检索

利用Schema中定义的字段,您可以设置过滤条件来精确限定检索范围,提高搜索效率。

基于数值字段过滤

基于元数据字段($meta)过滤

  • 前提条件

  • 已拥有阿里云账号。如果您还没有阿里云账号,请先完成注册,详情请参见阿里云账号注册流程。

  • 首次购买时,需要您授予Milvus访问相应云资源的权限,详情请参见阿里云账号角色授权

  • 如果您使用RAM用户,需已完成RAM用户授权,详情请参见RAM用户授权

  • 进入阿里云Milvus页面。

    1. 登录阿里云Milvus控制台

    2. 在左侧导航栏,单击Milvus实例

  • Milvus实例页面,单击创建实例

  • 在向量检索服务Milvus版页面,完成相关配置。

    配置项

    示例

    描述

    付费类型

    包年包月

    仅支持包年包月类型。

    付费时长

    1个月

    默认购买时长为1个月,支持的购买时长以实际界面为准。

    地域和可用区

    华东1(杭州)

    可用区J

    实例所在的物理位置和可用区。

    重要

    实例创建后,无法更改地域和可用区,请谨慎选择。

    专有网络

    vpc_Hangzhou/vpc-bp1f4epmkvncimpgs****

    专有网络是您在阿里云自己定义的一个隔离网络环境,您可以完全掌控自己的专有网络。

    选择已有的专有网络,或者如需创建新的专有网络,可以单击前往控制台创建,详情请参见创建和管理专有网络

    交换机

    vsw_i/vsw-bp1e2f5fhaplp0g6p****

    交换机(vSwitch)是组成专有网络VPC的基础网络模块,用来连接不同的云资源。

    选择已有的交换机,或者如需创建新的交换机,可以单击控制台创建,详情请参见创建和管理交换机

    服务关联角色

    AliyunServiceRoleForCloudMilvus

    已授予您的阿里云账号的AliyunServiceRoleForCloudMilvus角色,以及与其关联的AliyunServiceRolePolicyForMilvus策略。

    Milvus使用此角色来访问您在其他云产品中的资源。

    引擎版本

    2.4

    Milvus的社区版本号。

    规格

    入门版

    Milvus实例的规格。

    • 入门版:适用于测试环境,且资源规格固定。

      选择该规格时,还需配置Standalone规格参数,该参数是入门版节点配置,可以使用默认的4 vCPU 16 GiB。

    • 标准版:适用于生产环境,资源规格可以按需定制。

      当您的向量数据规模超过500万,或者当前入门版的规格无法满足您的业务需求时,您可以填写阿里云向量检索Milvus标准版测试申请表申请试用。相较于入门版本,Milvus标准版提供了更大范围的实例规格选项和更加多样化的配置,您可以根据实际使用情况灵活选择最适合的实例规格。

      选择该规格时,还需要配置以下参数:

      • MixCoordinator资源规格:IndexCoord、QueryCoord和DataCoord服务混合部署在该节点上。

      • MixCoordinator节点数量:默认为1,目前不支持HA。

      • Proxy资源规格:指定Proxy节点大小。

      • Proxy节点数量:指定Proxy节点副本数量。

      • Query Node资源规格:指定QueryNode节点大小。

      • Query Node节点数量:指定QueryNode节点副本数量。

      • Index Node资源规格:指定IndexNode节点大小。

      • Index Node节点数量:指定IndexNode节点副本数量。

      • Data Node资源规格:指定DataNode节点大小。

      • Data Node节点数量:指定DataNode节点副本数量。

    存储费用

    不涉及

    您无需预先选择存储容量,存储成本将根据实际的小时使用量进行计费(公测期间免费),使用量将直接显示在实例详情页面。

    资源组

    请您自定义

    选择已有的资源组,或者如需创建新的专用资源组,可以单击创建资源组。资源组会对您拥有的云资源从用途、权限和归属等维度进行分组,详情请参见资源组概述

    用户密码

    请您自定义

    设置Milvus实例的root账号密码以登录数据库。

    重要

    请牢记您设定的密码,目前无法更改。

  • 单击立即购买

    当实例状态为运行中时,表示实例创建成功。

  • 当所有的信息确认正确后,阅读并选中服务协议

  • 单击去支付,即可开通成功。

    当实例状态为运行中时,表示实例创建成功。

  • 操作流程

    步骤一:连接Milvus实例

    您可以使用以下代码连接Milvus实例。

    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。
    )
    

    步骤二:创建Collection

    您可以通过以下代码简便地创建一个Collection。更多自定义参数选项,请参见管理Collections

    client.create_collection(
        collection_name="demo",  #集合的名称。
        dimension=5  #向量维度。
    )

    这段代码除了设置Collection名称和向量维度,还自动应用了以下配置:

  • 使用默认命名的主键字段“id”和向量字段“vector”。

  • “metric_type”属性采用默认的COSINE度量类型。

  • 主键字段“id”设定为整型,其值不会自动递增。

  • 引入了额外的“$meta”字段,以键值对形式存储那些在Schema中未定义的字段数据。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值