
gitee: https://gitee.com/huq01/rent
我用的SpringBoot3.3.0版本,为什么要使用SpringBoot3.x?因为公司是做AI大模型的,用的都是比较前沿的技术,所以后端使用的技术也比较新
好了,废话不多说
Milvis官方文档:https://milvus.io/docs/zh
Milvis是一个具备高性能、高扩展性的的向量数据库(Vector Database),用于存储向量数据
高性能。按照官方文档描述,其性能是其他向量数据库(Vector Database)的2-5倍

Milvus和其他向量数据库(Vector Database)相比有什么优势呢?官方文档第一章做了介绍

我总结就是以下几点:
最后,很多大厂都在使用Milvus,说明Milvus的优势得到了大厂的认可

Milvus提供了三种安装方式。分别是是

三个部署方式之间,功能对比如下:
可以看到,Milvus Lite只支持2种语言,怪不得轻量

部署方式参考官方文档:https://milvus.io/docs/zh/install_standalone-docker.md
这里重点介绍Milvus Standalone(单机部署)。根据官方文档介绍,单机部署既可以在Linux上部署,也可以在Windows上部署。公司内部肯定使用Linux部署

而且官方文档介绍的很详细,在Docker中安装Milvus,只需要执行2行命令就行。但是这是在线安装的方式

启动后的端口为19530

停止和删除容器的脚本如下
停止容器:standalone_embed.sh stop
删除容器:standalone_embed.sh delete

由于我司需要在内网环境下安装Milvus,无法连接到外网,所以需要使用能连接到外网的电脑(比如私人电脑)去下载镜像,然后使用U盘传到我在公司的工作电脑上,工作电脑连接内网服务器,上传镜像到内网服务器上。所以本章节重点介绍离线部署
官方文档划到最下面,有个工具叫 Attu

并且官方文档其他位置也介绍了,Attu是一个用于直观管理Milvus的开源图形用户界面工具

Attu点进去,来到其Github源代码页面,地址为:https://github.com/zilliztech/attu

页面往下滑,可以看到表格。表格中有2列,第1列是Milvus版本,第二列是推荐的Attu的版本。比如Milvus版本为2.5.x,则推荐的Attu的版本为v2.5.10
文档中还清除的记录了Docker启动Attu的命令,但是这个脚本只是快速启动,没有任何数据的持久化

如果要持久化数据或者使用一些环境变化,则详细脚本如下:

如果大家只想在windows电脑上安装Attu,则可以按照如下步骤:
首页还是来到Github源代码页面,地址为:https://github.com/zilliztech/attu
点击v2.5.10下面的下划线。注意:如果大家的Milvus版本是2.4.x,则点击v2.4.12下面的下划线,以此类推

点击后跳转到另一个页面,页面地址为:https://github.com/zilliztech/attu/releases/tag/v2.5.10
页面往下滑,可以看到有个attu-Setup-2.5.10.exe,这就是Attu的2.5.10版本的安装包

Java集成Milvus参考官方文档:https://milvus.io/docs/zh/install-java.md,引入依赖就行

<dependency>
<groupId>io.milvus</groupId>
<artifactId>milvus-sdk-java</artifactId>
<version>2.5.9</version>
</dependency>Python集成Milvus参考官方文档:https://milvus.io/docs/zh/install-pymilvus.md

python3 -m pip install pymilvus==2.5.10Go集成Milvus参考官方文档:https://milvus.io/docs/zh/install-go.md

go get -u github.com/milvus-io/milvus-sdk-go/v2Node.js也能集成Milvus SDK,估计没什么人用,这里就不介绍了,如果要用的话,在官方文档里也能看到,我通篇的讲解都是基于官方文档
Milvus是一个向量数据库,可以理解和MySQL一样。MySQL存储的方式是:数据库 -> 表 -> 一行行数据。Milvus也是非常类似:数据库 -> 集合 -> 数据
所以在使用Milvus之前,得先创建数据库。这里重点讲下Java创建Milvus数据库的方式,官方文档里代码都帮我们写好了,说明文档还是挺详细的

import io.milvus.v2.client.MilvusClientV2;
import io.milvus.v2.client.ConnectConfig;
import io.milvus.v2.service.database.request.*;
# 创建连接配置,uri就是安装Milvus的服务器的地址
ConnectConfig config = ConnectConfig.builder()
.uri("http://localhost:19530")
.token("root:Milvus")
.build();
# 创建一个客户端连接,以后增删改查工作,都是通过这个客户端连接来完成
MilvusClientV2 client = new MilvusClientV2(config);
# 创建一个请求类,类里写了要创建的数据库的名称
CreateDatabaseReq createDatabaseReq = CreateDatabaseReq.builder()
.databaseName("my_database_1")
.build();
# 使用客户端连接,创建Milvus数据库
client.createDatabase(createDatabaseReq);以上只是简单创建数据库的方式,实际上数据库还有很多属性参数,可在创建数据库时考虑填加一些属性

还有更改和删除数据库,都比较简单

Collection是集合的意思,相当于MySQL中的表,MySQL中数据是存在表中。Milvus中数据是存在集合(Collection)中。更巧的是,Collections中也有字段、行和列的概念,如果实在不好理解,把它理解成MySQL中的表也可以
Collection的概念可以参考官方文档:https://milvus.io/docs/zh/manage-collections.md
官方文档中明确说明:Collection是一个二维表,具有固定的列和变化的行。每列代表一个字段,每行代表一个实体。这不就是跟MySQL中的表的概念一模一样吗

MySQL表中的字段有类型(int、long、char等)、长度和约束(比如是否允许为空)等。Milvus的Collection(集合)中的字段也一样,但是有点区别。官方文档中对 字段 也有介绍,只是入口稍微有点隐蔽。
点击 数字字段,或者直接点击官方文档地址:https://milvus.io/docs/zh/number.md
可以看到数字字段有Bool、int8、int16、int32、int64、float、double

字符串字段只有一种:Varchar

其它字段都能在文档中找到详细的介绍,这里就不一一介绍了
创建Collection(集合)之前先确定字段

第二步:创建索引。创建索引是可选的,也就是说也可以不用创建索引。因为索引的本质是加快对该字段的查询,就跟MySQL一样,有索引查的更快,没索引也就慢一点

第三步:创建Collection(集合)

查询Milvus中有哪些Collection(集合),相当于查询MySQL中有哪些表

删除Milvus中的Collection(集合),相当于删除MySQL中的表

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。