
類型:向量數(shù)據(jù)庫
簡介:存儲、索引和管理由深度神經(jīng)網(wǎng)絡(luò)和機器學(xué)習(xí)(ML)模型生成的大規(guī)模嵌入向量。
Milvus是一個高性能、可擴展的向量數(shù)據(jù)庫,支持各種規(guī)模的用例,從在Jupyter Notebooks中本地運行的演示到處理數(shù)百億向量的大規(guī)模Kubernetes集群。目前,Milvus提供三種部署選項:Milvus Lite、Milvus Standalone和Milvus Distributed。
一、Milvus Lite
Milvus Lite是一個Python庫,可以導(dǎo)入到你的應(yīng)用程序中。作為Milvus的輕量級版本,它非常適合在 Jupyter Notebooks中快速原型設(shè)計,或者在資源有限的智能設(shè)備上運行。Milvus Lite支持的API與其他Milvus部署相同。與Milvus Lite交互的客戶端代碼也可以與其他部署模式下的Milvus實例一起工作。
要將Milvus Lite集成到應(yīng)用程序中,請運行以安裝它,并使用語句實例化一個包含所有數(shù)據(jù)的本地文件。
!pip install pymilvus from milvus import MilvusClient milvus_client = MilvusClient("./demo.db")
二、Milvus Standalone
Milvus Standalone是一個單機服務(wù)器部署。Milvus Standalone的所有組件都打包在一個Docker鏡像中,方便部署。如果你有生產(chǎn)工作負(fù)載,但不喜歡使用Kubernetes,那么在內(nèi)存充足的單機上運行Milvus Standalone是個不錯的選擇。此外,Milvus Standalone通過主從復(fù)制支持高可用性。
三、Milvus Distributed
Milvus Distributed可以部署在Kubernetes集群上。此部署采用云原生架構(gòu),其中引入負(fù)載和搜索查詢由隔離節(jié)點單獨處理,從而為關(guān)鍵組件提供冗余。它提供了最高的可擴展性和可用性,以及自定義每個組件中分配的資源的靈活性。Milvus Distributed是企業(yè)用戶在生產(chǎn)環(huán)境中運行大規(guī)模向量搜索系統(tǒng)的首選。
四、如何選擇Milvus版本
1、小規(guī)模生產(chǎn)
對于前期生產(chǎn)來說,當(dāng)項目仍在尋求產(chǎn)品與市場的契合度,敏捷性比可擴展性更重要時,MilvusStandalone是最好的選擇。如果有足夠的機器資源,它仍然可以擴展到100M向量,同時與維護K8s集群相比,它需要的DevOps要少得多。
2、大規(guī)模生產(chǎn)
隨著業(yè)務(wù)快速增長,數(shù)據(jù)規(guī)模超過單臺服務(wù)器的容量,是時候考慮使用Milvus Distributed了。為了方便起見,可以繼續(xù)使用Milvus Standalone進行開發(fā)或暫存環(huán)境,并操作運行Milvus Distributed的 K8s 集群。這使能夠處理數(shù)百億個向量,并為特定工作負(fù)載定制節(jié)點大小提供了靈活性,例如高讀取、不頻繁寫入或高寫入、低讀取情況。
3、邊緣設(shè)備上的本地搜索
對于邊緣設(shè)備上的私有或敏感搜索,可以在設(shè)備上部署Milvus Lite,而無需依賴基于云的服務(wù)進行文本或圖像搜索。這適用于專有文檔搜索或設(shè)備上對象檢測等情況。
Milvus部署模式的選擇取決于項目階段和規(guī)模。Milvus為各種需求提供了靈活而強大的解決方案,從快速原型設(shè)計到大規(guī)模企業(yè)部署。
- Milvus Lite:推薦用于較小的數(shù)據(jù)集,最多幾百萬個向量;
- Milvus Standalone:適用于中等規(guī)模的數(shù)據(jù)集,可擴展至 1 億向量;
- Milvus Distributed:專為大規(guī)模部署而設(shè)計,能夠處理 1 億到數(shù)百億向量的數(shù)據(jù)集。
五、功能比較
特征 | Milvus Lite | Milvus Standalone | Milvus Distributed |
SDK / 客戶端資料庫 | Python, gRPC | Python, Go, Java, Node.js, C# | Python, Java, Go, Node.js, C# |
數(shù)據(jù)類型 | 密集向量, 稀疏向量, 二進制向量, 布爾值, 整數(shù), 浮點數(shù), VarChar, 數(shù)組, JSON | 密集向量, 稀疏向量, 二進制向量, 布爾值, 整數(shù), 浮點數(shù), VarChar, 數(shù)組, JSON | 密集向量, 稀疏向量, 二進制向量, 布爾值, 整數(shù), 浮點數(shù), VarChar, 數(shù)組, JSON |
搜索功能 | 向量搜索(ANN Search), 元數(shù)據(jù)過濾, 范圍搜索, 標(biāo)量查詢, 按主鍵, 獲取實體, 混合搜索 | 向量搜索(ANN Search), 元數(shù)據(jù)過濾, 范圍搜索, 標(biāo)量查詢, 按主鍵, 獲取實體, 混合搜索 | 向量搜索(ANN Search), 元數(shù)據(jù)過濾, 范圍搜索, 標(biāo)量查詢, 按主鍵, 獲取實體, 混合搜索 |
CRUD 操作 | ?? | ?? | ?? |
高級數(shù)據(jù)管理 | N/A | 訪問控制, 分區(qū), 分區(qū)鍵 | 訪問控制, 分區(qū), 分區(qū)鍵, 物理資源分組 |
一致性級別 | 強 | 強, 有限過期, 會話 | 強, 有限過期, 會話, 最終 |