Milvus 单机版部署

在 Docker 环境下安装、应用和配置 Milvus 向量数据库可以按照以下步骤进行,涵盖从安装到基础应用的完整流程:

1. 部署前准备

  • 服务器:建议测试环境配置 2 核 CPU、8GB 内存;处理 100 万组向量数据,推荐 4 核 CPU、16GB 内存及 50GB 存储;500 万组向量数据则需 8 核 CPU、32GB 内存及 200GB 存储 。
  • 软件层面,服务器需安装 Docker

1.1 Milvus 单机版镜像

# 拉取最新版 Milvus 单机版镜像
docker pull milvusdb/milvus:latest# 或指定具体版本(推荐,版本更稳定)
docker pull milvusdb/milvus:v2.4.5

1.2 MinIO 镜像(对象存储)

docker pull minio/minio:RELEASE.2023-03-20T20-16-18Z

参考图片存储MinIO 应用介绍及 Docker 环境下的安装部署

1.3拉取 etcd 镜像(元数据存储)

# Milvus 推荐的 etcd 版本
docker pull quay.io/coreos/etcd:v3.5.5

Milvus安装准备etcd介绍、应用场景及Docker安装配置

2. 启动 Milvus 单机服务

2.1配置文件 milvus-config

文件挂载的目录下

在这里插入图片描述
进入milvus-config,在线拉去配置文件

 wget https://raw.githubusercontent.com/milvus-io/milvus/v2.4.5/configs/milvus.yaml

2.2 etcd的配置

在这里插入图片描述
在这里插入图片描述

2.3 mino的配置

在这里插入图片描述

3. 启动服务

docker run -d \--name milvus245 \                 # 容器名称,方便后续管理-p 19530:19530 \                  # 端口映射:宿主机19530 -> 容器19530(客户端连接端口)-p 9091:9091 \                    # 端口映射:宿主机9091 -> 容器9091(监控/健康检查端口)--privileged \                     # 授予容器特权模式(避免部分文件系统权限问题)-v /data/milvus/milvus-config/milvus.yaml:/milvus/configs/milvus.yaml \  # 挂载自定义配置文件-v /data/milvus/milvus-data:/milvus/data \                               # 挂载数据目录(持久化向量数据)-v /data/milvus/milvus-var:/var/lib/milvus \                             # 挂载var目录(内部状态文件)-v /data/milvus/milvus-logs:/milvus/logs \                               # 挂载日志目录(持久化日志)milvusdb/milvus:v2.4.5 \           # 使用的镜像:Milvus 2.4.5版本milvus run standalone              # 容器启动命令:以单机模式运行Milvus

关键参数说明

  • –name milvus245
    为容器指定一个唯一名称(milvus245),后续可通过该名称操作容器(如 docker stop milvus245),避免使用自动生成的随机名称。
    端口映射(-p)
    19530:Milvus 客户端 SDK 连接的端口(如 Python 的 pymilvus、Java SDK 等)。
    9091:Milvus 监控和健康检查端口,可通过 http://localhost:9091/healthz 检查服务状态。
  • –privileged
    授予容器特权模式,解决部分环境下因文件系统权限不足导致的启动失败(如宿主机目录权限严格时),非必需但建议添加以避免权限问题。
  • 数据持久化(-v 挂载)
    通过 volume 挂载将容器内的关键目录映射到宿主机,确保容器删除后数据不丢失:
    配置文件:/data/milvus/milvus-config/milvus.yaml(宿主机)→ /milvus/configs/milvus.yaml(容器),用于加载自定义配置。
    数据目录:/milvus/data 存储向量数据和索引文件,映射到宿主机 /data/milvus/milvus-data。
  • 日志目录:/milvus/logs 存储运行日志,映射到宿主机 /data/milvus/milvus-logs,方便问题排查。
  • 启动命令(milvus run standalone)
    明确指定 Milvus 以单机模式(standalone)运行,这是 v2.4.x 版本的标准启动方式,确保 tini 初始化进程能正确启动 Milvus 主服务。

4. 检查服务状态

# 检查健康状态
curl http://localhost:9091/healthz# 查看版本信息
curl http://localhost:9091/v1/version

在这里插入图片描述

5、基础操作示例

使用 Python 客户端连接并操作 Milvus:

