Milvus 向量数据库实践 - 1

假定你已经安装了docker、docker-compose 环境

参考的文档如下:

        Milvus技术探究 - 知乎

         MilvusClient() - Pymilvus v2.3.x for Milvus

         一文带你入门向量数据库milvus

一、在docker上安装单机模式milvus数据库

     1、 进入milvus官网: Install Milvus Standalone with Docker Compose Milvus documentation

     2、 复制并执行以下执行命令:            

# 下载docker-compose文件
wget https://github.com/milvus-io/milvus/releases/download/v2.3.10/milvus-standalone-docker-compose.yml -O docker-compose.yml# 执行docker-compose 
sudo docker compose up -d

     3、查看应用是否全部成功启动了:docker ps -a     

     4、 执行docker-compose命令后,可能会出现 milvus-standalone 服务无法正常启动的情况,此时可长时间更改 milvus 的版本后再试试

      5、安装 milvus 的可视化操作控制台:Attu


# MILVUS_URL 是 milvus的连接地址,这个不重要,因为在可视化控制台可以修改 
docker run -p 8000:3000 -e MILVUS_URL=127.0.0.1:19530 zilliz/attu:v2.3.0

      6、浏览器打开:http://192.168.3.32:8000/

        

       

         7、预先创建一个collection,方便接下来用代码来测试实际效果        

         

 

二、使用python 测试图片的向量存储与检索:

   注意:实际使用发现 使用ResNet50模型更加方便一点,主要是dimension的维度不会特别大,milvus的向量维度最大支持:32768。 而使用MobileNetV2模型的话,提取的图片向量特征的dimension为62720。所以为了方便运行代码,体验milvus,直接使用ResNet50模型。

  1、直接上代码

import tensorflow as tf  
from PIL import Image  
from tensorflow.keras.applications.resnet50 import ResNet50, preprocess_input  
from tensorflow.keras.preprocessing import image  
import numpy as np  
from pymilvus import MilvusClient
import os  # 初始化Milvus连接  
milvus_client = MilvusClient(uri='http://192.168.3.32:19530')  # 创建一个集合来存储图片向量  
collection_name = 'image_vectors'  
vector_dim = 1000   #向量维度
field_name = 'vec'  #向量字段# 加载预训练的ResNet50模型  
model = ResNet50(weights='imagenet', include_top=True)# 提取图片向量
def getFilefeatureVector1(image_path):  img = image.load_img(image_path, target_size=(224, 224))  img_array = image.img_to_array(img)  img_array = np.expand_dims(img_array, axis=0)  img_array = preprocess_input(img_array)  # 使用模型提取特征  feature_vector = model.predict(img_array)  feature_vector = np.squeeze(feature_vector, axis=0)  return feature_vector;# 待测试图片的文件夹目录
image_folder = '/data/files/milvus/'  # 遍历文件夹下的所有图片,提取特征并存储到Milvus  
def saveFileFeatureVector():i=1for filename in os.listdir(image_folder):  image_path = os.path.join(image_folder, filename)print(filename)# 获取向量  feature_vector=getFilefeatureVector1(image_path)print(feature_vector)# 将特征向量插入到Milvus集合中  insert_data = [{'id':i,'fileName':filename,field_name: feature_vector.tolist()}]  milvus_client.insert(collection_name, insert_data)  i=i+1# 用特定图片的向量特征从milvus中查询相似的图片
def searchFile():# 取测试一张测试图片,获取到其向量特征后,作为查询条件image_path = os.path.join(image_folder, "IMG_20210716_212727_edit_1565328531531.jpg")# 获取向量  feature_vector=getFilefeatureVector1(image_path)search_params = {"metric_type": "L2", "params": {"nprobe": 10}}results=milvus_client.search(collection_name=collection_name, data = [feature_vector],limit=6, # 查询6条offset=0, # 当该参数不为空的时候,为分页查询,配合limit使用,下标从0开始output_fields=["fileName"],search_params= search_params)for hits in results:# get the IDs of all returned hits# print(hits)for hit in hits:# get the value of an output field specified in the search request.# dynamic fields are supported, but vector fields are not supported yet.    print(hit)#
print('开始打印')# 第一步,保存图片向量数据到milvus中(数据初始化成功后,可以注释掉该方法)
saveFileFeatureVector()# 第二步,用指定图片的向量特征查询相似图片
searchFile()# 关闭Milvus连接  
milvus_client.close()

  2、saveFileFeatureVector 保存图片特征没有保存的时候,我们可以直接在Attu控制台查看数据集        

