圖片查重從設計到實現(4)圖片向量化存儲-Milvus 單機版部署

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轉換…