在 RAG 系統中,當企業知識庫規模達到 數百萬甚至上億條文檔向量 時,傳統的 暴力檢索 (Brute-force Search) 需要逐一計算與查詢向量的餘弦相似度,時間複雜度為 O(N),難以滿足秒級回應需求。
ANN 的目標:在犧牲少量精度的前提下,大幅提升檢索速度。
概念:透過建立 分層圖結構,讓查詢從高層快速縮小範圍,再在低層精細檢索。
特點:
工作原理:
概念:先將所有向量 聚類 (k-means) 成若干「桶」(Cluster),檢索時只在最相關的桶內比對。
特點:
工作原理:
實務上,很多企業會 結合 HNSW + IVF,取兩者優點。
假設有 1000 萬份文檔向量:
這樣就能在 毫秒級 找到 Top-k 相似文檔。
特性 | HNSW | IVF | 暴力搜尋 |
---|---|---|---|
查詢精度 | 非常高 (~95%+) | 中等 (~85-95%) | 100% |
查詢速度 | 極快 | 快 | 慢 |
記憶體需求 | 高 | 中等 | 低 |
建索引時間 | 中等 | 快 | 無需建索引 |
適用場景 | 線上檢索 | 大規模離線 | 小規模精確 |
數據規模 < 10萬
├─ 使用暴力搜尋(簡單高效)
數據規模 10萬 - 1000萬
├─ 線上查詢頻繁 → HNSW
└─ 批次查詢為主 → IVF
數據規模 > 1000萬
├─ 高精度要求 → HNSW + 量化
├─ 成本敏感 → IVF + PQ
└─ 混合需求 → 多索引並行
在企業中,如果知識庫向量數量達到 1 億,你會如何在 速度與精度 之間做取捨?
對於需要 高精度(如法務文件) 與 高效率(如客服 FAQ) 的場景,應如何選擇 ANN 演算法?