45,335· 4,136 forks· Go· Apache-2.0开源替代

Milvus - 雲原生高效能向量資料庫

milvus-io/milvus

為 AI 應用打造的分散式向量資料庫,支援十億級向量即時檢索,適配 RAG/影像搜尋等場景

成熟度維護活躍,最近提交0天前,open issues 1109個,大型專案持續迭代中

项目体检

部署 · Docker Compose 多服务编排(需 etcd/MinIO/Pulsar/Azurite 等依赖),分布式模式需 K8s,单机版可直接 docker run,默认端口 19530

成本 · 需外部存储(MinIO/S3/Azure Blob)、消息队列(Pulsar/Kafka)、元数据存储(etcd),Lite 版开箱即用仅需本地文件,GPU 加速可选

技术 · Go + C++(核心向量引擎),集成 FAISS/HNSW/DiskANN 等索引算法,支持 CPU/GPU 硬件加速,K8s 原生架构

许可 · Apache-2.0 协议,允许商用且无需开源衍生代码,企业友好

活跃 · 最新版本 v2.6.20(9天前),364 位贡献者,最近提交0天前,高频迭代中

解決什麼

Milvus 專為 AI 時代的向量檢索場景設計。當你需要在數億條文本嵌入、影像特徵或多模態資料中快速找到最相似的 Top-K 結果時(如 RAG 知識庫召回、以圖搜圖、推薦系統),傳統關聯式資料庫的全表掃描會崩潰。Milvus 通過專用的向量索引演算法(HNSW/IVF/DiskANN)和分散式架構,將檢索延遲壓縮到毫秒級,同時支援即時資料更新和後設資料混合過濾,讓大模型應用能高效管理海量非結構化資料的向量化表示。

為何火

在 HN 早期討論中,開發者對其"線上學習"能力(無需離線訓練即可插入新向量)和分散式擴充套件性表示認可。相比 FAISS 只是演算法庫,Milvus 提供了完整的資料庫能力:持久化儲存、CRUD 介面、高可用容災。專案 4.5 萬 star 背後是 LF AI 基金會背書和 Zilliz 商業公司的持續投入,已在金融風控、電商推薦、生物製藥等領域落地。2024 年隨著 RAG 架構爆火,Milvus 成為 LangChain/LlamaIndex 等框架的首選向量儲存後端,社群活躍度激增。

核心功能

  • 多索引支援: 內建 HNSW(高精度)、IVF(平衡型)、DiskANN(超大規模)、FLAT(精確檢索)等 10+ 種索引,可根據資料規模和精度要求靈活選擇
  • 混合檢索: 支援向量相似度 + 標量欄位過濾(如 age > 18 AND category='電子產品'),以及稀疏/稠密向量混合檢索
  • 存算分離架構: Query Node 負責查詢,Data Node 負責寫入,Coordinator 管理後設資料,可獨立擴縮容應對讀寫不均衡
  • 硬體加速: CPU 側整合 AVX512/NEON 指令最佳化,GPU 側支援 NVIDIA RAPIDS 加速,IVF_SQ8H 索引在 GPU 上效能提升 10 倍
  • 即時更新: 基於 Pulsar/Kafka 的流式架構,插入的向量秒級可查,無需像 ANNOY 那樣重建索引
  • 多租戶隔離: 支援 Collection/Partition 分割槽管理,配合副本機制實現資源隔離和故障容錯

安裝

快速體驗(Milvus Lite):

pip install pymilvus[milvus-lite]
# Python 程式碼中直接用本地檔案
client = MilvusClient("demo.db")

單機部署(Docker):

docker run -d --name milvus \
  -p 19530:19530 -p 9091:9091 \
  -v milvus_data:/var/lib/milvus \
  milvusdb/milvus:latest

生產叢集(K8s + Helm):

helm repo add milvus https://zilliz-helm.s3.us-west-2.amazonaws.com/charts
helm install milvus milvus/milvus --set cluster.enabled=true

