本文根據 Milvus 官方文檔《Run Milvus Lite Locally》整理,資料核對於 2026-10-11。文中代碼取自官方頁面,沒有在本機運行驗證。
適用於誰
- 搜「milvus lite 安裝」「milvus lite 使用」「milvus lite 是什麼」「milvus lite windows」的人;
- 想在筆記本或 Notebook 裏試試 Milvus,又不想先裝 Docker 的人;
- 做 RAG 原型,希望以後能平滑遷到正式的 Milvus 集群的人。
結論先說
- Milvus Lite 是開源向量數據庫 Milvus 的輕量版,可以直接導入到 Python 程序裏,提供核心的向量搜尋功能,數據存在一個本地文件裏。
- 它包含在
pymilvus裏:pip install -U pymilvus[milvus-lite]。 - 官方列出的支持平台是 Ubuntu 20.04 及以上、macOS 11.0 及以上,沒有列 Windows。Windows 用戶要另想辦法(見常見問題)。
- 只適合小規模。只支持 FLAT 索引,不支持分區、用戶與角色等功能。
- 接口和正式版一致。官方說明各種部署形態共用同一套 API,所以在 Lite 上寫的代碼可以搬到 Standalone、Distributed 或託管服務上。
一、Milvus 的幾種形態
| 形態 | 官方的定位 |
|---|---|
| Milvus Lite | Notebook、筆記本電腦、邊緣裝置;小規模 |
| Milvus Standalone | 單節點部署,比如跑在一個 Docker 容器裏 |
| Milvus Distributed | 大規模,部署在 Kubernetes 集群上 |
| Zilliz Cloud | 全託管的 Milvus |
Lite 的用途就是讓你不搭任何服務就能開始寫代碼。
二、安裝
bash
pip install -U pymilvus[milvus-lite]
也可以單獨安裝:pip install -U milvus-lite。
在 zsh 這類會解釋方括號的終端裏,給包名加上引號:pip install -U "pymilvus[milvus-lite]"。
支持的平台(官方頁面所列):
- Ubuntu 20.04 及以上,x86_64 和 arm64;
- macOS 11.0 及以上,Apple Silicon 和 x86_64。
三、連接:一個本地文件就是一個數據庫
python
from pymilvus import MilvusClient
client = MilvusClient("./milvus_demo.db")
給 MilvusClient 傳一個本地文件路徑,就會在當前目錄創建 milvus_demo.db 這個數據庫文件,所有數據都在裏面。
四、建集合、插入、搜尋
官方的完整示例:
python
from pymilvus import MilvusClient
import numpy as np
client = MilvusClient("./milvus_demo.db")
client.create_collection(
collection_name="demo_collection",
dimension=384 # The vectors we will use in this demo has 384 dimensions
)
# Text strings to search from.
docs = [
"Artificial intelligence was founded as an academic discipline in 1956.",
"Alan Turing was the first person to conduct substantial research in AI.",
"Born in Maida Vale, London, Turing was raised in southern England.",
]
# For illustration, here we use fake vectors with random numbers (384 dimension).
vectors = [[ np.random.uniform(-1, 1) for _ in range(384) ] for _ in range(len(docs)) ]
data = [ {"id": i, "vector": vectors[i], "text": docs[i], "subject": "history"} for i in range(len(vectors)) ]
res = client.insert(
collection_name="demo_collection",
data=data
)
# This will exclude any text in "history" subject despite close to the query vector.
res = client.search(
collection_name="demo_collection",
data=[vectors[0]],
filter="subject == 'history'",
limit=2,
output_fields=["text", "subject"],
)
print(res)
逐步看:
create_collection(..., dimension=384):建一個集合,dimension是向量的維度,必須和你用的嵌入模型輸出的維度一致;data:每條記錄是一個字典。id和vector之外的字段(這裏的text、subject)可以隨意加,之後可以用來過濾或作為結果返回;insert:寫入數據;search:data是查詢向量的列表,limit是返回條數,filter是過濾條件,output_fields指定結果裏帶回哪些字段。
注意官方示例裏的向量是隨機數,只為演示接口。實際使用時,文檔和問題都要先經過同一個嵌入模型得到向量。
五、按條件查詢和刪除
不做向量搜尋,只按條件取數據:
python
res = client.query(
collection_name="demo_collection",
filter="subject == 'history'",
output_fields=["text", "subject"],
)
print(res)
按條件刪除:
python
res = client.delete(
collection_name="demo_collection",
filter="subject == 'history'",
)
print(res)
search 和 query 的區別:前者按向量相似度排序返回最接近的幾條,後者返回所有滿足過濾條件的記錄。
六、限制
官方頁面列出的限制:
| 方面 | 限制 |
|---|---|
| 規模 | 只適合小規模向量搜尋;大規模用 Standalone 或 Distributed |
| 索引 | 只支持 FLAT;指定其他索引類型也會被當作 FLAT |
| 一致性 | 只支持 Strong;其他設定也會被當作 Strong |
| 不支持的功能 | 分區、用戶與角色、別名、重命名集合等 |
FLAT 是逐條比較的精確搜尋,數據量小時沒問題,數據量大了會慢。這也是它「只適合小規模」的原因。
七、遷移到正式版
數據量上來之後,把 Lite 裏的數據導出,再導入正式的 Milvus。官方給的命令:
bash
pip install -U "pymilvus[bulk_writer]"
milvus-lite dump -d ./milvus_demo.db -c demo_collection -p ./data_dir
導出的文件可以通過 Bulk Insert 導入 Milvus,或者通過 Data Import 導入 Zilliz Cloud。
應用代碼這一側,因為 API 相同,主要改動是創建客戶端時把本地文件路徑換成服務地址。
常見問題
Q:Windows 上能裝嗎?
官方頁面的支持平台列表裏沒有 Windows。在 Windows 上想用,可以在 WSL 的 Ubuntu 裏按上面的步驟操作,或者用 Docker 運行 Milvus Standalone;具體以官方文檔為準。只是想要一個在 Windows 上能直接 pip 安裝的本地向量庫,可以看《ChromaDB 是什麼》。
Q:報錯提示本地數據庫連接需要 Milvus Lite?
說明裝的 pymilvus 不含 Lite 組件。按上面的命令帶上 milvus-lite 附加項重新安裝,並確認系統在支持列表裏。
Q:維度填多少?
由嵌入模型決定,查你所用模型的文檔。建集合時填錯,插入時就會因維度不符而失敗。
Q:和 pgvector 怎麼選?
數據本來就在 PostgreSQL 裏、想少維護一個系統,看《pgvector 是什麼》。預計向量規模很大、需要專門的向量數據庫,從 Milvus Lite 起步,之後可以原樣遷到集群。
參考資料
- Run Milvus Lite Locally(Milvus 官方文檔):https://milvus.io/docs/milvus_lite.md
0 條評論
還沒有評論,來搶沙發~