大模型又帶火的一款 2 萬星黑馬項目 Milvus
撰稿 | 王瑞平
審校 | 雲昭
開源、Github 標星狂飆 2 萬、CVP(即,ChatGPT+VectorDB+Prompt)架構... 又一匹數據庫黑馬突出重圍。
它就是 Milvus 向量數據庫,幾年前便在 Github 上開源,瞬間引爆全球,不僅完美詮釋了新興 CVP 架構,也成爲 “羣模亂舞” 當下的一股清流。
Milvus 旨在爲 AI 應用程序和嵌入相似度搜索提供支持,使非結構化數據更易於搜索和訪問,無論部署環境如何都能使用戶獲得相同的體驗。
在大語言模型時代,向量數據庫必不可少,它不僅是大模型的記憶體,還能通過向量檢索讓大模型變得博聞強識。
在此過程中,AIGC 開發者可以看到的是 Milvus 在 2.2.9 版本和中新增了 JSON、動態 schema 和 PartitionKey 三大功能,簡化了開發者使用門檻,並接入了開源項目 GPTCache,提升 LLM 應用性能。
大模型時代,數據庫也需要跟上
我們正處在擁抱人人互聯新時代,傳輸電子郵件、社交媒體照片傳輸、蛋白質分子結構解析等過程中都會產生海量的非結構化數據(文本文件、電子表格等)。
然而,你絕不能任由這些數據 “滿天飛”!所以,它們必須被計算機定期處理!那麼,如何處理呢?
首先,embedding 技術可以將這些數據轉化爲 “向量”。隨後,Milvus 會存儲這些“向量” 併爲其建立索引,這就形成了傳說中的“向量數據庫”。
與現有的主要可用作處理結構化數據的關係型數據庫不同,Milvus 在底層設計上就是爲了處理由各種非結構化數據轉換而來的 Embedding 向量而生。
該數據庫可以對接包括圖片識別、視頻處理、聲音識別、自然語言處理等深度學習模型,從而爲向量化後的非結構數據提供搜索分析服務。
你可以使用 Milvus 搭建符合個人場景需求的向量相似度檢索系統,具體可應用在以圖搜圖、視頻去重、音頻檢索、文本搜索等場景下。
快速入門:安裝 Milvus
絕大多數非結構化數據的一對多檢索都可以用到 Milvus,現在帶你快速入門... 在 Milvus 的開源文件中,我們找到了詳細的安裝過程,在此簡單介紹:
你需要首先明確的是:Milvus 使用 Docker Compose 控制服務的啓動和暫停,過程包括:
sudo docker-compose down
以圖搜圖,滿滿
Milvus 官方還給出了以圖搜圖的用例,具體流程分爲構建圖像向量庫和執行搜索:
1. 構建圖像向量庫
首先準備圖像數據集,使用深度學習庫提取圖像特徵,獲得每張圖像的特徵向量,最後將特徵向量存儲到 Milvus 數據庫中。
2. 執行搜索
輸入一張待檢索圖像,經過深度學習庫獲取圖像對應的特徵向量,然後將這個向量與 Milvus 中所有圖像的特徵向量進行相似度對比,從而獲得距離最近的圖像結果。
整體性能夠硬,生態已成氣候
從上述的安裝與使用過程中我們不難看出,Milvus 作爲一款雲原生向量數據庫,具備高可用、高性能、易拓展的特點,可用於海量向量數據的實時召回。
Github 上也對其整體性能做出了完整總結:
· 高性能:性能高超,可對海量數據集進行向量相似度檢索。
· 簡化管理:專爲數據科學工作流設計的豐富 API;
· 高可用、高可靠:Milvus 支持雲上擴展,其容災能力能夠保證服務高可用;
· 高度可擴展和彈性:組件級可伸縮性使按需擴展和縮減成爲可能。
· 混合查詢:Milvus 支持在向量相似度檢索過程中進行標量字段過濾,實現混合查詢;
· 開發者友好:支持多語言、多工具 Milvus 生態系統;
· 社區支持,行業認可:擁有超過 1000 名企業用戶以及活躍的開源社區。
系統架構:四個層次
Milvus 作爲一款雲原生向量數據庫,採用存儲與計算分離的架構設計,所有組件均爲無狀態組件,極大增強系統彈性和靈活性。
整個系統架構可分爲四個層次:
**· 接入層:**系統的門面,由一組無狀態 proxy 組成。對外提供用戶連接的 endpoint,負責驗證客戶端請求併合並返回結果。
**· 協調服務:**系統的大腦,負責分配任務給執行節點。協調服務共有四種角色,分別爲 root coord、data coord、query coord 和 index coord。
**· 執行節點:**系統的四肢,負責完成協調服務下發的指令和 proxy 發起的數據操作語言(DML)命令。執行節點分爲三種角色,分別爲 data node、query node 和 index node。
**· 存儲服務:**系統的骨骼,負責 Milvus 數據的持久化,分爲元數據存儲(meta store)、消息存儲(log broker)和對象存儲(object storage)三個部分。
2.0 重磅升級
在 Milvus 官網上,我們找到了 Milvus1.0 與 2.0 究竟有哪些區別,具體如下表:
事實上,自 Milvus 升級至 2.0 版本以來,仍在不斷改進優化,推出了諸如從文件中批量導入數據、基於磁盤的近似最近鄰(ANN)索引算法等新功能,也提升了元數據存儲、批量導入等性能。
遠的不說,從 Milvus 2.2 到 Milvus 2.3 版本都進行了哪些變化和升級呢?
Milvus 2.2 提升了向量搜索的穩定性、搜索速度,具有靈活的擴縮容能力,提供了一系列新的 API,用於支持從文件中更有效率地批量導入數據。
此外,Milvus 2.2 還修復了部分 bug 並進行了諸多改進以增強 Milvus 穩定性、可觀測性和性能。
而在 2.3 版本中,Milvus 移除了 Annoy 索引,降低了維護成本,還會支持 count 接口,用於統計 collection 的行數。新增的 count 接口除了能計算 collection 行數外,還支持 query 的查詢表達式用於統計帶條件的行數。
用戶:使用 Milvus,並不孤單
從最初的 Milvus 到 2.3 版本,每一次版本升級背後都離不開用戶的支持與建議。升級、迭代,每次更新過後,Milvus 都會趨向於完美。
截至目前,GitHub 在上已達到 2.08 萬星。因此,當在活躍的開源社區中使用 Milvus 時,你並不孤單!
參考資料:
https://www.yii666.com/blog/393941.html?action=onAll
https://github.com/milvus-io/milvus
https://blog.csdn.net/hello_dear_you/article/details/127841589
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/ejGSbDdLBVz9xZAYDJvNqA