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来构建查询参数。其中

    1. withCollectionName:查询的集合
    2. withVectorFieldName:向量比对的字段
    3. withOutFields:输出的字段名
    4. withFloatVectors:查询的向量。值为2层数组,即可根据多个特征向量查询。查询结果分别返回多个特征向量的结果
    5. withTopK:返回前x条数据
    6. withMetricType:计算相似度方式
      1. L2: 欧几里得计算
      2. 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操作的更多相关文章

  1. milvus安装及其使用教程

    milvus 简介 milvus是干什么的?通俗的讲,milvus可以让你在海量向量库中快速检索到和目标向量最相似的若干个向量,这里相似度量标准可以是内积或者欧式距离等.借用官方的话说就是: Milv ...

  2. milvus和faiss安装及其使用教程

    写在前面 高性能向量检索库(milvus & faiss)简介 Milvus和Faiss都是高性能向量检索库,可以让你在海量向量库中快速检索到和目标向量最相似的若干个向量,这里相似度量标准可以 ...

  3. 虹软人脸识别SDK接入Milvus实现海量人脸快速检索

    一.背景 人脸识别是近年来最热门的计算机视觉领域的应用之一,而且现在已经出现了非常多的人脸识别算法,如:DeepID.FaceNet.DeepFace等等.人脸识别被广泛应用于景区.客运.酒店.办公室 ...

  4. 关于DOM的操作以及性能优化问题-重绘重排

     写在前面: 大家都知道DOM的操作很昂贵. 然后贵在什么地方呢? 一.访问DOM元素 二.修改DOM引起的重绘重排 一.访问DOM 像书上的比喻:把DOM和JavaScript(这里指ECMScri ...

  5. Sql Server系列:分区表操作

    1. 分区表简介 分区表在逻辑上是一个表,而物理上是多个表.从用户角度来看,分区表和普通表是一样的.使用分区表的主要目的是为改善大型表以及具有多个访问模式的表的可伸缩性和可管理性. 分区表是把数据按设 ...

  6. C# ini文件操作【源码下载】

    介绍C#如何对ini文件进行读写操作,C#可以通过调用[kernel32.dll]文件中的 WritePrivateProfileString()和GetPrivateProfileString()函 ...

  7. js学习笔记:操作iframe

    iframe可以说是比较老得话题了,而且网上也基本上在说少用iframe,其原因大致为:堵塞页面加载.安全问题.兼容性问题.搜索引擎抓取不到等等,不过相对于这些缺点,iframe的优点更牛,跨域请求. ...

  8. jquery和Js的区别和基础操作

    jqery的语法和js的语法一样,算是把js升级了一下,这两种语法可以一起使用,只不过是用jqery更加方便 一个页面想要使用jqery的话,先要引入一下jqery包,jqery包从网上下一个就可以, ...

  9. ASP.NET Aries 入门开发教程7:DataGrid的行操作(主键操作区)

    前言: 抓紧勤奋,再接再励,预计共10篇来结束这个系列. 上一篇介绍:ASP.NET Aries 入门开发教程6:列表数据表格的格式化处理及行内编辑 本篇介绍主键操作区相关内容. 1:什么时候有默认的 ...

  10. 如何在高并发环境下设计出无锁的数据库操作(Java版本)

    一个在线2k的游戏,每秒钟并发都吓死人.传统的hibernate直接插库基本上是不可行的.我就一步步推导出一个无锁的数据库操作. 1. 并发中如何无锁. 一个很简单的思路,把并发转化成为单线程.Jav ...

随机推荐

  1. 用故事说透HTTPS

    本文来自素燕公众号,原文地址:用故事说透https 故事中的主演: 小华今年上大一,这是她第一次离开父母,独自一人到北京上学.今天妈妈的生日,想了想要给妈妈一个祝福,便给妈妈发了条消息: 妈妈收到这条 ...

  2. PHP的json浮点精度难题

    前言 之前开发的接口需要用到json加签,有一次对接JAVA时,签名怎么都过不了,仔细对比了字符串,发现是PHP进行json_encode时,会将浮点型所有无意义的0给去掉(echo和var_dump ...

  3. LiveData

    ViewModel 添加依赖 implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' activity_main.xml < ...

  4. redis配置文件剖析

    解析配置文件 #是否在后台运行:no:不是后台运行 daemonize yes #是否开启保护模式,默认开启.要是配置里没有指定bind和密码.开启该参数后,redis只会本地进行访问,拒绝外部访问. ...

  5. SpringBoot用户头像上传

    1.上传到本地服务器 controller层主要以MultipartFile接收即可,这里返回给前端的该文件保存后的相对路径 @RequestMapping(value = "/applic ...

  6. 关于C语言指针类型的总结

    前言 我个人将目前在C语言中所遇到的指针归类为8种,至于为何写第九点,是因为我个人认为第九点极容易与第五点混淆,故总结如下: 1.普通指针 普通指针即最常见的如:int * . char*等 甚至于也 ...

  7. Java面试题中高级进阶(JVM篇01)

    前言 本来想着给自己放松一下,刷刷博客,突然被几道面试题难倒!说说堆和栈的区别?什么时候会触发FullGC?什么是Java虚拟机?似乎有点模糊了,那就大概看一下面试题吧.好记性不如烂键盘 *** 12 ...

  8. PHP Excel Word 文件转 HTML输出

    ob_end_clean(); $filePath = './123.xls'; //$filePath = './123.docx'; $savePath = './123.html'; //这里记 ...

  9. 劉玥 的国内网站 —— https://spicy-gum.com

    劉玥 的国内网站 -- https://spicy-gum.com

  10. 0.3 preface

    Preface 此书的目的是双重的: 1. 介绍多个领域的背景材料,让学生更好地理解和学习: 2. 详细讲解量子计算和量子信息领域的重要结论,既可以作为学生通识教育的一部分,又可以作为独立研究的前奏. ...