中文使用者注意:官方 Helm Chart 預設拉取海外映象,建議配置國內映象源或提前 pull 到私有倉庫。

適合誰

  • AI 應用開發者: 構建 RAG 知識庫、智慧客服、文件問答系統,需要快速整合向量檢索能力
  • 資料科學團隊: 處理億級影像特徵庫、使用者行為嵌入,需要兼顧查詢效能和成本控制
  • 企業架構師: 尋求 Pinecone/Weaviate 的私有化替代,要求資料主權和可定製性
  • 不適合: 資料量小於百萬且無增長預期(SQLite + pgvector 更簡單);純關鍵詞搜尋場景(Elasticsearch 更合適)

社群評價

HN 早期討論(152 點贊)顯示開發者對其工程化能力認可。正面觀點集中在:① 相比 FAISS 提供完整資料庫能力,無需自己處理持久化和併發;② 支援線上插入向量,解決了 ANNOY 需要定期重建索引的痛點;③ 提供詳細的 Benchmark 工具和測試報告,透明度高。

爭議點主要在:① 早期版本(v0.6)被質疑為何不預設使用量化壓縮(官方回應稱 SQ8 已提供 8 倍壓縮);② 有使用者指出 ann-benchmarks 的資料集維度相關性高,實際 DNN 特徵可能表現不同;③ 索引構建速度和記憶體佔用在十億級資料下仍是挑戰,需要多臺伺服器。

總體社群認為 Milvus 是生產級向量資料庫的可靠選擇,尤其適合已有 K8s 基礎設施的團隊。

選型對比

vs Pinecone(商業向量資料庫):

  • Milvus 優勢:開源可自部署,無供應商鎖定,支援私有云;硬體加速更靈活(CPU/GPU 可選)
  • Pinecone 優勢:全託管零運維,按量付費適合初創團隊;冷啟動更快(無需配置依賴)
  • 取捨:資料敏感或成本敏感選 Milvus,追求極簡運維選 Pinecone

vs Weaviate(開源向量資料庫):

  • Milvus 優勢:效能更強(Go+C++ vs 純 Go),支援更多索引型別,分散式架構更成熟
  • Weaviate 優勢:內建向量化模組(可直接輸入文本自動編碼),GraphQL 介面更友好
  • 取捨:超大規模(十億級)選 Milvus,中小規模且需要端到端方案選 Weaviate

vs pgvector(PostgreSQL 外掛):

  • Milvus 優勢:專用索引演算法效能碾壓,水平擴充套件能力強
  • pgvector 優勢:複用現有 PG 生態,事務支援完整,運維成本低
  • 取捨:向量資料超千萬或查詢 QPS > 1000 必選 Milvus,否則 pgvector 夠用

已知坑

  1. 依賴複雜: 分散式模式需要 etcd(後設資料)、MinIO/S3(物件儲存)、Pulsar/Kafka(訊息佇列),初次部署容易遺漏配置導致啟動失敗。建議先用 Lite 版驗證業務邏輯,再遷移到叢集
  2. 記憶體殺手: HNSW 索引會將全量向量載入到記憶體,百萬條 768 維向量需要約 3GB RAM。生產環境建議用 DiskANN 或 IVF_SQ8 量化索引
  3. 索引構建慢: 十億級資料首次建索引可能耗時數小時,且期間無法查詢。官方建議分批匯入或使用增量索引(Streaming Index)
  4. 中文文件滯後: 部分高階特性(如 GPU 索引、混合檢索)的中文文件更新不及時,需參考英文官方文件
  5. 版本相容性: 2.x 到 3.x 有 breaking changes,升級需謹慎測試。社群反饋 1109 個 open issues 中部分涉及邊界 case 的 bug

來源: GitHub 倉庫 + HN 社群討論(2019 年首次釋出時的評論)

安装方式:pip install pymilvus 或 docker compose