Milvus簡(jiǎn)介(V1.1.1)
Milvus 是一款開源的向量數(shù)據(jù)庫,支持針對(duì) TB 級(jí)向量的增刪改操作和近實(shí)時(shí)查詢,具有高度靈活、穩(wěn)定可靠以及高速查詢等特點(diǎn)。Milvus 集成了 Faiss、NMSLIB、Annoy 等廣泛應(yīng)用的向量索引庫,提供了一整套簡(jiǎn)單直觀的 API,讓你可以針對(duì)不同場(chǎng)景選擇不同的索引類型。此外,Milvus 還可以對(duì)標(biāo)量數(shù)據(jù)進(jìn)行過濾,進(jìn)一步提高了召回率,增強(qiáng)了搜索的靈活性。
目前官方發(fā)行版本為:V1.1.1,本文將以V1.1.1為基準(zhǔn)介紹Milvus。
Milvus 提供兩個(gè)發(fā)行版本:CPU 版本和 GPU 版本。
- CPU 版 Milvus 僅支持使用 CPU 建索引和搜索。
- GPU 版 Milvus 在 CPU 版的基礎(chǔ)上進(jìn)行了 GPU 加速:支持同時(shí)進(jìn)行索引創(chuàng)建和搜索計(jì)算以提高查詢效率。你可以在同一時(shí)間內(nèi)使用 GPU 建索引,使用 CPU 搜索向量。
如果你的計(jì)算機(jī)上安裝了支持 CUDA 功能的 GPU 設(shè)備,你可以安裝 Milvus 的 GPU 版本以獲取針對(duì)海量數(shù)據(jù)的更優(yōu)的查詢性能。
應(yīng)用場(chǎng)景
Milvus 在全球范圍內(nèi)已被數(shù)百家組織和機(jī)構(gòu)所采用,廣泛應(yīng)用于以下場(chǎng)景:
圖像、視頻、音頻等音視頻搜索領(lǐng)域
文本搜索、推薦和交互式問答系統(tǒng)等文本搜索領(lǐng)域
新藥搜索、基因篩選等生物醫(yī)藥領(lǐng)域
整體架構(gòu)
Milvus 服務(wù)器采用主從式架構(gòu) (Client-server model)。
- 在服務(wù)端,Milvus 由 Milvus Core 和 Meta Store 兩部分組成:
- Milvus Core 存儲(chǔ)與管理向量和標(biāo)量數(shù)據(jù)。
- Meta Store 存儲(chǔ)與管理 SQLite 和 MySQL 中的元數(shù)據(jù),分別用于測(cè)試和生產(chǎn)。
- 在客戶端,Milvus 還提供了基于 Python、Java、Go、C++ 的 SDK 和 RESTful API。
Milvus 的服務(wù)器在單節(jié)點(diǎn)上運(yùn)行。對(duì)于有更大數(shù)據(jù)規(guī)?;蛘吒卟l(fā)需求的用戶,可以使用目前尚在開發(fā)階段的集群分片中間件 Mishards 進(jìn)行部署。
主要特性
-
異構(gòu)計(jì)算
- 優(yōu)化了基于 GPU 搜索向量和建立索引的性能。
- 可以在單臺(tái)通用服務(wù)器上完成對(duì) TB 級(jí)數(shù)據(jù)的毫秒級(jí)搜索。
- 動(dòng)態(tài)數(shù)據(jù)管理。
-
支持主流索引庫、距離計(jì)算方式和監(jiān)控工具
- 集成了 Faiss、NMSLIB、Annoy 等向量索引庫。
- 支持基于量化的索引、基于圖的索引和基于樹的索引。
- 相似度計(jì)算方式包括歐氏距離 (L2)、內(nèi)積 (IP)、漢明距離、杰卡德距離等。
- Prometheus 作為監(jiān)控和性能指標(biāo)存儲(chǔ)方案,Grafana 作為可視化組件進(jìn)行數(shù)據(jù)展示。
-
近實(shí)時(shí)搜索
- 插入 Milvus 的數(shù)據(jù)默認(rèn)在 1 秒后即可被搜索到。
- 標(biāo)量字段過濾 (即將上線)
- 支持向量和標(biāo)量數(shù)據(jù)。
- 可以對(duì)標(biāo)量數(shù)據(jù)進(jìn)行過濾,增強(qiáng)搜索的靈活性。
本地安裝
官方提供里docker鏡像可直接安裝,docker版本需19.03 或以上,由于Milvus的server_config.yaml?文件中設(shè)置的?cache.insert_buffer_size
?和?cache.cache_size之和(默認(rèn)5G)為每個(gè)docker容器最小內(nèi)存,所以
每個(gè)docker容器需分配最少5.5g內(nèi)存才能正常啟動(dòng)Milvus容器。
Milvus配置下載安裝
mkdir -p /home/$USER/milvus/conf
cd /home/$USER/milvus/conf
wget?https://raw.githubusercontent.com/milvus-io/milvus/v1.1.1/core/conf/demo/server_config.yaml
啟動(dòng)Milvus
docker run -d --name milvus_cpu_1.1.1 \
-p 19530:19530 \ -p 19121:19121 \
-v /home/$USER/milvus/db:/var/lib/milvus/db?\
-v /home/$USER/milvus/conf:/var/lib/milvus/conf?\
-v /home/$USER/milvus/logs:/var/lib/milvus/logs?\
-v /home/$USER/milvus/wal:/var/lib/milvus/wal?\
milvusdb/milvus:1.1.1-cpu-d061621-330cc6
驗(yàn)證Milvus
使用Python sdk進(jìn)行驗(yàn)證:
下載pymilvus包:pip3 install pymilvus==1.1.2
下載python示例代碼:wget?https://raw.githubusercontent.com/milvus-io/pymilvus/v1.1.2/examples/example.py文章來源:http://www.zghlxwxcb.cn/news/detail-458035.html
運(yùn)行示例代碼:python3 example.py文章來源地址http://www.zghlxwxcb.cn/news/detail-458035.html
到了這里,關(guān)于Milvus實(shí)踐 第一章:簡(jiǎn)介與部署的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!