Milvus_Python Sdk的基础使用

试用Milvus

# 导入
>>> from milvus import Milvus, IndexType, MetricType, Status

# 连接服务端,两种均可
>>> milvus = Milvus(host='localhost', port='19530')
>>> milvus = Milvus(uri='tcp://localhost:19530')

# 创建集合 
# 先准备创建集合需要的参数
# 对应的参数分别是集合名称,集合中向量的维度(插入时维度必须一致),自动构建索引的数据文件大小,向量距离计算的方式 L2是欧式距离
>>> param = {'collection_name':'test01', 'dimension':256, 'index_file_size':1024, 'metric_type':MetricType.L2}

# 创建集合
>>> milvus.create_collection(param)

# 创建分区,就是用标签将集合进行划分
>>> milvus.create_partition('test01', 'tag01')

# 插入向量
# 先随机生成20个256维的向量
>>> import random
>>> vectors = [[random.random() for _ in range(256)] for _ in range(20)]

# 插入向量,不指定向量ID系统会自动生成
>>> milvus.insert(collection_name='test01', records=vectors)

# 也可以自己指定向量的ID
>>> vector_ids = [id for id in range(20)]
>>> milvus.insert(collection_name='test01', records=vectors, ids=vector_ids)

# 也可以插入到指定的分区
>>> milvus.insert('test01', vectors, partition_tag="tag01")

# 创建索引  
# 准备所需要的参数
>>> ivf_param = {'nlist': 16384}
# 为指定的集合创建索引,指定索引类型为IVF_FLAT,默认索引也是这个,当集合达到了一定大小会自动创建索引,用户也可以自定义索引
milvus.create_index('test01', IndexType.IVF_FLAT, ivf_param)

简单模拟一次向量搜索的过程

# 创建搜索参数
>>> search_param = {'nprobe': 16}

## 先随机生成5个搜索向量
>>> q_records = [[random.random() for _ in range(256)] for _ in range(5)]
## 进行查询,对应参数分别为 查询的集合名称,待查询的向量,相似度前几 top_k搜索参数
>>> milvus.search(collection_name='test01', query_records=q_records, top_k=2, params=search_param)

查询结果

>>> milvus.search(collection_name='test01', query_records=q_records, top_k=2, params=search_param)
(Status(code=0, message='Search vectors successfully!'), [
[
(id:1618883423662254015, distance:35.29349136352539),
(id:1618883423662254018, distance:35.67443084716797)
],
[
(id:1618883423662254002, distance:38.89479064941406),
(id:1618883423662254014, distance:40.05731964111328)
],
[
(id:1618883423662254018, distance:40.39439392089844),
(id:1618883423662254016, distance:41.209041595458984)
],
[
(id:1618883423662254008, distance:40.07978820800781),
(id:1618883423662254014, distance:40.602752685546875)
],
[
(id:1618883423662254018, distance:37.44242858886719),
(id:1618883423662254010, distance:37.46576690673828)
]
])

可以看到返回值是向量id和目标向量的距离distance(这里是欧式距离计算出来的)

数据落盘

>>> milvus.flush(collection_name_array=['test01'])
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值