最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

milvus向量數(shù)據(jù)庫用法及部署(docker-compose)

 更新時間:2026年02月11日 09:38:57   作者:Hoking  
Milvus是一個開源的向量數(shù)據(jù)庫,專為存儲和檢索高維向量數(shù)據(jù)設(shè)計(jì),支持多種索引算法和混合查詢能力,它廣泛應(yīng)用于實(shí)時推薦系統(tǒng)、圖像/視頻檢索、生物信息學(xué)、自然語言處理和多模態(tài)檢索等領(lǐng)域,部署環(huán)境包括etcd、minio和attu等組件,通過docker-compose進(jìn)行管理

一、Milvus介紹

1.1 概述

Milvus 是一個開源的向量數(shù)據(jù)庫,專為存儲和檢索高維向量數(shù)據(jù)而設(shè)計(jì)。它并非傳統(tǒng)的關(guān)系型數(shù)據(jù)庫,而是專注于解決‌相似性搜索‌問題,即在海量數(shù)據(jù)中快速找到與查詢向量最相似的項(xiàng)。這使其成為處理圖像、視頻、音頻、文本等非結(jié)構(gòu)化數(shù)據(jù)的理想選擇。‌

多樣化的索引算法:內(nèi)置 IVF、HNSW、CAGRA(GPU 加速)等多種索引類型,可根據(jù)數(shù)據(jù)規(guī)模和場景需求(如追求高召回率或低延遲)進(jìn)行選擇和優(yōu)化。‌

強(qiáng)大的混合查詢能力‌:支持“向量相似性搜索”與“標(biāo)量過濾”(如指定品牌、時間范圍等)的結(jié)合,實(shí)現(xiàn)更精準(zhǔn)的檢索。

主要應(yīng)用場景:

  • 實(shí)時推薦系統(tǒng)‌:基于用戶行為向量,實(shí)現(xiàn)個性化內(nèi)容推薦,顯著提升點(diǎn)擊率和用戶時長。‌
  • 圖像/視頻檢索‌:在海量圖庫中快速找到語義相似的圖片或視頻幀。‌
  • 生物信息學(xué)‌:用于基因測序、蛋白質(zhì)序列分析等,加速新藥研發(fā)。‌
  • 自然語言處理與語義搜索‌:理解文本的語義,實(shí)現(xiàn)比關(guān)鍵詞匹配更智能的搜索。‌
  • 廣告推薦、自動駕駛、多模態(tài)檢索‌:處理來自傳感器、攝像頭等的多模態(tài)數(shù)據(jù)。

‌1.2 主要概念

Collection(集合)

直白的講:在Milvus里,一個Collection就像是一個表格,但里面放的不是普通的文字或數(shù)字,而是向量。每個向量代表了一個數(shù)據(jù)對象,比如一張圖或一段話的特征描述。

包含一組 entity,可以等價于關(guān)系型數(shù)據(jù)庫系統(tǒng)(RDBMS)中的表。

Entity(實(shí)體)

直白的講:實(shí)體就像是你盒子里的每張卡片,每個Entity都包含了向量信息,有時候還會有額外的標(biāo)簽或者描述,比如這張圖是哪只貓的名字、年齡之類的。

包含一組 field。field 與實(shí)際對象相對應(yīng)。field 可以是代表對象屬性的結(jié)構(gòu)化數(shù)據(jù),也可以是代表對象特征的向量。primary key 是用于指代一個 entity 的唯一值。

注:你可以自定義 primary key,否則 Milvus 將會自動生成 primary key。請注意,目前 Milvus 不支持 primary key 去重,因此有可能在一個 collection 內(nèi)出現(xiàn) primary key 相同的 entity。

Field(字段)

Entity 的組成部分。??Field?? 可以是結(jié)構(gòu)化數(shù)據(jù),例如數(shù)字和字符串,也可以是向量。

注:Milvus 2.0 現(xiàn)已支持標(biāo)量字段過濾。并且,Milvus 2.0 在一個集合中只支持一個主鍵字段。

Milvus與關(guān)系數(shù)據(jù)庫的對應(yīng)關(guān)系

Milvus向量數(shù)據(jù)庫關(guān)系型數(shù)據(jù)庫
Collection
Entity
Field表字段

Partition(分區(qū))

