文檔更新于 2.1.4 版本發布之際,很高興和大家分享 Milvus 的新變化和產品的成長。
Zilliz 合伙人兼技術總監 欒小凡
繼年初發布 Milvus 2.0 版本之后,在數百位 Milvus 社區貢獻者六個月的共同努力下,我們在早些時候發布了 Milvus 2.1 版本,經過兩個月的數次迭代,版本趨于穩定,被國內外頭部廠商信任和選擇使用。
(資料圖片)
在此次大版本更新中,最為重要的兩個關鍵詞莫過于:易用性和性能。
為了能夠打通算法工程師筆記本到海量向量召回生產場景的“最后一公里”,在這個令人激動的版本中,我們除了在程序性能、可擴展性、安全性、可觀測性方面做出了諸多改進之外,還增加了以下新特性:字符串數據類型、Kafka 消息隊列、Embedded 方式運行 Milvus。
相較于傳統 KNN 檢索,Milvus 此前提供的 ANN 檢索方式雖然已經帶來了質的飛躍。但是,當用戶面向億級大規模向量數據的召回場景時,吞吐量和延遲依舊存在很大的挑戰。
在 Milvus 2.1 中,我們主要進行了五個方面的功能改進和性能提升。
在 Milvus 2.1 中,我們設計了全新的路由協議,并在檢索鏈路中去除了對消息隊列的依賴,讓小數據集場景下的檢索延遲得到了大幅降低。結果顯示,當前版本的 Milvus 在百萬數據規模的測試中,延遲能夠達到 5ms 左右,足以滿足搜索、推薦等在線關鍵鏈路對于延遲的苛刻要求。
在 Milvus 2.1 中,我們對并發模型也進行了調整。在當前版本中,我們引入了新的代價評估模型和并發調度器。實現了兩個關鍵能力:并發控制和小查詢合并。
前者保障了我們既不會存在大量并發請求爭搶 CPU 和緩存資源的情況,也不會因為并發太少而導致 CPU 無法被完全利用;后者則是通過在調度器層面智能地合并請求參數一致的小 nq 查詢,能夠解決在查詢 nq 較小、并發又非常高的場景下 Milvus 的性能壓力。在這個場景下,業務不需要修改任何一行代碼就能夠獲得 3.2 倍的性能提升。
完整的性能測試報告目前已經在官網公開:《Milvus 2.1 Benchmark Test Report》。
在 Milvus 2.1 中,我們引入了內存多副本機制。除了能夠提升系統在小數據規模下的擴展性和可用性之外,還能夠解決讀 QPS 較高場景下的性能壓力。
這個新機制類似傳統數據庫中的只讀副本功能,能夠通過加機器來簡單實現系統的橫向擴展。特別適合眾多向量檢索應用場景中的推薦系統應用場景,滿足常規推薦系統在小數據集場景下提供遠超單機性能限制的 QPS 的需求。
在接下來的版本演進中,我們將基于多副本機制進一步實現 Hedged Read 機制,讓系統能夠在“故障恢復場景”下避開有問題的副本,快速訪問數據和功能正常的副本,充分利用內存冗余提升系統的可用性。