向量动态量化
本文介绍向量检索服务 DashVector 动态量化功能和作用。
背景介绍
量化(Quantization)是向量检索技术中一种常用的优化方法,通过一定程度的精度(召回率)损失,来换取性能的大幅度提升,以及内存占用(索引文件大小)大幅度降低。
向量检索服务 DashVector 支持向量的动态量化,用户仅需在新建 Collection 时选择对应的量化策略,即可无感的使用量化功能。
重要
量化功能 局限性 说明:现阶段,开启量化功能的 Collection 无法使用 Sparse Vector 功能。若您有量化+SparseVector 结合使用的需求,可加群(官方钉钉群:25130022704)联系我们。
开启动态量化
前提条件
已创建 Cluster
已获得 API-KEY
已安装最新版 SDK
代码示例
说明
需要使用您的 api-key 替换示例中的 YOUR_API_KEY、您的 Cluster Endpoint 替换示例中的 YOUR_CLUSTER_ENDPOINT,代码才能正常运行。
Cluster Endpoint,可在控制台"Cluster 详情"中查看。
说明
通过获取 Doc 获取到的向量数据,是经过反量化后的近似值,非插入时的原值。
参数描述
创建 Collection 时可通过VectorParam
类的quantize_type
字段来定义量化策略。quantize_type
当前可选值如下:
DT_VECTOR_INT8
:将 Float32 向量量化为 INT8 类型
性能和召回率参考
基于 1 百万 768 维数据集
DashVector 规格 :P.large
度量方式 :cosine
topk :100
说明
可以看到这个示例中,以 4.38%的召回率下降为代价,将索引大小缩减为原来的 1/3,同时 QPS 提升了 48%。
以上数据为基于Cohere数据集实测结果,但不同数据集的数据分布对 QPS、召回以及压缩比有影响,上述数据仅供参考。
更多参考
重要
可以看到,DashVector 量化策略并非适用于所有数据集。在实际生产环境中,请谨慎使用量化策略。
建议创建不带量化策略、带量化策略的两个 Collection,经过实际对比、测试、验证后再确定是否可将量化策略用于生产环境。
版权声明: 本文为 InfoQ 作者【DashVector】的原创文章。
原文链接:【http://xie.infoq.cn/article/2627457f6bc5c9de7b8d8a948】。文章转载请联系作者。
评论