• 關於 Milvus
  • 開始使用
  • 概念
  • 使用者指南
  • 資料匯入
  • AI 工具
  • 管理指南
  • 工具
  • 整合
  • 教學
  • 常見問題
  • API Reference

磁碟上索引

本文將介紹 DiskANN,一種用於磁碟最佳化向量搜尋的磁碟上索引演算法。DiskANN 以 Vamana 圖形為基礎,在大型資料集中提供高效率的磁碟上向量搜尋。

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

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

先決條件

要在 Milvus 中使用 DiskANN,請注意

  • 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
  PQCodeBudgetGBRatio: 0.125
  SearchCacheBudgetGBRatio: 0.125
  BeamWidthRatio: 4.0
...
參數說明值範圍預設值
MaxDegreeVamana 圖形的最大度數。
較大值可提供較高的召回率,但會增加索引的大小和建立索引的時間。
[1, 512]56
SearchListSize候選清單的大小。
較大值會增加建立索引所花費的時間,但可提供較高的召回率。
除非您需要減少建立索引的時間,否則請將它設定為小於MaxDegree 的值。
[1, int32_max]100
PQCodeBudgetGBRatioPQ 代碼的大小限制。
較大值可提供較高的召回率,但會增加記憶體使用量。
(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 倍。

開始使用
反饋

這個頁面有幫助嗎?