Milvus 部署選項概述
Milvus 是一個高效能、可擴充的向量資料庫。它支援各種規模的使用案例,從在本機 Jupyter Notebooks 中執行的示範,到處理數百億向量的大型 Kubernetes 集群。目前,Milvus 有三種部署選項:Milvus Lite、Milvus Standalone 和 Milvus Distributed。
Milvus Lite
Milvus Lite是可匯入您應用程式的 Python 函式庫。作為 Milvus 的輕量級版本,它非常適合在 Jupyter Notebook 或資源有限的智慧型裝置上執行快速原型。Milvus Lite 支援與其他 Milvus 部署相同的 API。與 Milvus Lite 互動的用戶端程式碼也可以在其他部署模式下與 Milvus 實體一起運作。
要將 Milvus Lite 整合到您的應用程式中,請執行pip install pymilvus
來安裝它,並使用MilvusClient("./demo.db")
語句來實體化一個向量資料庫,該資料庫的本機檔案會持久化您所有的資料。如需更多詳細資訊,請參閱運行 Milvus Lite。
Milvus 單機版
Milvus Standalone 是單機伺服器部署。Milvus Standalone 的所有元件都包裝在單一Docker 映像檔中,讓部署更方便。如果您有生產工作負載,但又不想使用 Kubernetes,在有足夠記憶體的單機上執行 Milvus Standalone 是個不錯的選擇。此外,Milvus Standalone 透過主從複製支援高可用性。
分散式 Milvus
Milvus Distributed 可以部署在Kubernetes集群上。此部署採用雲原生架構,擷取負載和搜尋查詢分別由獨立節點處理,讓關鍵元件具有備援。它提供最高的可擴充性和可用性,以及自訂每個元件所分配資源的彈性。Milvus Distributed 是企業用戶在生產中運行大型向量搜索系統的首選。
為您的使用個案選擇正確的部署模式
部署模式的選擇通常取決於您應用程式的開發階段:
用於快速原型
如果您想快速建立原型或作為學習用途,例如檢索擴增世代 (Retrieval Augmented Generation, RAG) demo、AI 聊天機、多模態搜尋,Milvus Lite 本身或 Milvus Lite 與 Milvus Standalone 的組合都很適合。您可以在筆記型電腦中使用 Milvus Lite 進行快速原型設計,並探索各種方法,例如 RAG 中的不同分塊策略。您可能希望將 Milvus Lite 建立的應用程式部署到小規模的生產中,以服務真正的使用者,或在較大的資料集上驗證想法,例如超過幾百萬的向量。Milvus Standalone 是合適的。Milvus Lite 的應用程式邏輯仍可共用,因為所有 Milvus 部署都有相同的客戶端 API。Milvus Lite 儲存的資料也可以透過命令列工具移植到 Milvus Standalone。
小規模生產部署
對於早期階段的生產,當專案仍在尋求產品與市場的契合,敏捷性比可擴展性更重要時,Milvus Standalone 是最好的選擇。只要有足夠的機器資源,Milvus Standalone 仍可擴充至 1 億向量,同時對 DevOps 的需求遠低於維護 K8s 集群。
大型生產部署
當您的業務快速成長,資料規模超過單一伺服器的容量,是時候考慮Milvus Distributed。您可以繼續使用Milvus Standalone作為開發或暫存環境,並運行Milvus Distributed的K8s集群。這可讓您持續處理數百億個向量,並可針對您的特定工作負載,例如高讀取次數、低寫入次數或高寫入次數、低讀取次數的情況,彈性調整節點大小。
邊緣裝置上的本機搜尋
若要在邊緣裝置上搜尋私人或敏感資料,您可以在裝置上部署 Milvus Lite,而無需依賴雲端服務來進行文字或影像搜尋。這適用於專屬文件搜尋或裝置上物件偵測等情況。
Milvus 部署模式的選擇取決於您專案的階段與規模。Milvus 提供靈活且功能強大的解決方案,可滿足從快速原型到大規模企業部署的各種需求。
- Milvus Lite建議用於較小的資料集,最多可達數百萬向量。
- Milvus Standalone適用於中型資料集,最多可擴充至 1 億向量。
- Milvus Distributed專為大規模部署而設計,能夠處理從 1 億到數百億向量的資料集。
選擇適合您使用情況的部署選項
功能比較
特點 | Milvus Lite | Milvus 單機版 | 分散式 |
---|---|---|---|
SDK / 客戶端軟體 | Python gRPC | Python Go Java Node.js C# RESTful | Python Java Go Node.js C# RESTful |
資料類型 | Dense Vector Sparse Vector Binary Vector Boolean Integer Floating Point VarChar Array JSON | Dense Vector Sparse Vector Binary Vector Boolean Integer Floating Point VarChar Array JSON | Dense Vector Sparse Vector Binary Vector Boolean Integer Floating Point VarChar Array JSON |
搜尋功能 | 向量搜尋 (ANN Search) 元資料篩選 範圍搜尋 標量查詢 依主索引鍵取得實體 混合搜尋 | 向量搜尋 (ANN Search) 元資料篩選 範圍搜尋 標量查詢 依主索引鍵取得實體 混合搜尋 | 向量搜尋 (ANN 搜尋) 元資料篩選 範圍搜尋 標量查詢 依主索引鍵取得實體 混合搜尋 |
CRUD 操作 | ✔️ | ✔️ | ✔️ |
進階資料管理 | 不適用 | 存取控制 磁碟分割 磁碟分割金鑰 | 存取控制 磁碟分割 磁碟分割金鑰 實體資源群組 |
一致性等級 | 強 | 強 有限制的停滯性 會話 最終 | 強 有限制的不穩定性 會話 最終 |