🚀 免費嘗試 Zilliz Cloud,完全托管的 Milvus,體驗速度提升 10 倍!立即嘗試

milvus-logo
LFAI
主頁
  • 常見問題

操作常見問題

如果我從 Docker Hub 拉取 Milvus Docker 映像失敗怎麼辦?

如果您從 Docker Hub 拉取 Milvus Docker image 失敗,請嘗試加入其他註冊表鏡像。

中國大陸的使用者可以在/etc.docker/daemon.json 的 registry-mirrors array 中加入網址 "https://registry.docker-cn.com"。

{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}

Docker 是安裝和執行 Milvus 的唯一方法嗎?

Docker 是部署 Milvus 的有效方法,但不是唯一的方法。您也可以從原始碼部署 Milvus。這需要 Ubuntu (18.04 或更高版本) 或 CentOS (7 或更高版本)。更多資訊請參閱從原始碼建立 Milvus

影響召回率的主要因素是什麼?

召回率主要受索引類型和搜尋參數影響。

對於 FLAT 索引,Milvus 採取集合內的窮盡掃描,100% 回復。

對於 IVF 索引,nprobe 參數決定在資料集中的搜尋範圍。增加 nprobe 會增加搜尋向量的比例和召回率,但會降低查詢效能。

對於 HNSW 索引,ef 參數決定圖搜尋的寬度。增加 ef 會增加在圖表上搜尋的點數量和召回率,但會降低查詢效能。

如需詳細資訊,請參閱向量索引

為什麼我對配置檔案的變更沒有生效?

Milvus 不支援在執行時修改組態檔案。您必須重新啟動 Milvus Docker,配置檔案的變更才會生效。

我如何知道 Milvus 是否成功啟動?

如果 Milvus 是使用 Docker Compose 啟動的,請執行docker ps 觀察有多少 Docker 容器正在執行,並檢查 Milvus 服務是否正確啟動。

對於 Milvus 獨立版本,您應該至少可以觀察到三個執行中的 Docker 容器,其中一個是 Milvus 服務,另外兩個是 etcd 管理和儲存服務。如需詳細資訊,請參閱安裝 Milvus standalone

為什麼日誌檔中的時間與系統時間不同?

時間不同通常是因為主機不使用 Coordinated Universal Time (UTC)。

Docker 映像中的日誌檔案預設使用 UTC。如果您的主機不使用 UTC,可能會發生這個問題。

我如何知道我的 CPU 是否支援 Milvus?

Milvus 的運算操作取決於 CPU 對 SIMD (Single Instruction, Multiple Data) 延伸指令集的支援。您的 CPU 是否支援 SIMD 延伸指令集,對 Milvus 的索引建立和向量相似性搜尋至關重要。確保您的 CPU 至少支援下列其中一種 SIMD 指令集:

  • SSE4.2
  • AVX
  • AVX2
  • AVX512

執行 lscpu 指令檢查您的 CPU 是否支援上述 SIMD 指令集:

$ lscpu | grep -e sse4_2 -e avx -e avx2 -e avx512

為什麼 Milvus 在啟動時返回illegal instruction

Milvus 要求您的 CPU 支援 SIMD 指令集:SSE4.2、AVX、AVX2 或 AVX512。CPU 必須至少支援其中之一,以確保 Milvus 正常運作。在啟動時返回illegal instruction 錯誤,表示您的 CPU 不支援上述四種指令集中的任何一種。

請參閱CPU 對 SIMD 指令集的支援

我可以在 Windows 上安裝 Milvus 嗎?

可以,您可以從原始碼或二進位套件編譯在 Windows 上安裝 Milvus。

請參閱在 Windows 上執行 Milvus了解如何在 Windows 上安裝 Milvus。

我在 Windows 上安裝 pymilvus 時出錯。我該怎麼做?

請嘗試使用下列指令更新 pymilvus 到最新版本。

pip install --upgrade pymilvus

我可以在斷線時部署Milvus嗎?

是的,您可以在離線環境下安裝 Milvus。更多資訊請參閱離線安裝 Milvus

我在哪裡可以找到 Milvus 產生的日誌?

Milvus 日誌預設列印到 stout (標準輸出) 和 stderr (標準錯誤),然而我們強烈建議在生產中重定向您的日誌到一個持久卷。要這樣做,請更新milvus.yaml 中的log.file.rootPath 。如果您使用milvus-helm 圖表部署 Milvus,您也需要先透過--set log.persistence.enabled=true 啟用日誌持久化。

如果您沒有變更設定,使用 kubectl logs <pod-name> 或 docker logs CONTAINER 也可以幫助您找到日誌。

在插入資料之前,我可以為一個區段建立索引嗎?

可以。但我們建議您在為每個區段建立索引之前,先分批插入資料,每批不應超過 256 MB。

我可以在多個 Milvus 實體中共用一個 etcd 實體嗎?

是的,您可以在多個 Milvus 實例中共用一個 etcd 實例。要做到這一點,您需要在啟動每個 Milvus 實例之前,將etcd.rootPath 改為每個實例配置文件中的單獨值。

我可以在多個 Milvus 實例中共用一個 Pulsar 實例嗎?