Partition(分區(qū))是Collection(集合)的一個分區(qū)。Milvus 支持將收集數(shù)據(jù)劃分為物理存儲上的多個部分。這個過程稱為分區(qū),每個分區(qū)可以包含多個段。

Segment(分段)

Milvus 在數(shù)據(jù)插入時,通過合并數(shù)據(jù)自動創(chuàng)建的數(shù)據(jù)文件。一個 collection 可以包含多個 segment。一個 segment 可以包含多個 entity。在搜索中,Milvus 會搜索每個 segment,并返回合并后的結(jié)果。

Sharding(分片)

Shard 是指將數(shù)據(jù)寫入操作分散到不同節(jié)點(diǎn)上,使 Milvus 能充分利用集群的并行計(jì)算能力進(jìn)行寫入。默認(rèn)情況下,單個 Collection 包含 2 個分片(Shard)。目前 Milvus 采用基于?主鍵哈希?的分片方式,未來將支持隨機(jī)分片、自定義分片等更加靈活的分片方式。

注:分區(qū)的意義在于通過劃定分區(qū)減少數(shù)據(jù)讀取,而分片的意義在于多臺機(jī)器上并行寫入操作

Index(索引)

索引基于原始數(shù)據(jù)構(gòu)建,可以提高對 collection 數(shù)據(jù)搜索的速度。Milvus 支持多種??索引類型??。為提高查詢性能,你可以為每個向量字段指定一種索引類型。目前,一個向量字段僅支持一種索引類型。切換索引類型時,Milvus 自動刪除之前的索引。

Milvus支持的索引類型主要分為CPU 索引 GPU 索引兩大類

CPU 索引

  • FLAT‌:執(zhí)行暴力搜索,不構(gòu)建索引,能保證 100% 的召回率,適用于數(shù)據(jù)規(guī)模較小(如百萬級)且對精度要求極高的場景。‌
  • IVF(Inverted File System)‌:通過聚類將向量空間劃分為多個單元,先搜索相關(guān)單元再進(jìn)行精確搜索,適用于大規(guī)模數(shù)據(jù)集的批量查詢。‌
  • HNSW(Hierarchical Navigable Small World)‌:基于圖結(jié)構(gòu)的索引,能實(shí)現(xiàn)高精度和高速度的實(shí)時搜索,是處理高維數(shù)據(jù)的常用選擇。‌
  • DiskANN‌:一種面向磁盤優(yōu)化的索引,專為處理超大規(guī)模數(shù)據(jù)集設(shè)計(jì),能在有限內(nèi)存下高效檢索。‌
  • ANNOY‌:基于樹的近似最近鄰搜索索引,適用于中等規(guī)模數(shù)據(jù)的快速檢索。‌

GPU 索引‌(利用 NVIDIA GPU 加速,性能遠(yuǎn)超 CPU 索引)

  • CAGRA(CUDA Accelerated Graph-based Retrieval Algorithm)‌:Milvus 2.4 新增支持,是 NVIDIA RAFT 庫中最先進(jìn)的 GPU 圖形索引,在小批量和大批量查詢中均表現(xiàn)出壓倒性優(yōu)勢,是當(dāng)前性能最強(qiáng)的索引之一。‌
  • GPU IVF-Flat‌:基于 GPU 的 IVF-Flat 索引,適用于需要高召回率的場景。‌
  • GPU IVF-PQ‌:基于 GPU 的 IVF-PQ(Product Quantization)索引,通過量化壓縮數(shù)據(jù),在保證較高精度的同時提升查詢速度。‌
  • GPU 暴搜‌:Milvus 2.4 還支持 GPU 加速的暴力搜索,性能可提升數(shù)十倍,滿足對召回率要求極高的應(yīng)用。‌

二、部署環(huán)境介紹

2.1 組件依賴關(guān)系

milvus的運(yùn)行依賴etcd和minio,所以需要優(yōu)先啟動這兩個組件。

  • etcd:用來存儲milvus的元數(shù)據(jù)。
  • minio:用來存儲milvus的向量數(shù)據(jù)和索引數(shù)據(jù)。

etcd是一個開源、分布式、強(qiáng)一致性的鍵值存儲系統(tǒng),主要用于為分布式系統(tǒng)提供可靠的協(xié)調(diào)服務(wù)。它由CoreOS(后被Red Hat收購)開發(fā),采用Go語言編寫,并基于Raft共識算法實(shí)現(xiàn)數(shù)據(jù)的一致性和高可用性。

