寧貞韻
近日,獲得AI開發(fā)者廣泛關(guān)注的AI神鳥項目Milvus向量數(shù)據(jù)庫,正式宣布2.0版本的GA。全新的Milvus向量數(shù)據(jù)庫具備支持大規(guī)模生產(chǎn)環(huán)境的能力,幫助開發(fā)者在構(gòu)建深度學(xué)習(xí)、機器視覺、語義學(xué)習(xí)等大規(guī)模系統(tǒng)時,能夠快速搭建起高可靠、高性能、高檢索效率、運維管理友好的向量數(shù)據(jù)(Embedding Vctor)處理平臺。
“這不是一次簡單的版本升級,而是一次全面重構(gòu),也是我們過去三年在向量數(shù)據(jù)庫領(lǐng)域探索之后的集大成之作。在經(jīng)過對架構(gòu)進行全面重新設(shè)計以及9個RC版本的迭代后,我們正式宣布Milvus 2.0的GA。Milvus的用戶將由此能夠獲得生產(chǎn)級可用的開源向量數(shù)據(jù)庫系統(tǒng),它可以部署在任意云基礎(chǔ)設(shè)施上,使用更加便利,性能更加強大,整體成本也更為優(yōu)化?!盡ilvus工程總監(jiān)欒小凡如此描述此GA對Milvus項目的意義。
“我們在迭代了19個版本后發(fā)布了Milvus的1.0版本,并獲得了全球近1 000家用戶的實踐驗證。但我們依然看到了它的很多局限性,比如實時性與效率的沖突,成本的高昂,可擴展性和彈性的不足,于是我們開始了2.0版本的重構(gòu)?!睓栊》蔡峒暗倪@些局限,充分說明目前AI系統(tǒng)開發(fā)者在面對生產(chǎn)落地時,在算法和模型之外,也同樣面臨以下更為切實的權(quán)衡:
非結(jié)構(gòu)化數(shù)據(jù)相比傳統(tǒng)結(jié)構(gòu)化數(shù)據(jù),已占據(jù)壓倒性地位;
數(shù)據(jù)新鮮度非常重要,數(shù)據(jù)科學(xué)家們更希望能夠擁有實時處理能力,而非忍受對T+1的妥協(xié);
面對生產(chǎn)實踐環(huán)境,數(shù)據(jù)處理的成本和性能更加重要,但現(xiàn)有的方案卻仍然與需求存在距離;
數(shù)據(jù)平臺能夠自如的部署在各種云基礎(chǔ)設(shè)施之上,全面云原生化勢在必行。
的確,隨著AI應(yīng)用的大規(guī)??焖倨占?,一套AI系統(tǒng)需要應(yīng)對的業(yè)務(wù)數(shù)據(jù)量呈幾何級數(shù)增長。其中以圖形、視頻、音頻為代表的非結(jié)構(gòu)化數(shù)據(jù)為主。目前業(yè)務(wù)處理這類非結(jié)構(gòu)化數(shù)據(jù)的主流的做法是將數(shù)據(jù)通過算法先轉(zhuǎn)化成向量,之后通過向量數(shù)據(jù)庫平臺進行向量近似性搜索,以實現(xiàn)對這些數(shù)據(jù)的搜索查詢等需求。在最近的人工智能頂會NeurIPS上,Google、Facebook及Microsoft的AI團隊向業(yè)界公開了數(shù)個全新的10億級向量數(shù)據(jù)包,而這些數(shù)據(jù)全部基于真實的業(yè)務(wù)場景產(chǎn)生。
面對這些這些真正意義上的“大規(guī)模”并且仍在高速增長的海量數(shù)據(jù),是否有更好的向量數(shù)據(jù)庫解決方案,能在更高的效率、更好的成本收益比、更穩(wěn)定可靠的平臺支持以及更方便的運維管理之間取舍均衡,是業(yè)界的焦點。
Milvus 2.0正是為應(yīng)對這種大規(guī)模生產(chǎn)級場景而設(shè)計的向量數(shù)據(jù)庫系統(tǒng),綜合考慮了架構(gòu)穩(wěn)定性、工程可靠性、性能、成本、功能以及用戶體驗等多種因素,并全面擁抱云原生技術(shù)。
Milvus 2.0圍繞3個理念,重新定義了新一代云原生向量數(shù)據(jù)庫。
云原生優(yōu)先:存儲計算分離的架構(gòu)更能發(fā)揮云的彈性,以實現(xiàn)按需擴容的模式。而Milvus 2.0采取了讀寫分離、實時離線分離、計算瓶頸/內(nèi)存瓶頸/IO瓶頸分離的微服務(wù)化設(shè)計模式,這有助于面對復(fù)雜的工作負載選擇最佳的資源配比。
日志即數(shù)據(jù):Milvus 2.0引入消息存儲作為系統(tǒng)的骨架,數(shù)據(jù)的插入修改只通過消息存儲交互,執(zhí)行節(jié)點通過訂閱消息流來執(zhí)行數(shù)據(jù)庫的增刪改查操作。這一設(shè)計的優(yōu)勢在于降低了系統(tǒng)的復(fù)雜度,將數(shù)據(jù)庫關(guān)鍵的持久化和閃回等能力都;另一方面,日志訂閱機制提供了極大的靈活性,為系統(tǒng)未來的拓展奠定了基礎(chǔ)。
批流一體:Milvus 2.0實現(xiàn)了unified Lambda流式處理架構(gòu),增量數(shù)據(jù)和離線數(shù)據(jù)一體化處理。相比Kappa架構(gòu),Milvus引入對日志流的批量計算將日志快照和構(gòu)建索引存入對象存儲,大大提高了故障恢復(fù)速度和查詢效率。為了將無界的流式數(shù)據(jù)拆分成有界的窗口,Milvus采用watermark機制,通過寫入時間(也可以是事件發(fā)生時間)將數(shù)據(jù)切分為多個小的處理單元,并維護了一條時間軸便于用戶基于某個時間點進行查詢。
基于上述的理念及架構(gòu)設(shè)計,Milvus 2.0可以支持:百億規(guī)模的向量數(shù)據(jù)擴展能力,增量數(shù)據(jù)毫秒級實時可見的數(shù)據(jù)可見性,存儲計算的秒級擴縮容能力,10 mm級查詢延時性能,分鐘級的故障恢復(fù)能力,動態(tài)負載均衡能力;提供完善的面向向量數(shù)據(jù)的增刪改查功能,數(shù)據(jù)壓縮壓縮功能,動態(tài)加載索引功能、圖形化GUI及命令行管理工具,提供PyMilvus,Node.js,Java and Go等多語言語言SDK。目前,Milvus 2.0無論在性能、功能、穩(wěn)定性、可擴展性及易用性方面,均到達業(yè)界領(lǐng)先水平,重新定義了向量數(shù)據(jù)庫的標桿。
“基于大數(shù)據(jù)+ AI的應(yīng)用架構(gòu)依然過于復(fù)雜,簡化非結(jié)構(gòu)化數(shù)據(jù)處理一直是Milvus社區(qū)努力的方向。”談及Milvus項目未來的發(fā)展路線圖時,欒小凡這樣表示。接下來Milvus項目會重點關(guān)注以下幾個方向:
DB for AI:作為一款數(shù)據(jù)庫,除了基本的CRUD功能之外,Milvus必然還需要更強大的數(shù)據(jù)查詢能力、更智能的查詢優(yōu)化器、更全的數(shù)據(jù)管理功能等。下一階段將重點補齊Milvus 2.0目前還不支持的DML功能和數(shù)據(jù)類型,比如刪除、更新操作和支持string數(shù)據(jù)類型。
AI for DB:向量索引類型、索引參數(shù)、用戶工作負載、硬件類型、成本性能等的約束構(gòu)成了一個非常龐大的tradeoff,盡可能避免手動調(diào)優(yōu)有助于降低使用復(fù)雜度。我們已經(jīng)著手分析系統(tǒng)負載,收集訪問熱度的數(shù)據(jù),后續(xù)將引入自動參數(shù)調(diào)優(yōu)工作以降低用戶的理解成本。
成本優(yōu)化:向量召回的最大挑戰(zhàn)是需要在限定時間內(nèi)處理海量數(shù)據(jù),這項工作既是計算密集型,也是訪存密集型。在物理執(zhí)行層引入GPU、FPGA等異構(gòu)硬件加速可以大幅降低CPU開銷。正在開發(fā)磁盤內(nèi)存混合的ANN索引算法,可以在有限的內(nèi)存下實現(xiàn)海量向量的高性能查詢。于此同時,我們也在評估開源的ScaNN、NGT等向量索引算法的性能。
易用性:Milvus易用性的提升體現(xiàn)在集群管理工具、多語言SDK、部署工具、運維工具等許多方面,Milvus將在這些方向持續(xù)迭代完善。同時,Milvus的設(shè)計理念是可以在任何平臺運行,在接下來的幾個版本更新中,Milvus將支持MacOS系統(tǒng)(M1芯片及x86芯片)以及ARM架構(gòu)。