向量动态量化

news/2024/11/14 11:38:52/文章来源:https://www.cnblogs.com/DashVector/p/18545647

本文介绍向量检索服务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详情"中查看。

import dashvector
import numpy as np
from dashvector import VectorParamclient = 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

说明

  1. 可以看到这个示例中,以4.38%的召回率下降为代价,将索引大小缩减为原来的1/3,同时QPS提升了48%。

  2. 以上数据为基于Cohere数据集实测结果,但不同数据集的数据分布对QPS、召回以及压缩比有影响,上述数据仅供参考。

更多参考

重要
可以看到,DashVector量化策略并非适用于所有数据集。在实际生产环境中,请谨慎使用量化策略。

建议创建不带量化策略、带量化策略的两个Collection,经过实际对比、测试、验证后再确定是否可将量化策略用于生产环境。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/833351.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从零到一构建并打包 React + TypeScript + Less组件库教程(一、项目初始化搭建+代码规范集成)

本系列涉及的内容如下:组件库基础搭建,react + ts + less 项目规范,包括但不限于 prettier、eslint、stylelint、husky、lint-staged、commitlint pnpm monorepo + turborepo 集成 gulp + webpack 构建 esm、cjs 和 umd storybook 文档集成此系列不包含发布 npm 和构建 CI 流…

分区Partition

理解Partition 向量检索服务DashVector的Collection具有分区(Partition)的能力,同一个Collection下的Doc可通过不同的Partition进行物理和逻辑上的分区。各种Doc操作(如插入Doc、检索Doc等。若指定Partition,则该操作将限定在该指定的Paritition内进行。通过合理的Partiti…

PGsql 大写字段名,flink目前不支持读取

flink1.20 连接 postgres_flink postgresql-CSDN博客[FLINK-23324] Postgres of JDBC Connector enable case-sensitive. - ASF JIRA

成本减半 + 效率翻倍:这家企业用 11 天实现数据处理飞跃

伴随着云计算和数字化浪潮的推进,越来越多行业数据实时性的权重正在被加速提升,对企业而言,如果想要保证业务的持续发展,其底层数据库必须要能满足数据的实时性和高并发要求。 除此之外,在降本增效的大潮下,“高性价比”也成为企业选择一款数仓的重要因素。 那么,企业应…

Windows激活神器HEU KMS Activator v42.3.1

软件介绍 HEU KMS Activator,简洁高效的全能KMS/OEM激活工具,适用所有Windows, Office版本,无需联网即可一键激活,支持UEFI的KMS激活工具。KMS服务是微软对Windows, Office等产品的批量许可服务,利用KMS可以激活局域网内的产品。该工具利用KMS机制在系统搭建KMS服务器,从…

如何远程实时监控员工的电脑屏幕?60教会你,五个妙招轻松搞定!

https://mbd.baidu.com/newspage/data/landingsuper?context=%7B%22nid%22%3A%22news_9073269535369745774%22%7D&n_type=1&p_from=4 使用远程桌面协议(RDP)远程桌面协议(RDP)是一种允许用户远程连接到另一台计算机的技术。通过配置RDP,管理员可以实时访问员工的…

终端ssh终端模拟软件:Termius激活安装包

Termius是一款功能强大的跨平台终端管理工具,提供了友好的用户界面,支持SSH、Telnet、SFTP等多种连接协议,方便用户远程连接和管理服务器。此外,Termius还支持多平台同步、文件传输、批量操作、脚本自动化等进阶功能,且具备强大的数据加密和安全性保障。无论是开发人员、系…

解读Karmada多云容器编排技术,加速分布式云原生应用升级

Karmada提供了一个全局的控制面板,使得用户能够像操作单一集群一样管理多云上的Kubernetes集群。本文分享自来源:《华为云DTSE》第五期开源专刊,作者:任洪彩 华为云高级软件工程师,Karmada社区Maintainer。管理和协调跨多个云平台的容器化应用是当前企业面临的复杂性挑战之…

京东零售广告创意:基于人类反馈的可信赖图像生成

作者:京东零售 冯伟ECCV2024: Towards Reliable Advertising Image Generation Using Human Feedback 链接:https://arxiv.org/abs/2408.00418 摘要:在电商领域,吸引顾客注意力的广告图片至关重要。尽管生成模型可以自动生成图像,但它们往往会产生不符合广告标准的图片,可…

如何分发APP供用户使用?

​在移动互联网时代,APP(应用程序)已成为人们日常生活中不可或缺的一部分。无论是购物、社交、娱乐还是工作,APP都提供了极大的便利。然而,开发一款APP只是第一步,如何将其有效地分发到用户手中,让用户能够轻松下载并使用,才是决定APP成功与否的关键。 一、应用商店分发…

当然不是草台班子-冲刺计划

作业所属课程 软件工程2024作业要求 2024秋软工实践团队作业-第三次( Alpha冲刺)作业目标 做出alpha冲刺的计划团队名称 当然不是草台班子团队成员学号 姓名102201427 侯丽珂102201426 郑嘉祺102201241 戴康怡102201218 肖晗涵112200328 谢李东292300304 陈鹭102201242 魏儀阳…

设备管理系统功能拆解——设备档案管理

设备档案管理是设备管理系统中的一个核心组成部分,简单来说,它就是对设备的所有信息进行系统化的记录与管理,包括设备的基本数据、使用情况以及维护历史等。 如果一个工厂里数十台设备同时运转,没有准确的设备档案—— 设备出现故障时,管理者如何能迅速找到相关信息? 当需…