3、用使用 指定特图片来查询与其相似的图片执行结果        

4、本地电脑待测试图片的文件目录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/519396.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Lazada本土店与跨境店区别,附店铺防关联攻略

许多新手商家在初入跨境电商时,对于平台账号类别并不清楚。Lazada是最大的东南亚在线购物平台之一,如果你的跨境目标正指向东南亚,那么Lazada一定是是你的首选平台。那么接下来让小编带大家认识Lazada本土店与跨境店的区别! 一、本…

根据标准化开发流程---解析LIN总线脉冲唤醒的测试方法和用例设计思路

前言:本文从标准化开发流程的角度,以LIN总线脉冲唤醒为切入点。从测试工程师的角度来讲测试工作应当如何展开(结合我干测试总结出来的测试经验)。希望大家都能从中有收获!!谢谢!! 1…

“揭秘网络握手与挥别:TCP三次握手和四次挥手全解析“

前言 在计算机网络中,TCP(传输控制协议)是一种重要的通信协议,用于在网络中的两台计算机之间建立可靠的连接并交换数据。TCP协议通过“三次握手”和“四次挥手”的过程来建立和终止连接,确保数据的准确传输。 一、三…

模拟实现std::string类(包含完整、分文件程序)

std库中的string是一个类,对string的模拟实现,既可以复习类的特性,也可以加深对std::string的理解。 🌈一、搭建框架 ☀️1.新命名空间 本质上string是一个储存在库std里面的类,现在需要模拟实现一个string类&#…

Scrapy与分布式开发(2.3):lxml+xpath基本指令和提取方法详解

lxmlxpath基本指令和提取方法详解 一、XPath简介 XPath,全称为XML Path Language,是一种在XML文档中查找信息的语言。它允许用户通过简单的路径表达式在XML文档中进行导航。XPath不仅适用于XML,还常用于处理HTML文档。 二、基本指令和提取…

比肩Gen-2,全新开源文生视频模型

著名开源平台Stability.ai在官网宣布,推出全新文生视频的扩散模型Stable Video Diffusion,已开源了该项目并公布了论文。 据悉,用户通过文本或图像就能生成高精准,14帧和25帧的短视频。目前,Stable Video Diffusion处…

校园小情书微信小程序,社区小程序前后端开源,校园表白墙交友小程序

功能 表白墙卖舍友步数旅行步数排行榜情侣脸漫画脸个人主页私信站内消息今日话题评论点赞收藏 效果图

分类预测 | Matlab基于GWO-RBF灰狼算法优化径向基神经网络的分类预测

分类预测 | Matlab基于GWO-RBF灰狼算法优化径向基神经网络的分类预测 目录 分类预测 | Matlab基于GWO-RBF灰狼算法优化径向基神经网络的分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 Matlab基于GWO-RBF灰狼算法优化径向基神经网络的分类预测。基于灰狼算法(GWO…

2024年腾讯云优惠政策_腾讯云服务器特价购买活动入口

腾讯云优惠活动2024新春采购节活动上线,云服务器价格已经出来了,云服务器61元一年起,配置和价格基本上和上个月没什么变化,但是新增了8888元代金券和会员续费优惠,腾讯云百科txybk.com整理腾讯云最新优惠活动云服务器配…

安装sqlserver2022最新版只能使用.\SQLEXPRESS登录数据库怎么修改成.

.\SQLEXPRESS “服务器名称 localhost\SQLEXPRESS”中的 “SQLEXPRESS”就是数据库的实例名称/数据库名/服务器名, “localhost”即登录本计算机安装的数据库 安装sqlserver2022最新版只能使用.\SQLEXPRESS登录数据库怎么修改成. 2、查看SQL Server数据库的实例名…

手机app制作商用系统软件开发

手机端的用户占比已经超过了电脑端的用户量,企业想要发展手机端的业务就必须拥有自己的app软件,我们公司就是专门为企业开发手机软件的公司,依据我们多年的开发经验为大家提供在开发app软件的时候怎么选择开发软件的公司。 手机app制…

实现“简-繁”字体转换

代码&#xff1a; &#xff08;在vue项目中&#xff0c;此段代码写在了 index.html 模板文件中&#xff09; <script>document.addEventListener("DOMContentLoaded", function () {// 获取链接元素var scriptElement document.createElement("script&q…