以图搜图 2 Milvus 基础使用

1 Milvus Docker 安装

官网教程:https://milvus.io/cn/docs/v1.0.0/milvus_docker-cpu.md

我这里使用Linux Docker CPU 简单测试一下:

# pull 镜像
sudo docker pull milvusdb/milvus

# 创建一些必要的目录 我作为root直接创建的
mkdir /root/milvus
mkdir /root/milvus/conf
mkdir /root/milvus/db
mkdir /root/milvus/logs
mkdir /root/milvus/wal

# 下载一个配置文件到/root/milvus/conf目录中
# https://github.com/milvus-io/milvus/blob/v0.10.1/core/conf/demo/server_config.yaml
# 下载后放在/root/milvus/conf里面

# 配置文件的含义可以看这个网页:
# https://www.bookstack.cn/read/milvus-0.11.0-zh/a878066612a5cda1.md

# 启动docker,后台启动
docker run -d --name mymilvus  -p 19530:19530 -p 19121:19121 -v /root/milvus/db:/var/lib/milvus/db -v /root/milvus/conf:/var/lib/milvus/conf -v /root/milvus/logs:/var/lib/milvus/logs -v /root/milvus/wal:/var/lib/milvus/wal milvusdb/milvus:cpu-latest

此时就可以看看docker container 是否运行中:

docker ps

在这里插入图片描述
如果看不到启动成功成这样,则查看日志:

docker logs mymilvus

2 Milvus 基本测试

用5000条向量创建collection:

# -*- coding: utf-8 -*-
# 导入相应的包
import numpy as np
from milvus import Milvus, MetricType
# 初始化一个Milvus类,以后所有的操作都是通过milvus来的
milvus = Milvus(host='10.10.90.135', port='19530')
# 向量个数
num_vec = 5000
# 向量维度
vec_dim = 512
# name
collection_name = "test_collection"
# 创建collection,可理解为mongo的collection
collection_param = {
    
    
    'collection_name': collection_name,
    'dimension': vec_dim,
    'index_file_size': 32,
    'metric_type': MetricType.L2  # 使用L2作为度量值
}
milvus.create_collection(collection_param)
# 随机生成一批向量数据
# 支持ndarray,也支持list
vectors_array = np.random.rand(num_vec, vec_dim)
# 把向量添加到刚才建立的collection中
status, ids = milvus.insert(collection_name=collection_name, records=vectors_array)  # 返回 状态和这一组向量的ID
milvus.flush([collection_name])
# 输出统计信息
print(milvus.get_collection_stats(collection_name))
# 如果不用可以删掉
# status = milvus.drop_collection(collection_name)
# 断开、关闭连接
milvus.close()

快速搜搜出相似向量:

# -*- coding: utf-8 -*-
# 导入相应的包
import numpy as np
from milvus import Milvus, MetricType
# 初始化一个Milvus类,以后所有的操作都是通过milvus来的
milvus = Milvus(host='10.10.90.135', port='19530')
# 向量个数
num_vec = 5000
# 向量维度
vec_dim = 512
# name
collection_name = "test_collection"
# 创建collection,可理解为mongo的collection
collection_param = {
    
    
    'collection_name': collection_name,
    'dimension': vec_dim,
    'index_file_size': 32,
    'metric_type': MetricType.L2  # 使用L2作为度量值
}
# 创建查询向量
query_vec_array = np.random.rand(1, vec_dim)
# 进行查询,
status, results = milvus.search(collection_name=collection_name, query_records=query_vec_array, top_k=10)
print(status)
print(results)
# 断开、关闭连接
milvus.close()


猜你喜欢

转载自blog.csdn.net/x1131230123/article/details/120471786