Milvus向量库安装部署

GitHub - milvus-io/milvus-sdk-java: Java SDK for Milvus.

1、安装Standstone 版本

参考:Linux之milvus向量数据库安装_milvus安装-CSDN博客

参考:Install Milvus Standalone with Docker Milvus documentation

一、安装步骤

1、安装docker

  docker的安装见博文Linux之docker安装,这里不再赘述。

2、安装fio命令

   yum install -y fio

3、磁盘性能测试

fio --rw=write --ioengine=sync --fdatasync=1 --directory=test-data --size=2200m --bs=2300 --name=mytest

4、检查CPU支持的指令集

我们使用lscpu命令可以查看CPU支持的指令集,Flags的参数值就是该服务器支持的CPU指令集

lscpu

5、检查docker版本

  根据milvus安装要求,docker版本要求是19.03以上版本,我们这里安装的docker版本为23.0.1,满足要求。

6、安装docker compose组件

  根据milvus安装要求,docker compose版本要求是1.25.1以上,我们这里安装的版本是1.29.2,满足要求。

yum -y install python3-pip

pip3 install --upgrade pip

 pip install docker-compose

下载

wget https://raw.githubusercontent.com/milvus-io/milvus/master/scripts/standalone_embed.sh

启动 Start Milvus

bash standalone_embed.sh start

  • Stop Milvus

bash standalone_embed.sh stop

  • Connect to Milvus

To delete data after stopping Milvus, run:

bash standalone_embed.sh delete

运行

Run Milvus using Python Milvus documentation

安装 PyMilvus 

python3 -m pip install pymilvus==2.3.6

python3 -m pip install pymilvus  最新版本是2.2.4

python3 -c "from pymilvus import Collection"

wget https://raw.githubusercontent.com/milvus-io/pymilvus/master/examples/hello_milvus.py

Run the example code

