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

milvus-logo
LFAI
主頁
  • 概念

磁碟上索引

本文介紹一種名為 DiskANN 的磁碟索引演算法。DiskANN 基於 Vamana 圖形,能夠在大型資料集中進行高效率的搜尋。

為了改善查詢效能,您可以為每個向量欄位指定索引類型

目前,一個向量欄位只支援一種索引類型。切換索引類型時,Milvus 會自動刪除舊索引。

先決條件

要使用 DiskANN,請注意

  • DiskANN 預設為停用。如果您偏好記憶體索引而非磁碟索引,建議您停用此功能以獲得更好的效能。
    • 若要停用此功能,您可以在 milvus 配置文件中將queryNode.enableDisk 改為false
    • 若要再次啟用,您可以將queryNode.enableDisk 設為true
  • Milvus 實例在 Ubuntu 18.04.6 或更新版本上執行。
  • Milvus 資料路徑應掛載至 NVMe SSD,以獲得完整效能:
    • 對於 Milvus 獨立實例,資料路徑應該是實例執行所在容器中的/var/lib/milvus/data
    • 對於 Milvus 叢集實例,資料路徑應該是 QueryNodes 和 IndexNodes 執行所在容器中的/var/lib/milvus/data

限制

要使用 DiskANN,請確保您

  • 在資料中只使用至少 1 維的浮動向量。
  • 僅使用 Euclidean Distance (L2)、Inner Product (IP) 或 COSINE 來測量向量之間的距離。

索引和搜尋設定

  • 索引建立參數

    建立 DiskANN 索引時,請使用DISKANN 作為索引類型。不需要索引參數。

  • 搜尋參數

    參數說明範圍預設值
    search_list候選名單的大小,較大的大小提供較高的召回率,但效能會降低。[topk, int32_max] (最大值)16

DiskANN 是可調整的。您可以在${MILVUS_ROOT_PATH}/configs/milvus.yaml 中修改 DiskANN 相關的參數,以改善其效能。

...
DiskIndex:
  MaxDegree: 56
  SearchListSize: 100
  PQCodeBugetGBRatio: 0.125
  SearchCacheBudgetGBRatio: 0.125
  BeamWidthRatio: 4.0
...
參數說明值範圍預設值
MaxDegreeVamana 圖形的最大度數。
值越大,召回率越高,但會增加索引的大小和建立索引的時間。
[1, 512]56
SearchListSize候選名單的大小。
較大值會增加建立索引所花費的時間,但可提供較高的召回率。
除非您需要減少建立索引的時間,否則請將它設定為小於MaxDegree 的值。
[1, int32_max]100
PQCodeBugetGBRatioPQ 代碼的大小限制。
較大值可提供較高的召回率,但會增加記憶體使用量。
(0.0, 0.25]0.125
SearchCacheBudgetGBRatio快取節點數與原始資料的比率。
較大值可改善索引建立效能,但會增加記憶體使用量。
[0.0, 0.3)0.10
BeamWidthRatio每次搜索迭代的最大 IO 請求數目與 CPU 數目之間的比率。[1,max(128 / CPU 數目,16)] 4.04.0

疑難排解

  • 如何處理io_setup() failed; returned -11, errno=11:Resource temporarily unavailable 錯誤?

    Linux 核心提供異步非阻塞 I/O (Asynchronous non-blocking I/O, AIO) 功能,允許一個進程同時啟動多個 I/O 作業,而不必等待任何一個完成。這有助於提升可重複處理和 I/O 的應用程式的效能。

    可以使用 proc 檔案系統中的/proc/sys/fs/aio-max-nr 虛擬檔案調整效能。aio-max-nr 參數決定允許的最大並發要求數目。

    aio-max-nr 預設為65535 ,您可以將其設定為10485760

免費嘗試托管的 Milvus

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

開始使用
反饋

這個頁面有幫助嗎?