欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > 向量动态量化

向量动态量化

2025/7/2 13:01:58 来源:https://blog.csdn.net/qq_41362382/article/details/140271019  浏览:    关键词:向量动态量化

背景介绍

量化(Quantization)是向量检索技术中一种常用的优化方法,通过一定程度的精度(召回率)损失,来换取性能的大幅度提升,以及内存占用(索引文件大小)大幅度降低。

向量检索服务DashVector支持向量的动态量化,用户仅需在新建Collection时选择对应的量化策略,即可无感的使用量化功能。

重要

量化功能局限性说明:现阶段,开启量化功能的Collection无法使用Sparse Vector功能。若您有量化+SparseVector结合使用的需求,可加群(官方钉钉群:25130022704)联系我们。


开启动态量化

前提条件

  • 已创建Cluster:创建Cluster。

  • 已获得API-KEY:API-KEY管理。

  • 已安装最新版SDK:安装DashVector SDK。

代码示例

说明

  1. 需要使用您的api-key替换示例中的YOUR_API_KEY、您的Cluster Endpoint替换示例中的YOUR_CLUSTER_ENDPOINT,代码才能正常运行。

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

Python示例:

import dashvector
import numpy as npclient = dashvector.Client(api_key='YOUR_API_KEY',endpoint='YOUR_CLUSTER_ENDPOINT'
)
assert client# 创建带有量化策略的collection
ret = client.create('quantize_demo',dimension=768,extra_params={'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和检索Doc(include_vector=True时)获取到的向量数据,是经过反量化后的近似值,非插入时的原值。

参数描述

创建Collection时可通过extra_params: Dict[str, str]参数的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,经过实际对比、测试、验证后再确定是否可将量化策略用于生产环境。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词