# 安装客户端
# pip install pymilvusfrom pymilvus import (connections,utility,FieldSchema,CollectionSchema,DataType,Collection,
)
import random# 1. 连接到 Milvus
connections.connect(alias="default",host="localhost",  # 若在远程服务器,替换为实际IPport="19530"
)# 2. 定义集合名称
collection_name = "demo_vectors"# 3. 若集合已存在则删除
if utility.has_collection(collection_name):utility.drop_collection(collection_name)# 4. 定义集合结构
fields = [FieldSchema(name="id", dtype=DataType.INT64, is_primary=True, auto_id=False),FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=384),  # 384维向量FieldSchema(name="category", dtype=DataType.VARCHAR, max_length=50)   # 分类信息
]schema = CollectionSchema(fields=fields,description="演示用向量集合"
)# 5. 创建集合
collection = Collection(name=collection_name, schema=schema)# 6. 创建索引
index_params = {"index_type": "IVF_FLAT","metric_type": "COSINE",  # 使用余弦相似度"params": {"nlist": 128}
}collection.create_index(field_name="embedding",index_params=index_params
)# 7. 插入示例数据
num_entities = 1000
data = [[i for i in range(num_entities)],  # id[[random.random() for _ in range(384)] for _ in range(num_entities)],  # 向量[f"category_{random.randint(1, 10)}" for _ in range(num_entities)]  # 分类
]insert_result = collection.insert(data)
print(f"成功插入 {len(insert_result.primary_keys)} 条数据")# 8. 加载集合到内存
collection.load()# 9. 执行向量搜索
query_vector = [[random.random() for _ in range(384)]]  # 生成查询向量search_params = {"metric_type": "COSINE","params": {"nprobe": 10}
}results = collection.search(data=query_vector,anns_field="embedding",param=search_params,limit=5,  # 返回前5个最相似结果output_fields=["category"]
)# 10. 输出搜索结果
print("\n搜索结果(按相似度排序):")
for hit in results[0]:print(f"ID: {hit.id}, 分类: {hit.entity.get('category')}, 相似度: {1 - hit.distance:.4f}")# 11. 释放集合
collection.release()# 12. 断开连接
connections.disconnect("default")

总结

通过以上步骤,即可完成 Milvus 单机版在 Docker 环境下的部署、配置及基础应用。这种部署方式适合中小规模向量数据的管理与检索场景,如实验环境测试、小型 AI 应用开发等。==

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

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

相关文章

前端版本更新检测机制

📌 一、为什么需要前端版本更新检测机制?在现代 Web 项目中,我们通常会通过 CDN 或缓存策略来加快页面加载速度,但这也带来了一个问题:用户可能访问的是旧版本的页面或资源,而不会自动更新到最新版本。这在…

Python(09)正则表达式

特殊字符 1. 基本元字符 .:匹配除换行符以外的任意单个字符。 *:匹配前面的元素零次或多次。 :匹配前面的元素一次或多次。 ?:匹配前面的元素零次或一次。 2. 定量符 {n}:匹配前面的元素恰好 n 次。 {n,}:…

k8s容器放开锁内存限制

参考:https://access.redhat.com/solutions/1257953 问题 nccl-test容器docker.io/library/nccl-tests:24.12中跑mpirun,buff设置为NCCL_BUFFSIZE503316480 提示out of memory: pod-1:78:91 [0] include/alloc.h:114 NCCL WARN Cuda failure …

基于Zigee的温度数据采集系统

大家好,本文带来的是单片机课设-基于Zigee的温度数据采集系统。 一、设计内容和要求 基于Zigbee的数据采集系统 1.1设计内容 (1)分析对比Bluetooth、Zigbee、Lora方式组网的基本原理和性能差异,撰写分析报告; &#xf…

ATH12K 驱动框架分析

文章目录 Linux Wireless 驱动框架深入分析 **1. 核心框架层次结构** **1.1 cfg80211 子系统 (`net/wireless/`)** **1.2 mac80211 子系统 (`net/mac80211/`)** **2. ath12k 驱动架构分析** **2.1 核心管理文件** **2.2 数据路径文件** **2.3 平台接口文件** **2.4 功能模块文件…

OSPF路由协议单区域

RIP的不足 以跳数评估的路由并非最优路径 如果RTA选择S0/0传输,传输需时会大大缩短为3sRIP协议限制网络直径不能超过16跳 收敛速度慢 RIP定期路由更新 – 更新计时器:定期路由更新的时间间隔,默认30秒。 – 失效计时器:失效计时器…

Kubernetes部署与管理Scrapy爬虫:企业级分布式爬虫平台构建指南

引言:Kubernetes在爬虫领域的战略价值在大规模数据采集场景中,​​容器化爬虫管理​​已成为企业级解决方案的核心。根据2023年爬虫技术调查报告:采用Kubernetes的爬虫系统平均资源利用率提升​​65%​​故障恢复时间从小时级缩短至​​秒级​…

