向量动态量化

DashVector · · 277 次点击 · · 开始浏览    

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

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

277 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传