Milvus
Zilliz
主頁
  • 使用者指南
  • Home
  • Docs
  • 使用者指南

  • 索引

  • 浮動向量索引

  • AISAQ

AISAQCompatible with Milvus 2.6.4+

AISAQ 是基於磁碟的向量索引,可擴充DISKANN以處理十億級的資料集,而不會超出 RAM 的限制。DISKANN 將壓縮向量儲存在記憶體中,AISAQ 則不同,它將所有資料儲存在磁碟上,提供兩種模式來平衡效能與儲存成本。

當您的向量資料集太大,無法輕鬆放入 RAM,或您需要以降低記憶體需求換取一些查詢效能,以最佳化基礎架構成本時,請使用 AISAQ。

AISAQ 如何運作

上圖比較DISKANNAISAQ-PerformanceAISAQ-Scale 的儲存配置,顯示資料 (原始向量、邊緣列表和 PQ 代碼) 在 RAM 和磁碟之間的分配方式。

Aisaq Vs Diskann Aisaq Vs Diskann

基礎:DISKANN 回顧

在 DISKANN 中,原始向量和邊緣清單儲存在磁碟上,而 PQ 壓縮向量則儲存在記憶體 (DRAM)。

當 DISKANN 遍歷到一個節點 (例如向量 0):

  • 它會從磁碟載入原始向量(raw_vector_0) 及其邊緣清單(edgelist_0)。

  • 邊緣清單指出下一個要造訪的鄰居 (本範例中的節點 2、3 和 5)。

  • 原始向量用來計算與查詢向量的精確距離,以進行排序。

  • 記憶體中的 PQ 資料用於近似距離篩選,以引導下一次遍歷。

由於 PQ 資料已經快取在 DRAM 中,因此每次節點造訪只需要一次磁碟 I/O,以適度的記憶體使用量達到高查詢速度。

有關這些元件和參數的詳細說明,請參閱DISKANN

AISAQ 模式

AISAQ 提供兩種以磁碟為基礎的儲存策略。關鍵差異在於 PQ 壓縮資料的儲存方式。

AISAQ-performance

AISAQ-performance透過將 PQ 資料從記憶體移至磁碟,達到完全以磁碟為基礎的儲存,同時透過資料暫存和備援維持低 IOPS。

在此模式下:

  • 每個節點的原始向量、邊緣列表及其鄰居的 PQ 資料都一起儲存在磁碟上。

  • 此佈局可確保訪問一個節點 (例如向量 0) 仍只需要單次磁碟 I/O。

  • 然而,由於 PQ 資料在多個節點附近被重複儲存,索引檔案的大小會大幅增加,消耗更多的磁碟空間。

AISAQ-scale

AISAQ-scale著重於減少磁碟空間使用量,同時將所有資料保留在磁碟上。

在此模式下

  • PQ 資料會單獨儲存在磁碟上,沒有備援。

  • 此設計可最小化索引大小,但會導致圖形遍歷過程中產生更多 I/O 作業。

  • 為了減少 IOPS 開銷,AISAQ 引進了兩種最佳化方法:

    • 重新排列 (rearrange) 策略,可依優先順序排序 PQ 向量,以改善資料位置性。

    • DRAM 中的 PQ 快取記憶體 (pq_cache_size),可快取經常存取的 PQ 資料。

因此,與 DISKANN 或 AISAQ-Performance 相比,AISAQ-scale 能達到更好的儲存效率,但效能較低。

配置範例

# milvus.yaml
knowhere:
  AISAQ:
    build:
      max_degree: 56 # Maximum degree of the Vamana graph
      pq_code_budget_gb_ratio: 0.125 # Size limit on the PQ code (compared with raw data)
      search_list_size: 100 # Size of the candidate list during building graph
    search:
      beam_width_ratio: 4 # Ratio between the maximum number of IO requests per search iteration and CPU number

AISAQ 特有的參數

AISAQ 繼承了 DISKANN 的許多參數。為避免冗餘,以下只詳細說明 AISAQ 特有的參數。有關共用參數的說明,例如max_degree,pq_code_budget_gb_ratio,search_list_size, 和beam_width_ratio ,請參閱DISKANN

參數

說明

值範圍

調整建議

inline_pq

每個節點內嵌儲存的 PQ 向量數量。決定儲存配置 (Performance vs. Scale mode)。

類型:整數

範圍:[0、max_degree]

預設值-1

inline_pq 越接近max_degree,性能往往越好,但索引檔案大小會大幅增加。

inline_pq 接近 0 時,效能會降低,索引大小會變得與 DISKANN 相似。

注意:它高度依賴磁碟效能。如果磁碟效能不佳,不建議啟用此選項,因為有限的磁碟頻寬可能會成為瓶頸,降低整體效能。

rearrange

啟用 PQ 向量依優先順序排序,以改善 I/O 區域性。

類型:布林

範圍:[真,假]

預設值false

減少查詢 I/O,但增加索引建立時間。

pq_cache_size

以 DRAM 為單位的 PQ 快取大小 (位元組)。

類型:整數

範圍:[0, 1<<30]

預設值0

較大的快取記憶體可改善查詢效能,但會增加 DRAM 使用量。

注意事項

  • 磁碟效能很重要。AISAQ 非常依賴 SSD IOPS;儲存不良會降低 QPS。

  • AISAQ 效能模式 ≈ DISKANN 延遲,但可能需要數倍的磁碟空間。

  • AISAQ 規模模式適合離線搜尋或資料歸檔工作負載,在這些模式下 QPS 不那麼重要。

免費嘗試托管的 Milvus

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

開始使用
反饋

這個頁面有幫助嗎?