Web-Machine-N7靶机攻略

一.环境准备(VBox,kali虚拟机,靶机) 1.1Vbox下载地址: Downloads – Oracle VirtualBox 1.2将N7导入到这个虚拟机中 1.3将kali和Vbox都设置成桥接模式 1.4开启靶机 若鼠标出不来可以使用组合技,CtrlAltDelete强制退出 二.信息…

用毫秒级视频回传打造稳定操控闭环之远程平衡控制系统技术实践

在工业自动化、远程机器人、无人装备等复杂作业场景中,远程实时操控正逐步取代传统“监控指令”模式,成为提升效率与保障安全的关键能力。尤其在高风险、高精度的应用环境中,操作者不仅要“能控”,更要“看得准、反应快”。 真正…

瑞萨电子RA-T MCU系列新成员RA2T1——电机控制专家

RA2T1系列微控制器基于64MHz ArmCortex-M23内核设计,专为单电机控制应用而优化。RA2T1集成PWM定时器,以及配备3个采样保持电路的A/D转换器等先进的模拟功能,适用于电动工具,风扇和家用电器等高效的低端电机控制方案。RA2T1支持1.6…

Java排序算法之<选择排序>

目录 1、选择排序 1.1、介绍 1.2、稳定性 2、执行流程 3、java实现 4、优缺点 总结:Java 排序算法进阶路线 O(n) 算法(适合学习原理) 冒泡排序(最慢)→ 选择排序 → 插入排序(推荐先学) …

ESP8266 http收发数据

1.先修改基础配置 make menuconfig 打开配置菜单 选择component config 然后选择 修改波特率为115200 保存退出 2.修改彩色日志打印的 在component config目录下找到log output 选中点击空格关掉彩色日志输出,这样正常串口打印就没有乱码了 然后保存退出 3…

ZLMediaKit 源代码入门

ZLMediaKit 是一个基于 C11 开发的高性能流媒体服务器框架,支持 RTSP、RTMP、HLS、HTTP-FLV 等协议。以下是源代码入门的详细指南: 1. 源码结构概览 主要目录结构: text ZLMediaKit/ ├── cmake/ # CMake 构建配置 ├── …

智能Agent场景实战指南 Day 21:Agent自主学习与改进机制

【智能Agent场景实战指南 Day 21】Agent自主学习与改进机制 文章内容 开篇 欢迎来到"智能Agent场景实战指南"系列的第21天!今天我们将深入探讨智能Agent的自主学习与改进机制——这是使Agent能够持续提升性能、适应动态环境的核心能力。在真实业务场景…

微信小程序中英文切换miniprogram-i18n-plus

原生微信小程序使用 miniprogram-i18n-plus第一步:npm install miniprogram-i18n-plus -S安装完成后,会在项目文件文件夹 node_modules文件里生成 miniprogram-i18n-plus, 然后在工具栏-工具-构建npm,然后看到miniprogram_npm里面…

LeetCode 127:单词接龙

LeetCode 127:单词接龙问题本质:最短转换序列的长度 给定两个单词 beginWord 和 endWord,以及字典 wordList,要求找到从 beginWord 到 endWord 的最短转换序列(每次转换仅改变一个字母,且中间单词必须在 wo…

docker搭建ray集群

1. 安装docker 已安装过docker 没安装流程 启动 Docker 服务: sudo systemctl start docker sudo systemctl enable docker # 设置开机即启动docker验证 Docker 是否安装成功: docker --version2. 部署ray # 先停止docker服务 systemctl stop docker…

【iOS】SideTable

文章目录前言1️⃣Side Table 的核心作用:扩展对象元数据存储1.1 传统对象的内存限制1.2 Side Table 的定位:集中式元数据仓库2️⃣Side Table 的底层结构与关联2.1 Side Table 与 isa 指针的关系2.2 Side Table 的存储结构2.3 SideTable 的工作流程3️⃣…

【Spring Cloud Gateway 实战系列】高级篇:服务网格集成、安全增强与全链路压测

一、服务网格集成:Gateway与Istio的协同作战在微服务架构向服务网格演进的过程中,Spring Cloud Gateway可与Istio形成互补——Gateway负责南北向流量(客户端到集群)的入口管理,Istio负责东西向流量(集群内服…

一文说清楚Hive

Hive作为Apache Hadoop生态的核心数据仓库工具,其设计初衷是为熟悉SQL的用户提供大规模数据离线处理能力。以下从底层计算框架、优点、场景、注意事项及实践案例五个维度展开说明。 一、Hive底层分布式计算框架对比 Hive本身不直接执行计算,而是将HQL转换…