🚀 免費嘗試 Zilliz Cloud,完全托管的 Milvus,體驗速度提升 10 倍!立即嘗試

milvus-logo
LFAI
  • Home
  • Blog
  • Milvus 2.1 的新功能 - 邁向簡單與快速

Milvus 2.1 的新功能 - 邁向簡單與快速

  • News
August 05, 2022
Xiaofan Luan

What's new in Milvus 2.1 - Towards simplicity and speed Milvus 2.1 的新功能 - 邁向簡潔與快速

經過 Milvus 社群所有貢獻者六個月的努力,我們很高興宣佈 Milvus 2.1 正式發行。這個廣受歡迎的向量資料庫的重要迭代強調了效能可用性,這是我們最關注的兩個關鍵字。我們新增了對字串、Kafka 訊息佇列和內嵌式 Milvus 的支援,並在效能、擴充性、安全性和可觀察性方面做了許多改進。Milvus 2.1 是一項令人振奮的更新,它將為演算法工程師的筆記型電腦與生產級向量相似性搜尋服務之間的「最後一哩」架起橋樑。

5 毫秒等級的延遲

Milvus 已經支援近似近鄰 (ANN) 搜尋,與傳統的 KNN 方法相比,是一大躍進。然而,吞吐量和延遲的問題仍然是需要處理十億級向量資料檢索情境的使用者所面臨的挑戰。

在 Milvus 2.1 中,有一個新的路由通訊協定,不再依賴檢索連結中的訊息佇列,大幅降低小型資料集的檢索延遲。我們的測試結果顯示,Milvus 現在將其延遲等級降至 5 毫秒,符合相似性搜尋和推薦等關鍵線上連結的要求。

並發控制

Milvus 2.1 透過引進新的成本評估模型和並發排程,微調其並發模型。它現在提供了並發控制,可確保不會有大量的並發請求競爭 CPU 和快取記憶體資源,也不會因為沒有足夠的請求而導致 CPU 利用率不足。Milvus 2.1 中全新的智慧型排程層還會合併具有一致請求參數的小 nq 查詢,在具有小 nq 和高查詢並發的情況下,提供驚人的 3.2 倍效能提升。

記憶體複製

Milvus 2.1 帶來了記憶體副本,可提高小型資料集的可擴展性和可用性。類似於傳統資料庫中的唯讀複製,當讀取 QPS 高時,記憶體複製可透過增加機器進行水平擴充。在小型資料集的向量擷取中,推薦系統經常需要提供超過單台機器效能極限的 QPS。現在在這些情況下,透過在記憶體中載入多個複本,可以大幅提升系統的吞吐量。未來,我們還將引入基於記憶體內副本的對沖讀取機制,在系統需要從故障中恢復時,快速請求其他功能副本,充分利用記憶體冗餘來提高系統的整體可用性。

In-memory replicas allow query services to be based on separate
copies of the same data. 記憶體內副本允許查詢服務基於相同資料的不同副本

更快的資料載入

最後一項效能提升來自資料載入。Milvus 2.1 現在使用 Zstandard (zstd) 來壓縮二進位日誌,大幅減少物件與訊息儲存區的資料大小,以及資料載入時的網路開銷。此外,現在還引入了 goroutine pool,因此 Milvus 可以在控制記憶體佔用量的情況下同時載入網段,並將故障恢復和載入資料所需的時間降至最低。

Milvus 2.1 的完整基準結果即將在我們的網站上發佈。敬請期待。

支援字串與標量索引

Milvus 2.1 現在支援變長字串 (VARCHAR) 作為標量資料類型。VARCHAR 可用作可作為輸出回傳的主索引鍵,也可作為屬性篩選器。屬性篩選是 Milvus 使用者最常需要的功能之一。如果您經常發現自己想要「尋找與使用者最相似的200-200-價格區間的產品」,或是「尋找關鍵字為「向量資料庫」且與雲原生主題相關的文章」,您一定會喜歡 Milvus 2.1。

Milvus 2.1 也支援標量倒轉索引,以簡潔的MARISA-Tries為資料結構,提高篩選速度。現在,所有資料都能以非常低的佔用空間載入記憶體,這使得字串的比對、篩選和前綴匹配速度大大加快。我們的測試結果顯示,MARISA-trie 的記憶體需求僅為 Python 字典的 10%,即可將所有資料載入記憶體,並提供查詢功能。

Milvus 2.1 combines MARISA-Trie with inverted index to significantly improve filtering speed. Milvus 2.1 將 MARISA-Trie 與倒排索引結合,大幅提升篩選速度。

未來,Milvus 將繼續專注於標量查詢相關的開發,支援更多標量索引類型和查詢運算符,並提供基於磁碟的標量查詢功能,這些都是為了降低標量資料的儲存和使用成本而持續努力的一部分。

Kafka 支援

我們的社群長久以來一直要求在 Milvus 中支援Apache Kafka 作為訊息儲存空間,Milvus 2.1 現在提供您依據使用者配置使用Pulsar或 Kafka 作為訊息儲存空間的選擇,這要歸功於 Milvus 的抽象與封裝設計,以及 Confluent 所貢獻的 Go Kafka SDK。

生產就緒的 Java SDK

隨著 Milvus 2.1 的推出,我們的Java SDK也正式發行。Java SDK 具備與 Python SDK 完全相同的功能,甚至有更好的並發效能。下一步,我們的社群貢獻者將逐步完善 Java SDK 的說明文件和使用案例,並協助將 Go 和 RESTful SDK 也推入生產就緒的階段。

可觀察性與可維護性

Milvus 2.1 增加了重要的監控指標,例如向量插入次數、搜尋延遲/吞吐量、節點記憶體開銷和 CPU 開銷。此外,新版本還透過調整日誌層級和減少無用的日誌列印,大幅優化日誌保存。

嵌入式 Milvus

Milvus 大幅簡化了大規模海量向量資料檢索服務的部署,但對於想要在較小規模上驗證演算法的科學家而言,Docker 或 K8s 仍然太過不必要的複雜。隨著嵌入式 Milvus 的推出,現在您可以使用 pip 安裝 Milvus,就像安裝 Pyrocksb 和 Pysqlite 一樣。嵌入式 Milvus 支援集群版和獨立版的所有功能,讓您可以輕鬆地從筆記型電腦切換到分散式生產環境,而不需變更任何程式碼。演算法工程師在使用 Milvus 建立原型時,將會有更好的體驗。

此外,Milvus 2.1 在穩定性和可擴展性方面也有一些很大的改進,我們期待您的使用和反饋。

下一步

  • 有關 Milvus 2.1 的所有變更,請參閱詳細的「發行記錄」
  • 安裝Milvus 2.1 並試用新功能
  • 加入我們的Slack 社群,與全球數以千計的 Milvus 使用者討論新功能。
  • TwitterLinkedIn上關注我們,當我們關於特定新功能的博客發布後,您就可以獲得更新。

編輯:江松賢

Like the article? Spread the word

繼續閱讀