# hello_milvus.py demonstrates the basic operations of PyMilvus, a Python SDK of Milvus.
# 1. connect to Milvus
# 2. create collection
# 3. insert data
# 4. create index
# 5. search, query, and hybrid search on entities
# 6. delete entities by PK
# 7. drop collection
import timeimport numpy as np
from pymilvus import (connections,utility,FieldSchema, CollectionSchema, DataType,Collection,
)fmt = "\n=== {:30} ===\n"
search_latency_fmt = "search latency = {:.4f}s"
num_entities, dim = 3000, 8#################################################################################
# 1. connect to Milvus
# Add a new connection alias `default` for Milvus server in `localhost:19530`
# Actually the "default" alias is a buildin in PyMilvus.
# If the address of Milvus is the same as `localhost:19530`, you can omit all
# parameters and call the method as: `connections.connect()`.
#
# Note: the `using` parameter of the following methods is default to "default".
print(fmt.format("start connecting to Milvus"))
# connects to a server
connections.connect("default", host="localhost", port="19530")has = utility.has_collection("hello_milvus")
print(f"Does collection hello_milvus exist in Milvus: {has}")#################################################################################
# 2. create collection
# We're going to create a collection with 3 fields.
# +-+------------+------------+------------------+------------------------------+
# | | field name | field type | other attributes |       field description      |
# +-+------------+------------+------------------+------------------------------+
# |1|    "pk"    |   VarChar  |  is_primary=True |      "primary field"         |
# | |            |            |   auto_id=False  |                              |
# +-+------------+------------+------------------+------------------------------+
# |2|  "random"  |    Double  |                  |      "a double field"        |
# +-+------------+------------+------------------+------------------------------+
# |3|"embeddings"| FloatVector|     dim=8        |  "float vector with dim 8"   |
# +-+------------+------------+------------------+------------------------------+
fields = [FieldSchema(name="pk", dtype=DataType.VARCHAR, is_primary=True, auto_id=False, max_length=100),FieldSchema(name="random", dtype=DataType.DOUBLE),FieldSchema(name="embeddings", dtype=DataType.FLOAT_VECTOR, dim=dim)
]schema = CollectionSchema(fields, "hello_milvus is the simplest demo to introduce the APIs")print(fmt.format("Create collection `hello_milvus`"))
hello_milvus = Collection("hello_milvus", schema, consistency_level="Strong")################################################################################
# 3. insert data
# We are going to insert 3000 rows of data into `hello_milvus`
# Data to be inserted must be organized in fields.
#
# The insert() method returns:
# - either automatically generated primary keys by Milvus if auto_id=True in the schema;
# - or the existing primary key field from the entities if auto_id=False in the schema.
# inserts vectors in the collection
print(fmt.format("Start inserting entities"))
rng = np.random.default_rng(seed=19530)
entities = [# provide the pk field because `auto_id` is set to False[str(i) for i in range(num_entities)],rng.random(num_entities).tolist(),  # field random, only supports listrng.random((num_entities, dim)),    # field embeddings, supports numpy.ndarray and list
]insert_result = hello_milvus.insert(entities)hello_milvus.flush()
print(f"Number of entities in Milvus: {hello_milvus.num_entities}")  # check the num_entities################################################################################
# 4. create index
# We are going to create an IVF_FLAT index for hello_milvus collection.
# create_index() can only be applied to `FloatVector` and `BinaryVector` fields.
# builds indexes on the entities:
print(fmt.format("Start Creating index IVF_FLAT"))
index = {"index_type": "IVF_FLAT","metric_type": "L2","params": {"nlist": 128},
}hello_milvus.create_index("embeddings", index)################################################################################
# 5. search, query, and hybrid search
# After data were inserted into Milvus and indexed, you can perform:
# - search based on vector similarity
# - query based on scalar filtering(boolean, int, etc.)
# - hybrid search based on vector similarity and scalar filtering.
## Before conducting a search or a query, you need to load the data in `hello_milvus` into memory.
# Loads the collection to memory and performs a vector similarity search:
print(fmt.format("Start loading"))
hello_milvus.load()# -----------------------------------------------------------------------------
# search based on vector similarity
print(fmt.format("Start searching based on vector similarity"))
vectors_to_search = entities[-1][-2:]
search_params = {"metric_type": "L2","params": {"nprobe": 10},
}start_time = time.time()
result = hello_milvus.search(vectors_to_search, "embeddings", search_params, limit=3, output_fields=["random"])
end_time = time.time()for hits in result:for hit in hits:print(f"hit: {hit}, random field: {hit.entity.get('random')}")
print(search_latency_fmt.format(end_time - start_time))# -----------------------------------------------------------------------------
# query based on scalar filtering(boolean, int, etc.)
print(fmt.format("Start querying with `random > 0.5`"))start_time = time.time()
result = hello_milvus.query(expr="random > 0.5", output_fields=["random", "embeddings"])
end_time = time.time()print(f"query result:\n-{result[0]}")
print(search_latency_fmt.format(end_time - start_time))# -----------------------------------------------------------------------------
# pagination
r1 = hello_milvus.query(expr="random > 0.5", limit=4, output_fields=["random"])
r2 = hello_milvus.query(expr="random > 0.5", offset=1, limit=3, output_fields=["random"])
print(f"query pagination(limit=4):\n\t{r1}")
print(f"query pagination(offset=1, limit=3):\n\t{r2}")# -----------------------------------------------------------------------------
# hybrid search
print(fmt.format("Start hybrid searching with `random > 0.5`"))start_time = time.time()
result = hello_milvus.search(vectors_to_search, "embeddings", search_params, limit=3, expr="random > 0.5", output_fields=["random"])
end_time = time.time()for hits in result:for hit in hits:print(f"hit: {hit}, random field: {hit.entity.get('random')}")
print(search_latency_fmt.format(end_time - start_time))###############################################################################
# 6. delete entities by PK
# You can delete entities by their PK values using boolean expressions.
ids = insert_result.primary_keysexpr = f'pk in ["{ids[0]}" , "{ids[1]}"]'
print(fmt.format(f"Start deleting with expr `{expr}`"))result = hello_milvus.query(expr=expr, output_fields=["random", "embeddings"])
print(f"query before delete by expr=`{expr}` -> result: \n-{result[0]}\n-{result[1]}\n")hello_milvus.delete(expr)result = hello_milvus.query(expr=expr, output_fields=["random", "embeddings"])
print(f"query after delete by expr=`{expr}` -> result: {result}\n")###############################################################################
# 7. drop collection
# Finally, drop the hello_milvus collection
print(fmt.format("Drop collection `hello_milvus`"))
utility.drop_collection("hello_milvus")

