背景介紹
量化(Quantization)是向量檢索技術中一種常用的最佳化方法,通過一定程度的精度(召回率)損失,來換取效能的大幅度提升,以及記憶體佔用(索引檔案大小)大幅度降低。
向量檢索服務DashVector支援向量的動態量化,使用者僅需在建立Collection時選擇對應的量化策略,即可無感的使用量化功能。
重要
量化功能局限性說明:現階段,開啟量化功能的Collection無法使用Sparse Vector功能。若您有量化+SparseVector結合使用的需求,可加群(官方DingTalk群:25130022704)聯絡我們。
開啟動態量化
前提條件
程式碼範例
說明
需要使用您的api-key替換樣本中的YOUR_API_KEY、您的Cluster Endpoint替換樣本中的YOUR_CLUSTER_ENDPOINT,代碼才能正常運行。
Cluster Endpoint,可在控制台“Cluster詳情”中查看。
說明
通過擷取Doc和檢索Doc(include_vector=True
時)擷取到的向量資料,是經過反量化後的近似值,非插入時的原值。
參數描述
建立Collection時可通過extra_params: Dict[str, str]
參數的quantize_type
欄位來定義量化策略。quantize_type
當前可選值如下:
效能和召回率參考
基於1百萬768維資料集
DashVector規格:P.large
度量方式:cosine
topk:100
量化策略 | 索引比 | QPS | 召回率 |
無 | 100% | 495.6 | 99.05% |
DT_VECTOR_INT8 | 33.33% | 733.8(+48%) | 94.67% |
說明
可以看到這個樣本中,以4.38%的召回率下降為代價,將索引大小縮減為原來的1/3,同時QPS提升了48%。
以上資料為基於Cohere資料集實測結果,但不同資料集的資料分布對QPS、召回以及壓縮比有影響,上述資料僅供參考。
更多參考
資料集 | 量化策略 | 索引比 | 召回比 | QPS比 |
Cohere 10M 768 Cosine | DT_VECTOR_INT8 | 33% | 95.28% | 170% |
GIST 1M 960 L2 | DT_VECTOR_INT8 | 35% | 99.54% | 134% |
OpenAI 5M 1536 Cosine | DT_VECTOR_INT8 | 34% | 67.34% | 189% |
Deep1B 10M 96 Cosine | DT_VECTOR_INT8 | 52% | 99.97% | 135% |
內部資料集 8M 512 Cosine | DT_VECTOR_INT8 | 38% | 99.92% | 152% |
重要
可以看到,DashVector量化策略並非適用於所有資料集。在實際生產環境中,請謹慎使用量化策略。
建議建立不帶量化策略、帶量化策略的兩個Collection,經過實際對比、測試、驗證後再確定是否可將量化策略用於生產環境。