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