最火向量數據庫Milvus安裝使用一條龍!
向量數據庫是大模型應用開發必備組件之一,因為它知識庫、語義搜索、檢索增強生成(RAG)等人工智能應用中發揮著舉足輕重的作用。但向量數據有很多,為什么要使用 Milvus 呢?
常見向量數據
常見的向量數據庫有以下這些:
- Chroma
- Elasticsearch
- Milvus
- Neo4j
- OpenSearch
- Redis
- PGVector
然而目前市面上使用最多的向量數據庫還是 Milvus,為什么呢?
這點從企業的招聘要求中也能發現:
為什么是 Milvus?
Milvus 設計之初就是為 AI 而生的一個高效的向量數據庫系統,在大多數情況下,Milvus 的性能是其他向量數據庫的 2-5 倍,它能實現萬億級向量的毫秒級相似性搜索,而且 Milvus 還是開源的向量數據庫。
“
PS:也就說 Milvus 既開源(可以免費使用+支持二次開發)又具備高性能,這樣的數據庫誰不愛呢?
為什么 Milvus 這么快?
Milvus 運行比較快的原因有以下幾個:
- 硬件感知優化:為了讓 Milvus 適應各種硬件環境,我們專門針對多種硬件架構和平臺優化了其性能,包括 AVX512、SIMD、GPU 和 NVMe SSD。
- 高級搜索算法:Milvus 支持多種內存和磁盤索引/搜索算法,包括 IVF、HNSW、DiskANN 等,所有這些算法都經過了深度優化。與 FAISS 和 HNSWLib 等流行實現相比,Milvus 的性能提高了 30%-70%。
- C++ 搜索引擎:向量數據庫性能的 80% 以上取決于其搜索引擎。由于 C++ 語言的高性能、底層優化和高效資源管理,Milvus 將 C++ 用于這一關鍵組件。最重要的是,Milvus 集成了大量硬件感知代碼優化,從匯編級向量到多線程并行化和調度,以充分利用硬件能力。
- 面向列:Milvus 是面向列的向量數據庫系統。其主要優勢來自數據訪問模式。在執行查詢時,面向列的數據庫只讀取查詢中涉及的特定字段,而不是整行,這大大減少了訪問的數據量。此外,對基于列的數據的操作可以很容易地進行向量化,從而可以一次性在整個列中應用操作,進一步提高性能。
Milvus 支持的搜索類型
Milvus 支持各種類型的搜索功能,以滿足不同用例的需求:
- ANN 搜索:查找最接近查詢向量的前 K 個向量。
- 過濾搜索:在指定的過濾條件下執行 ANN 搜索。
- 范圍搜索:查找查詢向量指定半徑范圍內的向量。
- 混合搜索:基于多個向量場進行 ANN 搜索。
- 全文搜索:基于 BM25 的全文搜索。
- Rerankers:根據附加標準或輔助算法調整搜索結果順序,完善初始 ANN 搜索結果。
- 根據主鍵檢索數據。
- 查詢使用特定表達式檢索數據。
Milvus 安裝
Milvus 有三種部署方式:
- Milvus Lite:Milvus Lite 是一個 Python 庫,可導入到您的應用程序中。作為 Milvus 的輕量級版本,它非常適合在 Jupyter 筆記本或資源有限的智能設備上運行快速原型。Milvus Lite 支持與 Milvus 其他部署相同的 API。與 Milvus Lite 交互的客戶端代碼也能與其他部署模式下的 Milvus 實例協同工作。
- Milvus Standalone:Milvus Standalone 是單機服務器部署。Milvus Standalone 的所有組件都打包到一個 Docker 鏡像中,部署起來非常方便。
- Milvus Distributed:Milvus Distributed 可部署在 Kubernetes 集群上。這種部署采用云原生架構,攝取負載和搜索查詢分別由獨立節點處理,允許關鍵組件冗余。它具有最高的可擴展性和可用性,并能靈活定制每個組件中分配的資源。Milvus Distributed 是在生產中運行大規模向量搜索系統的企業用戶的首選。
“
PS:當然中小型公司生產環境也可以直接購買 XXX 云的 Milvus 實例直接使用。
我們這里使用 Milvus Standalone 單機版部署方式。
硬件要求
前提條件
- 安裝 Docker Desktop:點擊下載軟件安裝 https://www.docker.com/get-started/
- 安裝之后,需要重啟電腦,并且電腦會進行 Linux 子系統更新才能正常啟動,此過程可能會比較慢。
- 安裝 Windows Subsystem for Linux 2 (WSL 2):通常不需要單獨安裝,安裝 Docker Desktop 時會自動安裝。
正式安裝
1.打開 PowerShell。
2.下載安裝腳本,命令如下:
Invoke-WebRequest https://raw.githubusercontent.com/milvus-io/milvus/refs/heads/master/scripts/standalone_embed.bat -OutFile standalone.bat
3.運行下載的腳本
standalone.bat start
最終執行效果如下:
運行安裝腳本后,包含以下內容:
- 名為 Milvus-standalone 的 docker 容器已在19530 端口啟動。
- 嵌入式 etcd 與 Milvus 安裝在同一個容器中,服務端口為 2379。其配置文件被映射到當前文件夾中的 embedEtcd.yaml。
- Milvus 數據卷映射到當前文件夾中的 volumes/milvus。
在 Docker Desktop 也可以看到安裝的 Milvus 相關組件:
參考官方文檔:https://milvus.io/docs/zh/install_standalone-windows.md
安裝 UI 客戶端
Milvus 服務安裝成功之后,可以按照一個 UI 客戶端連接 Milvus 服務,使用官方提供的客戶端 attu:https://github.com/zilliztech/attu
具體安裝步驟如下:
1.訪問下載安裝包(attu-Setup-2.4.12.exe)地址:https://github.com/zilliztech/attu/releases/tag/v2.4.12
2.解壓并安裝 attu。
安裝成功之后連接本地 Milvus 服務,如下圖所示:
小結
Milvus 作為開源高性能向量數據庫的代表,它的安裝也不難,如果順利的情況下,可能 5 分鐘左右就搞定了。安裝完成之后就用它加上 Spring AI 或 LangChain4j 來實現一下 RAG 功能吧。