etcd 通常用于在分布式系統(tǒng)中進(jìn)行配置管理、服務(wù)發(fā)現(xiàn)、分布式鎖、選舉等任務(wù)。

etcd 的特點(diǎn)包括:

  • 分布式一致性:基于 Raft 共識算法,etcd 確保數(shù)據(jù)在分布式環(huán)境中的一致性和可靠性。
  • 鍵值存儲:提供類似于 NoSQL 數(shù)據(jù)庫的鍵值對存儲功能。
  • 高可用性:通過多節(jié)點(diǎn)部署、自動故障轉(zhuǎn)移等方式提高服務(wù)的可用性。
  • 易于使用:提供簡單的 HTTP 和 gRPC API 進(jìn)行數(shù)據(jù)操作。
  • 事件通知:支持觀察特定鍵或鍵前綴的變化,并通過事件通知客戶端。

2.2 圖形化管理工具

attu為milvus的一款圖形化管理工具,非常方便對milvus的一些管理。
本例使用的版本為:zilliz/attu:v2.3.5

2.3 本地運(yùn)行環(huán)境

docker版本:Docker version 29.2.0, build 0b9d198

docker-compose版本:Docker Compose version v5.0.2

使用主要組件鏡像版本為:

  • etcd:quay.io/coreos/etcd:v3.5.5
  • minio:minio/minio:RELEASE.2023-04-28T18-11-17Z
  • milvus:milvusdb/milvus:v2.3.1
  • attu:zilliz/attu:v2.3.5

三、部署執(zhí)行步驟

3.1 準(zhǔn)備所需的鏡像文件

  • etcd:quay.io/coreos/etcd:v3.5.5
  • minio:minio/minio:RELEASE.2023-04-28T18-11-17Z
  • milvus:milvusdb/milvus:v2.3.1
  • attu:zilliz/attu:v2.3.5

3.2 依次導(dǎo)入所需鏡像文件

  • docker load -i etcd-v3.5.5.tar
  • docker load -i minio-RELEASE.2023-04-28T18-11-17Z.tar
  • docker load -i milvus-v2.3.1.tar
  • docker load -i attu-v2.3.5.tar

3.3 編寫milvus部署使用的docker-compose.yml文件

milvus-docker-compose.yml內(nèi)容如下

version: '3.5'

services:
  etcd:
    container_name: milvus-etcd
    image: quay.io/coreos/etcd:v3.5.5
    environment:
      - ETCD_AUTO_COMPACTION_MODE=revision
      - ETCD_AUTO_COMPACTION_RETENTION=1000
      - ETCD_QUOTA_BACKEND_BYTES=4294967296
      - ETCD_SNAPSHOT_COUNT=50000
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/etcd:/etcd
    command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd
    healthcheck:
      test: ["CMD", "etcdctl", "endpoint", "health"]
      interval: 30s
      timeout: 20s
      retries: 3

  minio:
    container_name: milvus-minio
    image: minio/minio:RELEASE.2023-04-28T18-11-17Z
    environment:
      MINIO_ACCESS_KEY: minioadmin
      MINIO_SECRET_KEY: minioadmin
    ports:
      - "9001:9001"
      - "9000:9000"
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/minio:/minio_data
    command: minio server /minio_data --console-address ":9001"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 30s
      timeout: 20s
      retries: 3

  standalone:
    container_name: milvus-standalone
    image: milvusdb/milvus:v2.3.1
    command: ["milvus", "run", "standalone"]
    environment:
      ETCD_ENDPOINTS: etcd:2379
      MINIO_ADDRESS: minio:9000
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/milvus:/var/lib/milvus
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"]
      interval: 30s
      start_period: 90s
      timeout: 20s
      retries: 3
    ports:
      - "19530:19530"
      - "9091:9091"
    depends_on:
      - "etcd"
      - "minio"

networks:
  default:
    name: milvus

3.4 編寫attu部署使用的docker-compose.yml文件

attu-docker-compose.yml內(nèi)容如下

version: '3.5'

services:
  attu:
    container_name: milvus-attu
    image: zilliz/attu:v2.3.5
    environment:
      - MILVUS_URL=172.16.15.4:19530
    ports:
      - "8000:3000"

