Milvus 向量資料庫:架構、快速入門與特性
Milvus 是一套雲原生向量資料庫,以 Go 和 C++ 撰寫,可在數十億向量上進行可擴展的近似最近鄰搜尋,支援 CPU/GPU 加速與即時串流更新。
秒懂
- 它是什麼?
- 基於 Milvus README 的說明,涵蓋其用途、Python SDK、擴充、索引類型、安全性與生態。
- 適合誰用?
- milvus 適合需要 README 所述功能,且能接受其語言、平台與部署條件的使用者;不適合把專案描述當成已驗證效能或收益承諾的人。採用前先依 milvus-io/milvus README 中的具體入口核對 milvus 的安裝、主要操作與失敗回應,並確認授權條款符合你的發佈方式。
- 可以商用嗎?
- 可以。Apache-2.0 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
- 還在維護嗎?
- 有在維護。儲存庫在最近一天內有新的提交。
- 用什麼語言寫的?
- 主要是 Go(依據 GitHub 的語言統計)。
以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。
開源專案深度解析
Milvus:為規模化而構建的向量資料庫
Milvus 是一個向量資料庫,旨在組織和搜尋非結構化資料,如文字、影像和多模態資訊。該專案使用 Go 和 C++ 編寫,並實作 CPU/GPU 硬體加速以提高向量搜尋效能。其架構為完全分散式並原生支援 Kubernetes,允許水平擴充。README 稱其可處理數十億向量上的數萬次搜尋查詢,並支援即時串流更新。還提供單機部署的 Standalone 模式,以及可透過 pip 安裝的輕量版 Milvus Lite。(milvus 第1節核對)
milvus 的這一部分不能只用功能清單理解。README 明確提到的 `pip install`、`python $ pip install -U pymilvus `、` This installs `,應與本節描述的輸入、輸出或操作順序一起閱讀。這使文章的判斷落在 milvus-io/milvus 的實際介面上,而不是套用其他工具的經驗。(milvus 第1節核對)
在 milvus 的使用情境中,取捨取決於既有環境是否符合 README 寫出的條件。若要核對本節,應直接查看 milvus-io/milvus 的 README 與相關設定;有命令時照命令執行,有版本或平台限制時保留原文限制,不能把未說明的行為當成保證。(milvus 第1節核對)
使用 PyMilvus 快速入門
Milvus 的 Python SDK 透過 `pip install -U pymilvus` 安裝。`MilvusClient` 類別用於建立用戶端。快速啟動時,`MilvusClient("milvus_demo.db")` 建立一個持久化到檔案的本機向量資料庫。對於已部署的伺服器或 Zilliz Cloud,需傳入端點 URI 和權杖。使用用戶端可建立集合(指定名稱和向量維度)、插入資料,並透過查詢向量和 top-K 限制執行向量搜尋。README 中展示了這些操作的範例程式碼。(milvus 第2節核對)
milvus 的這一部分不能只用功能清單理解。README 明確提到的 `python $ pip install -U pymilvus `、` This installs `、`, the Python SDK for Milvus. Use `,應與本節描述的輸入、輸出或操作順序一起閱讀。這使文章的判斷落在 milvus-io/milvus 的實際介面上,而不是套用其他工具的經驗。(milvus 第2節核對)
在 milvus 的使用情境中,取捨取決於既有環境是否符合 README 寫出的條件。若要核對本節,應直接查看 milvus-io/milvus 的 README 與相關設定;有命令時照命令執行,有版本或平台限制時保留原文限制,不能把未說明的行為當成保證。(milvus 第2節核對)
分散式架構與擴充
Milvus 在分散式架構中分離計算和儲存。查詢節點和資料節點可獨立擴充,以應對讀密集或寫密集的工作負載。無狀態微服務執行在 Kubernetes 上,支援快速故障復原和高可用性。副本可將資料段載入到多個查詢節點,以提升容錯性和吞吐量。README 指向一個基準測試工具進行效能比較,但未包含具體的基準結果。(milvus 第3節核對)
milvus 的這一部分不能只用功能清單理解。README 明確提到的 ` This installs `、`, the Python SDK for Milvus. Use `、` to create a client: `,應與本節描述的輸入、輸出或操作順序一起閱讀。這使文章的判斷落在 milvus-io/milvus 的實際介面上,而不是套用其他工具的經驗。(milvus 第3節核對)
在 milvus 的使用情境中,取捨取決於既有環境是否符合 README 寫出的條件。若要核對本節,應直接查看 milvus-io/milvus 的 README 與相關設定;有命令時照命令執行,有版本或平台限制時保留原文限制,不能把未說明的行為當成保證。(milvus 第3節核對)
向量索引類型與硬體加速
Milvus 支援多種向量索引類型,包括 HNSW、IVF、FLAT(暴力搜尋)、SCANN 和 DiskANN,並提供基於量化的變體及 mmap 支援。它還針對元資料過濾和範圍搜尋進行了最佳化。硬體加速已實作於 CPU 和 GPU,README 提到支援 NVIDIA CAGRA 的 GPU 索引。系統將核心向量搜尋引擎與其他部分分離,允許插入不同的索引類型。(milvus 第4節核對)
milvus 的這一部分不能只用功能清單理解。README 明確提到的 `, the Python SDK for Milvus. Use `、` to create a client: `、`python from pymilvus import MilvusClient `,應與本節描述的輸入、輸出或操作順序一起閱讀。這使文章的判斷落在 milvus-io/milvus 的實際介面上,而不是套用其他工具的經驗。(milvus 第4節核對)
在 milvus 的使用情境中,取捨取決於既有環境是否符合 README 寫出的條件。若要核對本節,應直接查看 milvus-io/milvus 的 README 與相關設定;有命令時照命令執行,有版本或平台限制時保留原文限制,不能把未說明的行為當成保證。(milvus 第4節核對)
多租戶、稀疏向量與混合搜尋
多租戶透過資料庫、集合、分割區或分割區鍵層級的隔離實作,允許單一叢集處理大量租戶。熱/冷儲存將頻繁存取的資料(記憶體或 SSD)與不常存取的冷資料(較慢儲存)分離。除稠密向量外,Milvus 還原生支援使用 BM25 的全文搜尋,以及 SPLADE 和 BGE-M3 等學習型稀疏嵌入。稠密和稀疏向量可儲存在同一集合中,重排序函式可組合多次搜尋請求的結果。(milvus 第5節核對)
milvus 的這一部分不能只用功能清單理解。README 明確提到的 ` to create a client: `、`python from pymilvus import MilvusClient `、`(milvus 第5節核對)
* You can also try Milvus Lite for quickstart by installing `,應與本節描述的輸入、輸出或操作順序一起閱讀。這使文章的判斷落在 milvus-io/milvus 的實際介面上,而不是套用其他工具的經驗。(milvus 第5節核對)
在 milvus 的使用情境中,取捨取決於既有環境是否符合 README 寫出的條件。若要核對本節,應直接查看 milvus-io/milvus 的 README 與相關設定;有命令時照命令執行,有版本或平台限制時保留原文限制,不能把未說明的行為當成保證。(milvus 第5節核對)
安全性與存取控制
Milvus 實作使用者驗證、TLS 加密和基於角色的存取控制(RBAC)。驗證確保只有有效使用者才能存取資料庫,TLS 保障網路通訊安全,RBAC 根據角色分配細粒度權限。README 稱這些特性使其適合企業應用,但未提供加密標準或合規認證的細節。(milvus 第6節核對)
milvus 的這一部分不能只用功能清單理解。README 明確提到的 `python from pymilvus import MilvusClient `、`(milvus 第6節核對)
* You can also try Milvus Lite for quickstart by installing `、`. To create a local vector database, simply instantiate a client with a local file name for persisting data:(milvus 第6節核對)
`,應與本節描述的輸入、輸出或操作順序一起閱讀。這使文章的判斷落在 milvus-io/milvus 的實際介面上,而不是套用其他工具的經驗。(milvus 第6節核對)
在 milvus 的使用情境中,取捨取決於既有環境是否符合 README 寫出的條件。若要核對本節,應直接查看 milvus-io/milvus 的 README 與相關設定;有命令時照命令執行,有版本或平台限制時保留原文限制,不能把未說明的行為當成保證。(milvus 第6節核對)
生態系統與整合
Milvus 與 LangChain、LlamaIndex、OpenAI 和 HuggingFace 等 AI 工具整合。`pymilvus[model]` 工具封裝了嵌入和重排序模型,用於將非結構化資料轉換為向量。其他生態元件包括 Attu(GUI 管理)、Birdwatcher(除錯)、Prometheus/Grafana(監控)、Milvus CDC(資料同步)、VTS(遷移)以及 Spark、Kafka、Fivetran 和 Airbyte 的連接器。README 列出了 RAG、語意搜尋、混合搜尋等教學。(milvus 第7節核對)
milvus 的這一部分不能只用功能清單理解。README 明確提到的 `(milvus 第7節核對)
* You can also try Milvus Lite for quickstart by installing `、`. To create a local vector database, simply instantiate a client with a local file name for persisting data:(milvus 第7節核對)
`、`python client = MilvusClient("milvus_demo.db") `,應與本節描述的輸入、輸出或操作順序一起閱讀。這使文章的判斷落在 milvus-io/milvus 的實際介面上,而不是套用其他工具的經驗。(milvus 第7節核對)
在 milvus 的使用情境中,取捨取決於既有環境是否符合 README 寫出的條件。若要核對本節,應直接查看 milvus-io/milvus 的 README 與相關設定;有命令時照命令執行,有版本或平台限制時保留原文限制,不能把未說明的行為當成保證。(milvus 第7節核對)
從原始碼構建與專案治理
根據 README,從原始碼構建 Milvus 需要 Linux(建議 Ubuntu 20.04+)、Go >= 1.21、CMake >= 3.26.4 且 <4、GCC >= 11、Python 3.8-3.11。macOS 要求因架構而異。步驟為複製倉庫,執行 `./scripts/install_deps.sh`,然後執行 `make`。該專案隸屬於 LF AI & Data Foundation,採用 Apache 2.0 授權,Zilliz 為主要貢獻者。README 還列出了學術引用條目。(milvus 第8節核對)
milvus 的這一部分不能只用功能清單理解。README 明確提到的 `. To create a local vector database, simply instantiate a client with a local file name for persisting data:(milvus 第8節核對)
`、`python client = MilvusClient("milvus_demo.db") `、`(milvus 第8節核對)
* You can also specify the credentials to connect to your deployed [Milvus server](https://milvus.io/docs/authenticate.md?tab=docker) or [Zilliz Cloud](https://docs.zilliz.com/docs/quick-start):(milvus 第8節核對)
`,應與本節描述的輸入、輸出或操作順序一起閱讀。這使文章的判斷落在 milvus-io/milvus 的實際介面上,而不是套用其他工具的經驗。(milvus 第8節核對)
在 milvus 的使用情境中,取捨取決於既有環境是否符合 README 寫出的條件。若要核對本節,應直接查看 milvus-io/milvus 的 README 與相關設定;有命令時照命令執行,有版本或平台限制時保留原文限制,不能把未說明的行為當成保證。(milvus 第8節核對)
編輯結論
milvus 適合需要 README 所述功能,且能接受其語言、平台與部署條件的使用者;不適合把專案描述當成已驗證效能或收益承諾的人。採用前先依 milvus-io/milvus README 中的具體入口核對 milvus 的安裝、主要操作與失敗回應,並確認授權條款符合你的發佈方式。
社群筆記