python3 hello_milvus.py

docker ps

192.168.1.242:9091/api/v1/health

使用浏览器访问连接地址http://ip:9091/api/v1/health,返回{“status”:“ok”}说明milvus数据库服务器运行正常。

docker port milvus-standalone

安装Attu

参考:https://github.com/zilliztech/attu/blob/main/doc/zh-CN/attu_install-docker.md

执行:

docker run -p 8000:3000 -e MILVUS_URL=192.168.1.242:19530 zilliz/attu:latest

待参考:kubernetes部署milvus_milvus集群版-CSDN博客

具体使用:

参考:Milvus技术探究 - 知乎 (zhihu.com)

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

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

相关文章

使用八爪鱼爬取京东商品详情页数据

文章目录 一、前述1.1、采集场景1.2、采集字段1.3、采集结果1.4、采集工具 二、采集步骤2.1、登录网站2.1.1、登录入口2.1.2、京东账号登录2.1.3、登录完成 2.2、自动识别2.3、选取爬取的内容2.4、处理数据2.4.1、纵向字段布局2.4.2、更多字段操作2.4.3、格式化数据2.4.4、添加…

OpenAI最新模型Sora到底有多强?眼见为实的真实世界即将成为过去!

文章目录 1. 写在前面2. 什么是Sora?3. Sora的技术原理 【作者主页】:吴秋霖 【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作! 【作者推荐】:对JS逆向感…

【动态规划】【组合数学】1866. 恰有 K 根木棍可以看到的排列数目

作者推荐 【深度优先搜索】【树】【有向图】【推荐】685. 冗余连接 II 本文涉及知识点 动态规划汇总 LeetCode1866. 恰有 K 根木棍可以看到的排列数目 有 n 根长度互不相同的木棍,长度为从 1 到 n 的整数。请你将这些木棍排成一排,并满足从左侧 可以…

Yii2项目使用composer异常记录

问题描述 在yii2项目中,使用require命令安装依赖时,出现如下错误提示 该提示意思是:composer运行时,执行了yiisoft/yii2-composer目录下的插件,但是该插件使用的API版本是1.0,但是当前的cmposer版本提供的…

Jmeter的自动化测试实施方案(超详细)

🍅 视频学习:文末有免费的配套视频可观看 🍅 关注公众号:互联网杂货铺,回复1 ,免费获取软件测试全套资料,资料在手,涨薪更快 Jmeter是目前最流行的一种测试工具,基于此工…

Pdoc:生成优雅Python API文档的工具

Pdoc:生成优雅Python API文档的工具 在开发Python项目时,文档是至关重要的。它不仅提供了对代码功能和用法的了解,还为其他开发人员提供了参考和使用的便利。Pdoc是一个流行的文档生成工具,专为生成Python API文档而设计。本文将介…

扯淡的DevOps,我们开发根本不想做运维!

引言 最初考虑引用“ DevOps 已死,平台工程才是未来”作为标题,但这样的表达可能太过于绝对。最终,决定用了“扯淡的”这个词来描述 DevOps,但这并不是一种文明的表达方式。 文章旨在重新审视 DevOps 和平台工程,将分别…

【c语言】人生重开模拟器

前言: 人生重开模拟器是前段时间非常火的一个小游戏,接下来我们将一起学习使用c语言写一个简易版的人生重开模拟器。 网页版游戏: 人生重开模拟器 (ytecn.com) 1.实现一个简化版的人生重开模拟器 (1) 游戏开始的时…

