milvus操作
java
引入依赖
<dependency>
<groupId>io.milvus</groupId>
<artifactId>milvus-sdk-java</artifactId>
<version>2.4.1</version>
</dependency>
配置milvus客户端
import io.milvus.client.MilvusServiceClient;
import io.milvus.param.ConnectParam;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* milvus配置
* @author tianluhua
* @version 1.0
* @since 2024/8/16 10:15
*/
@Configuration
@ConfigurationProperties(prefix = "milvus.config")
@Data
public class MilvusConfig {
private String host;
private Integer port;
private String database;
@Bean
public MilvusServiceClient getMilvusClient() {
ConnectParam connectParam = ConnectParam.newBuilder()
.withHost(host)
.withPort(port)
.withDatabaseName(database)
.build();
return new MilvusServiceClient(connectParam);
}
}
查询数据
- 查询使用
SearchParam来构建查询参数。其中
withCollectionName:查询的集合withVectorFieldName:向量比对的字段withOutFields:输出的字段名withFloatVectors:查询的向量。值为2层数组,即可根据多个特征向量查询。查询结果分别返回多个特征向量的结果withTopK:返回前x条数据withMetricType:计算相似度方式
- L2: 欧几里得计算
- COSINE: 余弦相似度计算
List<List<Float>> text_features = vectorizationResponse.getText_features();
SearchParam searchParam = SearchParam.newBuilder()
.withCollectionName(COLLECTION_NAME)
.withVectorFieldName("embedding")
.withOutFields("test")
.withFloatVectors(text_features)
.withMetricType(MetricType.L2)
.withTopK(top)
.build();
R<SearchResults> searchResults = milvusServiceClient.search(searchParam);
SearchResults searchResultsData = searchResults.getData();
SearchResultsWrapper wrapper = new SearchResultsWrapper(searchResultsData.getResults());
List<TextSearchImgResponse> textSearchImgResponses = new ArrayList<>();
for (int i = 0; i < text_features.size(); ++i) {
List<SearchResultsWrapper.IDScore> scores = wrapper.getIDScore(i);
if (scores.size() > 0) {
for (SearchResultsWrapper.IDScore idScore : scores) {
float score = idScore.getScore();
Object imagePathO = idScore.getFieldValues().get(SEARCH_RIELD_NAME);
if (imagePathO != null) {
String relativePath = (imagePathO + "").replace("/cephfs2/data", "")
.replace("/cephfs2/data", "");
String imagePath = filePath + relativePath;
textSearchImgResponses.add(new TextSearchImgResponse(score, imagePath));
}
}
}
}
Python
使用pip安装milvus库
pip install
milvus连接方式
MilvusClient
- 通过MilvusClient可同时连接多个客户端,多个客户端互相不干扰
from pymilvus import MilvusClient
client = MilvusClient(uri="http://<host>:<port>", db_name="db_name")
connections
- 通过connections连接milvus的同时,Collection和utility默认使用alias为default的连接
- 可通过using字段切换不同的实例
from pymilvus import connections, Collection, utility
connections.connect(alias= "default",host = "<host>", port="<port>", db_name = "<db_name>")
- 切换不同的实例
collection = Collection(name="", using="default")
utility.list_collections(using = "default")
数据库管理
milvus操作的更多相关文章
- milvus安装及其使用教程
milvus 简介 milvus是干什么的?通俗的讲,milvus可以让你在海量向量库中快速检索到和目标向量最相似的若干个向量,这里相似度量标准可以是内积或者欧式距离等.借用官方的话说就是: Milv ...
- milvus和faiss安装及其使用教程
写在前面 高性能向量检索库(milvus & faiss)简介 Milvus和Faiss都是高性能向量检索库,可以让你在海量向量库中快速检索到和目标向量最相似的若干个向量,这里相似度量标准可以 ...
- 虹软人脸识别SDK接入Milvus实现海量人脸快速检索
一.背景 人脸识别是近年来最热门的计算机视觉领域的应用之一,而且现在已经出现了非常多的人脸识别算法,如:DeepID.FaceNet.DeepFace等等.人脸识别被广泛应用于景区.客运.酒店.办公室 ...
- 关于DOM的操作以及性能优化问题-重绘重排
写在前面: 大家都知道DOM的操作很昂贵. 然后贵在什么地方呢? 一.访问DOM元素 二.修改DOM引起的重绘重排 一.访问DOM 像书上的比喻:把DOM和JavaScript(这里指ECMScri ...
- Sql Server系列:分区表操作
1. 分区表简介 分区表在逻辑上是一个表,而物理上是多个表.从用户角度来看,分区表和普通表是一样的.使用分区表的主要目的是为改善大型表以及具有多个访问模式的表的可伸缩性和可管理性. 分区表是把数据按设 ...
- C# ini文件操作【源码下载】
介绍C#如何对ini文件进行读写操作,C#可以通过调用[kernel32.dll]文件中的 WritePrivateProfileString()和GetPrivateProfileString()函 ...
- js学习笔记:操作iframe
iframe可以说是比较老得话题了,而且网上也基本上在说少用iframe,其原因大致为:堵塞页面加载.安全问题.兼容性问题.搜索引擎抓取不到等等,不过相对于这些缺点,iframe的优点更牛,跨域请求. ...
- jquery和Js的区别和基础操作
jqery的语法和js的语法一样,算是把js升级了一下,这两种语法可以一起使用,只不过是用jqery更加方便 一个页面想要使用jqery的话,先要引入一下jqery包,jqery包从网上下一个就可以, ...
- ASP.NET Aries 入门开发教程7:DataGrid的行操作(主键操作区)
前言: 抓紧勤奋,再接再励,预计共10篇来结束这个系列. 上一篇介绍:ASP.NET Aries 入门开发教程6:列表数据表格的格式化处理及行内编辑 本篇介绍主键操作区相关内容. 1:什么时候有默认的 ...
- 如何在高并发环境下设计出无锁的数据库操作(Java版本)
一个在线2k的游戏,每秒钟并发都吓死人.传统的hibernate直接插库基本上是不可行的.我就一步步推导出一个无锁的数据库操作. 1. 并发中如何无锁. 一个很简单的思路,把并发转化成为单线程.Jav ...
随机推荐
- 01 Eclipse使用Maven慢的问题解决
1. Eclipse 使用的是内置的 Maven Eclipse 有可能使用了内置的 Maven,而不是独立安装的 Maven.如果使用 Eclipse 内置的 Maven,默认的 settings. ...
- EAFP 与 LBYL 风格
EAFP 与 LBYL 是两种"防御性处理机制",相信你一定接触过,只是可能没有深入思考过这个问题. 输入两个数,要输出相除后的结果: a, b = map(int, input( ...
- 【磐维数据库】Oracle(透明网关)访问磐维数据库(PanWeiDB)
磐维数据库(PanWeiDB)是由中国移动基于中国本土开源数据库openGauss打造的自研数据库产品,主要面向ICT基础设施.它具有高性能.高可靠性.高安全性和高兼容性的特点,能够支持集中式.分布式 ...
- CTime类缺陷
如果构造CTime的时间不在下面这个范围内,会抛出异常
- Power BI 网关无法添加My SQL数据集
今天第一次发布数据类型为MySQL的数据集到Power BI报表服务器,desktop的连接正常,但是发布到web端后,添加网关时却提示以下错误,如下图所示: 错误信息: 无法创建连接,原因如下: 无 ...
- Windows编译运行webrtc全过程,并实现屏幕共享
文章分为三部分,代码获取/编译/运行. 第一步获取代码,打开cmd执行以下指令即可 set WORKSPACE=E:\webrtc mkdir %WORKSPACE% cd /d %WORKSPACE ...
- Windows系统密钥(实测可用)
Windows Server 2003 R2 sp2 standard edition 文件名:cn_win_srv_2003_r2_standard_with_sp2_cd1_X13-13927.i ...
- g++ error unrecognized command-line option ‘-std=c++23’; did you mean ‘-std=c++03’?
编译一个C++的项目代码,报错: g++: error: unrecognized command-line option '-std=c++23'; did you mean '-std=c++03 ...
- 基于Java+SpringBoot心理测评心理测试系统功能实现一
一.前言介绍: 1.1 项目摘要 心理测评和心理测试系统在当代社会中扮演着越来越重要的角色.随着心理健康问题日益受到重视,心理测评和心理测试系统作为评估个体心理状态.诊断心理问题.制定心理治疗方案的工 ...
- 多校A层冲刺NOIP2024模拟赛09
多校A层冲刺NOIP2024模拟赛09 考试唐完了,T2.T4 都挂了 100 分,人麻了. 排列最小生成树 给定一个 \(1, 2,\dots , n\) 的排列 \(p_1, p_2,\dots, ...