本文檔旨在指導您在建立表時,如何對向量索引進行通用及進階配置,以滿足不同業務情境下對效能、成本和即時性的要求。
參數配置詳解
在建立表的第四步配置索引结构時,您可以對向量欄位進行詳細配置。

向量維度
作用:定義向量包含的特徵數量。此配置必須與您使用的向量模型輸出的維度嚴格一致。
配置建議:
保持一致:如果配置的維度與實際寫入的向量資料維度不符,索引構建將失敗。
效能影響:維度越高,向量表達的資訊越豐富,但同時會增加記憶體佔用和計算開銷。維度翻倍,記憶體佔用約翻倍。
距離類型
作用:定義計算向量之間相似性的方法。不同的距離類型適用於不同的資料特徵和業務情境,選擇合適的距離類型對召回效果至關重要。
選擇指南:
距離類型
向量得分含義
餘弦距離 (Cosine)
得分範圍為
[-1, 1],得分越大越相似。1表示完全相同,-1表示完全相反。內積距離 (InnerProduct)
得分越大越相似。
歐式距離 (SquareEuclidean)
得分越小越相似。
0表示完全重合。
向量索引演算法
作用:選擇構建向量索引的底層演算法。不同的演算法在構建速度、記憶體佔用、查詢效能和召回率之間有不同的側重。
選擇指南:
演算法名稱
描述內容
距離類型
資料規模
準確性 (Recall)
查詢延遲 (Latency)
記憶體佔用 (RAM)
核心應用情境
FLAT
(原名:Linear)
向量規模:適用於萬層級資料。
情境描述:資料準確性高,召回率100%
InnerProduct 、SquaredEuclidean、Cosine
極小 (<10k)
萬級
100% (精確)
極慢
極低
基準測試、資料量極小的精排
HNSW
向量規模:適用於千萬層級資料規模。
情境描述:效能標杆,對資料準確性與查詢延遲有嚴格要求。
InnerProduct 、SquaredEuclidean、Cosine
中規模 (10M+)
千萬級
極高
低
極高
效能要求高的線上檢索 (In-memory)
HNSW_RaBitQ
向量規模:適用於十億層級資料規模。
情境描述:適合在極致記憶體需求下處理海量資料,對準確性要求不苛刻的情境。
SquaredEuclidean
中/大規模(100M+)
億層級
高
極低
極低
針對二進位量化最佳化的輕量化檢索。
CagraHNSW
向量規模:適用於億層級資料規模。
情境描述:GPU 效能怪獸,適合於GPU 圖索引演算法應用。通常配合多顯卡處理億級資料。
InnerProduct 、SquaredEuclidean
中/大規模 (100M+)
億層級
極高
極低 (GPU)
極高
GPU 加速、極高輸送量情境
HNSW_SQ
(原名:QGraph)
向量規模:適用於十億層級資料規模。
情境描述:對查詢耗時與查詢效能要求高且對資料準確性要求不嚴苛。
InnerProduct 、SquaredEuclidean、Cosine
中規模 (100M+)
十億級
高
低
高
IVF_SQ8
向量規模:適用於億層級資料規模。
情境描述:傳統平衡,對資料準確性與查詢延遲要求都不高。
InnerProduct 、SquaredEuclidean、Cosine
大規模
五億級
中/高
中
低
預算有限、海量資料的冷熱分層。通過壓縮向量減少記憶體佔用。是平衡成本與規模的經典方案。
DiskANN
向量規模:規模之王,適用於十億以上層級資料規模。
情境描述:本地碟使用,對查詢延遲要求不嚴苛且記憶體佔用少。
InnerProduct 、SquaredEuclidean、Cosine
海量 (Billion+)
十億級以上
高
中/高
極低
磁碟駐留、超大規模搜尋
即時索引
作用:開啟後,通過API寫入的增量資料可以被立即構建索引並提供查詢,實現資料的秒級可見。
工作機制:系統會將即時寫入的資料先構建臨時的記憶體索引,當累積到一定規模後,再與磁碟上的全量索引進行合并。
配置建議:
開啟 (
true):適用於需要資料立即可查的線上業務情境。開啟後會額外佔用少量記憶體和CPU資源。關閉 (
false):適用於離線分析或全量匯入後不再頻繁更新的情境。
進階配置
線性構建的閾值
作用:當一個分區內的資料量小於此閾值時,系統將強制使用
Linear(線性掃描)演算法進行暴力搜尋,即使您配置了其他向量索引演算法。配置建議:
預設值:
5000。這是一個經驗值,在此資料量下,暴力搜尋的效能通常優於或接近構建複雜索引所需的時間開銷。調整情境:一般情況下無需調整。如果您的查詢並發極高且資料量恰好在閾值附近,可適當降低此值以強制使用
HNSW等高效能索引,但這可能會增加構建開銷。
忽略有問題的向量資料
作用:控制在全量或增量資料構建過程中,遇到維度不匹配或資料為空白的異常向量時的處理策略。
配置建議:
選項
行為
推薦情境
true遇到異常向量時,該行資料將被跳過,構建任務會繼續執行,並在日誌中記錄警告。
開發測試階段。方便快速調試,避免因少量髒資料導致整個構建任務中斷。
false遇到任何異常向量時,構建任務將立即失敗並報錯。
生產環境。確保資料品質,避免資料在不知情的情況下被靜默丟棄。建議配合完善的上遊資料清洗流程使用。
即時索引參數
作用:當開啟即時索引後,此參數用於微調即時資料流的處理行為。
參數樣本:
{"proxima.oswg.streamer.segment_size":2048}參數解釋:
proxima.oswg.streamer.segment_size控制即時資料在記憶體中累積到多少條後,刷寫成一個小的記憶體段(Segment)。調優建議:
高寫入QPS情境:可適當調大此值(如
4096),以減少記憶體中Segment的數量,降低索引的管理開銷,但這會略微增加資料從寫入到可查的延遲。低寫入QPS情境:保持預設值
2048或適當調小,可以更快地使新寫入的資料可被查詢。
即時檢索參數
作用:在查詢時動態調整各索引演算法的搜尋行為,以在召回率和查詢延遲之間取得平衡。此參數的Key和Value因所選的向量索引演算法而異。
通用說明:通常,這類參數用於控制搜尋範圍。例如,對於
HNSW演算法,ef參數控制了在搜尋時要遍曆的鄰居節點數量,ef值越大,召回率越高,但查詢延遲也相應增加。配置樣本(HNSW):
{"searcher_name":"HNSW", "ef":200}ef的取值範圍通常在k(查詢返回的top K結果數)到4096之間。建議從100開始測試,根據業務對召回率和延遲的要求進行調整。
向量分隔字元
作用:定義在字串格式的向量資料中,各維度值之間的分隔字元。
樣本:對於向量資料
1.05,0.15,0.14,其分隔字元為逗號(,),這也是系統預設值。一般無需修改。