日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

向量動態量化

本文介紹向量檢索服務DashVector動態量化功能和作用。

背景介紹

量化(Quantization)是向量檢索技術中一種常用的優化方法,通過一定程度的精度(召回率)損失,來換取性能的大幅度提升,以及內存占用(索引文件大小)大幅度降低。

向量檢索服務DashVector支持向量的動態量化,用戶僅需在新建Collection時選擇對應的量化策略,即可無感的使用量化功能。

重要

量化功能局限性說明:現階段,開啟量化功能的Collection無法使用Sparse Vector功能。若您有量化+SparseVector結合使用的需求,可加群(官方釘釘群:25130022704)聯系我們。

開啟動態量化

前提條件

代碼示例

說明
  1. 需要使用您的api-key替換示例中的YOUR_API_KEY、您的Cluster Endpoint替換示例中的YOUR_CLUSTER_ENDPOINT,代碼才能正常運行。

  2. Cluster Endpoint,可在控制臺“Cluster詳情”中查看。

import dashvector
import numpy as np
from dashvector import VectorParam

client = dashvector.Client(
    api_key='YOUR_API_KEY',
    endpoint='YOUR_CLUSTER_ENDPOINT'
)
assert client

# 創建帶有量化策略的collection
ret = client.create('quantize_demo', 
                     vectors=VectorParam(768, quantize_type='DT_VECTOR_INT8'))
print(ret)

collection = client.get('quantize_demo')

# 正常寫入向量數據,該向量數據會按照創建collection時定義的量化策略自動進行量化
collection.insert(('1', np.random.rand(768).astype('float32')))

# 通過id獲取對應的doc,需注意,這里獲取到的向量數據是經過反量化后的近似值,非插入時的原值
doc = collection.fetch('1')

# 若檢索時設置返回向量數據,返回的向量數據同樣是經過反量化后的近似值,非插入時的原值
docs = collection.query(
    vector=np.random.rand(768).astype('float32'),
    include_vector=True
)
說明

通過獲取Doc檢索Docinclude_vector=True時)獲取到的向量數據,是經過反量化后的近似值,非插入時的原值。

參數描述

創建Collection時可通過VectorParam類的quantize_type字段來定義量化策略。quantize_type當前可選值如下:

  • DT_VECTOR_INT8:將Float32向量量化為INT8類型

性能和召回率參考

基于1百萬768維數據集

  • DashVector規格:P.large

  • 度量方式:cosine

  • topk:100

量化策略

索引比

QPS

召回率

100%

495.6

99.05%

DT_VECTOR_INT8

33.33%

733.8(+48%)

94.67%

說明
  1. 可以看到這個示例中,以4.38%的召回率下降為代價,將索引大小縮減為原來的1/3,同時QPS提升了48%。

  2. 以上數據為基于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,經過實際對比、測試、驗證后再確定是否可將量化策略用于生產環境。