3.5 創(chuàng)建部署目錄

mkdir milvus-standalone
mkidr milvus-attu
mv milvus-docker-compose.yml ./milvus-standalone/docker-compose.yml
mv attu-docker-compose.yml ./milvus-attu/docker-compose.yml

3.6 依次啟動服務(wù)

依次進(jìn)入工作目錄啟動milvus、attu服務(wù)

cd milvus-standalone
docker-compose up -d
cd ../milvus-attu

3.7 檢查服務(wù)運(yùn)行狀態(tài)

1)執(zhí)行docker ps -a,查看容器狀態(tài)

2)執(zhí)行docker logs -f milvus-standalone,查看milvus服務(wù)狀態(tài)

2)訪問http://127.0.0.1:9091/healthz,檢查milvus健康狀態(tài)

顯示OK即為正常

3)訪問http://127.0.0.1:8000,檢查attu的服務(wù)狀態(tài)

可以連上milvus并能顯示信息即可。

總結(jié)

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • docker重新加載nginx配置方式

    docker重新加載nginx配置方式

    這篇文章主要介紹了docker重新加載nginx配置方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • docker部署ruoyi項(xiàng)目的詳細(xì)步驟

    docker部署ruoyi項(xiàng)目的詳細(xì)步驟

    這篇文章主要介紹了docker部署ruoyi項(xiàng)目的詳細(xì)步驟,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2025-06-06
  • docker python api 安裝配置的詳解

    docker python api 安裝配置的詳解

    這篇文章主要介紹了docker python api 安裝配置的詳解的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-10-10
  • dockerfile構(gòu)建任意java鏡像的實(shí)現(xiàn)示例

    dockerfile構(gòu)建任意java鏡像的實(shí)現(xiàn)示例

    本文主要介紹了dockerfile構(gòu)建任意java鏡像的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-09-09
  • Docker數(shù)據(jù)卷和掛載目錄的使用

    Docker數(shù)據(jù)卷和掛載目錄的使用

    docker?在容器中管理數(shù)據(jù)主要有兩種方式,包括數(shù)據(jù)卷和掛載主機(jī)目錄,本文主要介紹了Docker數(shù)據(jù)卷和掛載目錄的使用,具有一定的參考價值,感興趣的可以了解一下
    2024-04-04
  • 解決docker啟動容器錯誤:docker:Error response from daemon:OCI runtime create failed

    解決docker啟動容器錯誤:docker:Error response from dae

    這篇文章主要介紹了解決docker啟動容器錯誤:docker:Error response from daemon:OCI runtime create failed問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • docker run之后狀態(tài)總是Exited

    docker run之后狀態(tài)總是Exited

    這篇文章主要介紹了docker run之后狀態(tài)總是Exited,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • 在Docker容器中使用Arthas的詳細(xì)步驟

    在Docker容器中使用Arthas的詳細(xì)步驟

    本文不是介紹arthas怎么用的。這里要說的是,如何在我們的docker容器中,使用arthas,對如何在Docker容器中使用Arthas相關(guān)知識感興趣的朋友一起看看吧
    2021-12-12
  • Docker之限制容器的資源使用過程

    Docker之限制容器的資源使用過程

    這篇文章主要介紹了Docker之限制容器的資源使用過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • K8s集群重啟與恢復(fù)-Node節(jié)點(diǎn)啟停方式

    K8s集群重啟與恢復(fù)-Node節(jié)點(diǎn)啟停方式

    這篇文章主要介紹了K8s集群重啟與恢復(fù)-Node節(jié)點(diǎn)啟停方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08

最新評論

昌乐县| 南投市| 永州市| 林口县| 彭山县| 洪洞县| 云梦县| 贵定县| 沙河市| 突泉县| 霍山县| 蓬莱市| 日照市| 上栗县| 新龙县| 沅陵县| 长岛县| 乐清市| 临城县| 甘谷县| 南投市| 陇川县| 南宁市| 富宁县| 龙里县| 衡南县| 长海县| 临江市| 蒙自县| 霍邱县| 北川| 西乡县| 云阳县| 石阡县| 湖口县| 安溪县| 靖州| 华亭县| 高青县| 乌拉特后旗| 资兴市|