什么台灯最好学生晚上用的?五大高口碑学生护眼台灯推荐

对于学生来说,晚上学习早已是家常便饭,其中如果光线不合适,很容易就会造成近视的情况。面对这样的商机,很多厂家纷纷涉足护眼台灯行业,无论技术成熟与否,都大打护眼卖点,其中难免含有大量水分。…

SpringMVC的执行流程

过去的开发中,视图阶段(老旧JSP等) 1.首先用户发送请求到前端控制器DispatcherServlet(这是一个调度中心) 2.前端控制器DispatcherServlet收到请求后调用处理器映射器HandlerMapping 3.处理器映射器HandlerMapping找到具体的处理器,可查找xml配置或注…

milvus insert api的数据结构源码分析

insert api的数据结构 一个完整的insert例子: import numpy as np from pymilvus import (connections,FieldSchema, CollectionSchema, DataType,Collection, )num_entities, dim 10, 3print("start connecting to Milvus") connections.connect("default&q…

网络原理 - HTTP/HTTPS(2)

HTTP请求 认识URL URL基本格式 平时我们俗称的"网址"其实就是说的URL(Uniform Resource Locator统一资源定位符). (还有一个唯一资源标识符,称为uri,严格来说,uri范围比url广). 互联网上的每一个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该…

HTB-Analytics

靶机的IP地址为10.10.11.233,攻击机的IP地址为10.10.16.30 信息收集 # nmap -sT --min-rate 10000 -p- 10.10.11.233 -oN port.nmap Starting Nmap 7.94 ( https://nmap.org ) at 2024-02-19 14:50 CST Warning: 10.10.11.233 giving up on port because retransm…

十字星K线(Doji)含义,fpmarkets澳福一分钟讲解

许多新手交易者遇到过这种奇怪的烛台,看起来就像一个十字架,没有主体上下有长长的影子,fpmarkets澳福肯定的告诉各位投资者,这种就是十字星K线(用Doji表示),开盘价与收盘价一致,价格运动已经停止时出现在烛…

突发!某地区网络故障,格行随身WiFi成“救星”?现场直击!

近日,某地区突发网络故障,导致大量用户无法上网。然而,在这场网络危机中,一款名为“格行随身WiFi”的设备却意外走红,成为了当地的“网络救星”。究竟发生了什么?让我们一起来现场直击! 据了解&…

Leetcode刷题笔记题解(C++):120. 三角形最小路径和

思路:动态规划,去生成一个对应的当前节点的最小路径值,对应的关系如下所示 dp[0][0] triangle[0][0] dp[i][0] triangle[i][0]dp[i-1][0] dp[i][i] triangle[i][i]dp[i-1][i] dp[i][j] triangle[i][j]min(dp[i-1][j-1],dp[i-1][j]) …

语义相关性评估指标:召回率、准确率、Roc曲线、AUC;Spearman相关系数、NDCG、mAP。代码及计算示例。

常规的语义相关性评价可以从检索、排序两个方面进行。这里只贴代码。详细可见知乎https://zhuanlan.zhihu.com/p/682853171 检索 精确率 def pre(true_labels[],pre_labels[]):""":param true_labels: 正样本索引:param pre_labels: 召回样本索引:return: 精…

首都博物京韵展,监测系统实现文物科技保护

​ 一、首都博物馆讲述京韵古都故事 2024年2月18日,首都博物馆重新亮相的“华夏文明的有力见证——北京通史展”震撼登场。展览面积4900平方米,汇聚1100多件(套)历史文物,不仅包含了传统历史瑰宝,还增加了…

【算法】基础算法002之滑动窗口(二)

👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 🌝每一个不曾起舞的日子,都是对生命的辜负 目录 前言 5.水果成篮&#xff…

【Java EE初阶十八】网络原理(三)

3. 网络层 网络层要做的事情主要是两方面: 1)、地址管理:制定一系列的规则,通过地址,描述出网络上一个设备的位置; 2)、路由选择:网络环境是比较复杂的,从一个节点到另一个节点之间,存在很…