開源向量數據庫 Milvus 簡介
Milvus 是一個開源的、高性能、高擴展性的向量數據庫,專門用於處理和檢索高維向量數據。它適用於相似性搜索(Approximate Nearest Neighbor Search,ANN),特別適合 AI、推薦系統、計算機視覺、自然語言處理(NLP) 等領域。Milvus 由 Zilliz 開發,並已捐贈給 LF AI & Data 基金會。
向量是神經網絡模型的輸出數據格式,可以有效地對信息進行編碼,在知識庫、語義搜索、檢索增強生成(RAG)等人工智能應用中發揮着舉足輕重的作用。
1. 非結構化數據、Embeddings 和 Milvus
文本、圖像和音頻等非結構化數據格式各異,並帶有豐富的底層語義,因此分析起來極具挑戰性。爲了處理這種複雜性,Embeddings 被用來將非結構化數據轉換成能夠捕捉其基本特徵的數字向量。然後將這些向量存儲在向量數據庫中,從而實現快速、可擴展的搜索和分析。
Milvus 提供強大的數據建模功能,使您能夠將非結構化或多模式數據組織成結構化的 Collections。它支持多種數據類型,適用於不同的屬性模型,包括常見的數字和字符類型、各種向量類型、數組、集合和 JSON。
Milvus 提供三種部署模式,涵蓋各種數據規模:
-
Milvus Lite 是一個 Python 庫,可以輕鬆集成到您的應用程序中。作爲 Milvus 的輕量級版本,它非常適合在 Jupyter Notebooks 中進行快速原型開發,或在資源有限的邊緣設備上運行。
-
Milvus Standalone 是單機服務器部署,所有組件都捆綁在一個 Docker 鏡像中,方便部署。
-
Milvus Distributed 可部署在 Kubernetes 集羣上,採用雲原生架構,專爲十億規模甚至更大的場景而設計。該架構可確保關鍵組件的冗餘。
2. Milvus 架構
Milvus 主要由以下組件組成:
-
Coordinator(協調器):管理元數據、查詢和數據分片。
-
Proxy(代理):處理 API 請求並轉發給計算節點。
-
QueryNode(查詢節點):執行 ANN 查詢,返回最近鄰數據。
-
DataNode(數據節點):存儲和管理向量數據。
-
IndexNode(索引節點):構建和存儲索引以加速查詢。
-
MetaStore(元數據存儲):使用 etcd 存儲元數據。
-
Storage(存儲層):使用 MinIO/S3 存儲向量數據和索引。
Milvus 的雲原生和高度解耦的系統架構確保了系統可以隨着數據的增長而不斷擴展:
Milvus 本身是完全無狀態的,因此可以藉助 Kubernetes 或公共雲輕鬆擴展。此外,Milvus 的各個組件都有很好的解耦,其中最關鍵的三項任務 -- 搜索、數據插入和索引 / 壓實 -- 被設計爲易於並行化的流程,複雜的邏輯被分離出來。這確保了相應的查詢節點、數據節點和索引節點可以獨立地向上和向下擴展,從而優化了性能和成本效率。
3. Milvus 支持的搜索類型
Milvus 支持各種類型的搜索功能,以滿足不同用例的需求:
-
ANN 搜索:查找最接近查詢向量的前 K 個向量。
-
過濾搜索:在指定的過濾條件下執行 ANN 搜索。
-
範圍搜索:查找查詢向量指定半徑範圍內的向量。
-
混合搜索:基於多個向量場進行 ANN 搜索。
-
全文搜索:基於 BM25 的全文搜索。
-
Rerankers:根據附加標準或輔助算法調整搜索結果順序,完善初始 ANN 搜索結果。
-
獲取:根據主鍵檢索數據。
-
查詢: 使用特定表達式檢索數據。
4. 相關資料
- Milvus 是什麼?: https://milvus.io/docs/zh/overview.md
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/X9v3dqR9zZt9QBhmb4x3pQ