2026年4月29日 星期三

SQL Server 2025中關於DiskANN索引

 


作者:楊先民  
精誠資訊/恆逸教育訓練中心資深講師


※網路引用請註明完整出處


在資料庫技術與 AI 交匯的今日,DiskANN (Disk-based Approximate Nearest Neighbor) 索引無疑是SQL Server 2025 最具前瞻性的技術特徵之一。

作為一名資料庫與交易設計多年的專業人士,能感受到,「索引」的本質正在從傳統的「B-Tree 排序檢索」轉向「高維空間的拓撲導航」。

本期將跳過膚淺的行銷術語,直擊 DiskANN 的技術核心、算法優勢以及它為何能成為企業級向量搜尋的「終結方案」。


時代背景:向量搜尋的「記憶體之牆」

在生成式 AI (GenAI) 爆發初期,業界的主流索引是 HNSW (Hierarchical Navigable Small World)HNSW 雖然極快,但它有一個致命傷:它是全記憶體駐留的 (In-Memory)

當向量維度增加(例如從 768 維到 3072 維)且數據量達到千萬甚至億級時,HNSW 需要消耗數百 GB 甚至 TB 級的 RAM。對於傳統企業或像您熟悉的 SQL Server 運作環境來說,這不僅成本極高,且在維護大數據量時極不經濟。

DiskANN 的出現,就是為了打破這道「記憶體之牆」。 它的目標是:利用廉價且巨大的 SSD(磁碟),同時保有接近記憶體速度的檢索性能。

DiskANN 的靈魂:Vamana 算法

DiskANN 由微軟研究院 (MSR) 開發,其核心是一種名為Vamana 的圖算法。這與 HNSW 的多層結構不同,Vamana 建立的是一種更靈活、更強大的圖拓撲結構。

■ 什麼是 Vamana

傳統的圖搜尋算法(如 NSW)容易陷入「局部最優解」,或者在搜尋時路徑過長。Vamana 引入了兩個關鍵機制:

1.       全局連接性:它確保圖中的節點不僅連接鄰近的鄰居,還會保留一些「遠距離」的邊。這就像是陽明山的山路,既有小徑,也有快速聯通山頭的幹道。

2.       邊的剪枝(Pruning:為了不讓圖過於肥大,Vamana 使用了一套嚴格的幾何剪枝規則。這保證了每個節點的出度(Out-degree)是受控的,從而最佳化了搜尋效率。

關鍵技術:兩級儲存架構 (Two-Tier Storage)

DiskANN 之所以被稱為「Disk-based」,是因為它巧妙地將資料分層:

■ 壓縮向量在記憶體 (Compressed Vectors in RAM)

DiskANN 會對原始向量進行 乘積量化 (Product Quantization, PQ)。這是一種極其精妙的壓縮技術,能將 1024 維的浮點數向量壓縮成僅幾十個位元組的代碼(Codes)。

●  用途:當您執行查詢時,SQL Server 會先在 RAM 中利用這些「模糊但極小」的量化向量進行初步過濾,快速定位到潛在的候選名單。

■ 原始向量在磁碟 (Full Vectors on SSD)

完整的、無損的向量數據被儲存在磁碟上。

●  用途:一旦初步篩選出候選者(例如前 100 名),系統會發起異步的磁碟 I/O,讀取這些精確的原始向量,進行最後的重排序(Re-ranking)與距離校準。

這就是 DiskANN 的魔力:搜尋過程大部分在 RAM 進行,精確計算在 SSD 進行。

為什麼 SQL Server 2025 選擇它?(DBA 的視角)

作為資料庫專家,我們最關心的通常是「可伸縮性」與「管理成本」。DiskANN 對於 SQL Server 來說有三個不可替代的價值:

■ 成本效益 (TCO)

SSD 的每 GB 成本僅為 RAM 的百分之一。使用 DiskANN,企業可以在一台只有 128GB RAM 的伺服器上處理數億筆向量數據,而如果使用 HNSW,同樣的數據量可能需要數台 1TB RAM 的昂貴主機。

■ 緩衝池 (Buffer Pool) 的友善性

傳統索引如果太大,會頻繁擠占 Buffer Pool,導致 OLTX 交易性能下降。DiskANN 的圖結構是針對 SSD 設計的,它利用 單次 I/O 讀取多個鄰居節點 的特性,極大地減少了隨機 I/O 帶來的延遲。

■ 數據一致性與事務 (ACID)

DiskANN SQL Server 2025 中並非一個獨立的組件,而是深度整合進引擎。這意味著:

●  日誌記錄 (Logging):向量數據的變更同樣受到 LDF 檔案的保護。

●  並發控制:在大量同時寫入時,DiskANN 的索引結構能保持穩定,不會像某些開源向量庫在重建索引時導致服務中斷。

性能實測:召回率 (Recall) 與延遲 (Latency)

在向量搜尋領域,我們追求的是 Recall@K(即在前 K 個結果中,有多少是真正的最鄰近點)。

微軟的基準測試顯示,DiskANN 在處理 10 億級 (Billion-scale) 的數據時:

●  Recall@10 可以輕鬆達到 95% 以上。

●  查詢延遲 控制在幾十毫秒以內。 這對於像「以圖搜圖」或「法律文件語義檢索」這類對準確度要求極高的企業場景,是非常恐怖的性能表現。


專業洞察:DiskANN 的挑戰與限制

儘管 DiskANN 極其強大,但在實作中,我們仍需注意幾點:

1.       索引構建時間 (Build Time)Vamana 圖的構建過程涉及大量的距離計算與邊的重新連接,比 B-Tree 慢得多。在大規模的資料下,構建索引可能需要數小時。

2.       SSD 性能要求DiskANN 極度依賴 SSD 隨機讀取性能 (IOPS)。如果在傳統 HDD 或低階雲端硬碟上跑,性能會出現懸崖式下跌。

3.       維度詛咒 (Curse of Dimensionality):當向量維度極高時,任何算法的效率都會下降。

總結:開啟「智慧資料庫」的新篇章

對使用者而言,SQL Server 2025 DiskANN 不僅僅是一個新功能,它代表了資料庫從 「資料儲存器」轉化為「語義搜尋引擎」 的重要一步。

想像一下,未來您在設計資料庫時,可以將 SQL Server 原有的強大 Transaction (ACID) 能力與 DiskANN 大規模 AI 檢索 合而為一。這意味著,您可以一邊處理每秒數萬筆的訂單寫入,一邊讓 AI 即時地在這些訂單中進行跨語言、跨類別的語義關聯分析。

DiskANN AI 不再是昂貴的奢侈品,而是每一台 SQL Server 都能負擔得起的基礎設施。

0 意見:

張貼留言