是的,您可以在多個 Milvus 實例之間共享一個 Pulsar 實例。要這樣做,你可以

  • 如果在你的 Pulsar 实例上启用了多租户,考虑为每个 Milvus 实例分配一个单独的租户或命名空间。要做到這一點,您需要在啟動 Milvus 實例之前,將其配置檔中的pulsar.tenantpulsar.namespace 改為每個實例的唯一值。
  • 如果您不打算在 Pulsar 實例上啟用多租戶功能,請考慮在啟動 Milvus 實例之前,將配置檔案中的msgChannel.chanNamePrefix.cluster 變更為每個實例的唯一值。

我可以在多個 Milvus 實例中共用一個 MinIO 實例嗎?

是的,您可以在多個 Milvus 實體之間共用一個 MinIO 實體。要做到這一點,您需要在啟動每個 Milvus 實例之前,將minio.rootPath 改為每個 Milvus 實例在配置文件中的唯一值。

如何處理pymilvus.exceptions.ConnectionConfigException: <ConnectionConfigException: (code=1, message=Illegal uri: [example.db], expected form 'https://user:pwd@example.com:12345')> 錯誤訊息?

錯誤訊息Illegal uri [example.db] 表示您嘗試使用早期版本的 PyMilvus 連線到 Milvus Lite,而早期版本的 PyMilvus 並不支援此連線類型。要解決這個問題,請將你的 PyMilvus 安裝升級到至少 2.4.2 版,它包含了對連線到 Milvus Lite 的支援。

您可以使用下列指令升級 PyMilvus:

pip install pymilvus>=2.4.2

為什麼我得到的結果少於我在搜尋/查詢中設定的limit

有幾個原因可能會導致您收到的結果比您指定的limit 少:

  • 資料有限:資料集中可能沒有足夠的實體來滿足您所要求的限制。如果集合中的實體總數少於限制,您自然會收到較少的結果。

  • 重複的主鍵:Milvus 在搜尋過程中遇到重複的主索引鍵時,會優先處理特定的實體。此行為依據搜尋類型而有所不同:

  • 查詢 (完全匹配):Milvus 選擇具有匹配 PK 的最新實體。 ANN 搜尋:Milvus 選擇相似度得分最高的實體,即使實體共享相同的 PK。 如果您的集合有許多重複的主索引鍵,此優先順序可能會導致比限制更少的唯一結果。

  • 匹配不足:您的搜尋篩選表達式可能過於嚴格,導致符合相似性臨界值的實體較少。如果為搜尋設定的條件限制性過高,就不會有足夠的實體符合,導致結果比預期的少。

MilvusClient("milvus_demo.db") gives an error: ModuleNotFoundError: No module named 'milvus_lite'.這是什麼原因造成的,該如何解決?

當您嘗試在 Windows 平台上使用 Milvus Lite 時,會發生此錯誤。Milvus Lite主要是為Linux環境設計,對Windows可能沒有本機支援。

解決方法是使用 Linux 環境:

  • 使用 Linux 作業系統或虛擬機器來執行 Milvus Lite。
  • 此方法可確保與函式庫的相依性及功能相容。

Milvus 中的 "Length exceeds max length" 錯誤是什麼?

Milvus 中的 "Length exceeds max length "錯誤發生在資料元素的大小超過集合或欄位的最大允許大小時。以下是一些範例和解釋:

  • JSON 欄位錯誤:<MilvusException: (code=1100, message=the length (398324) of json field (metadata) exceeds max length (65536): expected=valid length json string, actual=length exceeds max length: invalid parameter)>

  • 字串長度錯誤:<ParamError: (code=1, message=invalid input, length of string exceeds max length. length: 74238, max length: 60535)>

  • VarChar 欄位錯誤:<MilvusException: (code=1100, message=the length (60540) of 0th VarChar paragraph exceeds max length (0)%!(EXTRA int64=60535): invalid parameter)>

要了解並處理這些錯誤:

  • 瞭解len(str) 在 Python 中代表字元數,而不是以位元組表示的大小。
  • 對於以字串為基礎的資料類型,例如 VARCHAR 和 JSON,使用len(bytes(str, encoding='utf-8')) 來決定實際大小 (位元組),這也是 Milvus 使用 "max-length" 的原因。

Python 中的範例:

# Python Example: result of len() str cannot be used as "max-length" in Milvus 
>>> s = "你好,世界!"
>>> len(s) # Number of characters of s.
6
>>> len(bytes(s, "utf-8")) # Size in bytes of s, max-length in Milvus.
18

pymilvus.exceptions.ConnectionConfigException: <ConnectionConfigException: (code=1, message=Illegal uri: [example.db], expected form 'https://user:pwd@example.com:12345')>.這是什麼原因造成的,該如何解決?

這個錯誤表示您嘗試使用不支援的早期版本 pymilvus 連線到 Milvus Lite。要解決這個問題,請將您的 pymilvus 安裝升級到至少 2.4.2 版本。這個版本支援連線到 Milvus Lite。要升級,請使用下列指令:

pip install pymilvus>=2.4.2

還有問題嗎?

您可以

  • 查看 GitHub 上的Milvus。隨時提出問題、分享想法並幫助他人。
  • 加入我們的Milvus 論壇Slack 頻道,尋找支援並參與我們的開放原始碼社群。

免費嘗試托管的 Milvus

Zilliz Cloud 無縫接入,由 Milvus 提供動力,速度提升 10 倍。

開始使用
反饋

這個頁面有幫助嗎?