Azure AI Search 中的二进制量化:优化存储和加快搜索速度

news/2024/9/16 23:48:15/ 标签: 人工智能, azure, microsoft

随着组织继续利用生成式 AI 的强大功能来构建检索增强生成 (RAG) 应用程序和代理,对高效、高性能和可扩展解决方案的需求从未如此强烈。

今天,我们很高兴推出二进制量化,这项新功能可将向量大小减少高达 96%,同时将搜索延迟减少高达 40%。

参考链接:Azure AI申请试用

 

什么是二进制量化?

二进制量化 (BQ) 是一种通过将每个维度表示为单个位来压缩高维向量的技术。此方法可大幅减少向量索引的内存占用,并以降低召回率为代价来加速向量比较操作。召回率的损失可以通过两种称为过采样和重新排序的技术来弥补,这为您提供了选择在应用程序中优先考虑哪些因素的工具:召回率、速度或成本。

 

为什么我应该使用二进制量化?

二进制量化最适用于想要以低成本存储大量向量的客户。 Azure AI Search 将向量索引保存在内存中,以提供最佳的搜索性能。 二进制量化 (BQ) 允许减小内存中向量索引的大小,从而减少适合数据所需的Azure AI Search分区数量,从而降低成本。

 

二进制量化通过将 32 位浮点数转换为 1 位值来减少内存中向量索引的大小,最多可将向量索引大小减少 28 倍(由于索引数据结构引入的开销,略低于理论上的 32 倍)。下表显示了二进制量化对向量索引大小和存储使用的影响。

 

表 1.1:向量索引存储基准

压缩配置文档数向量索引大小 (GB)总存储大小 (GB)% 矢量索引节省存储节省百分比
未压缩1百万5.7724.77
新加坡1百万1.4820.4874%17%
苯并噻嗪1百万0.23519.2396%22%

表 1.1 比较了三种不同向量压缩配置的存储指标:未压缩、标量量化 (SQ) 和二进制量化 (BQ)。数据显示二进制量化显著提高了存储和性能,向量索引大小节省高达 96%,总体存储节省高达 22%。MTEB/dbpedia 采用默认向量搜索设置和 OpenAI text-embeddings-ada-002 @1536 维度。

 

提高性能 

二进制量化 (BQ) 可提高性能,与未压缩索引相比,查询延迟可减少 10-40%。改进效果将根据过采样率、数据集大小、向量维数和服务配置而有所不同。BQ 速度快有几个原因,例如汉明距离比余弦相似度计算速度更快,而打包的位向量更小,从而提高了局部性。这使其成为速度至关重要的场合的绝佳选择,并且允许应用适度的过采样来平衡速度和相关性。

 

品质保持

使用二进制量化时,存储使用量的减少和搜索性能的提高是以召回率为代价的。但是,可以使用过采样和重新排序等技术有效地管理这种权衡。过采样会检索出更大的潜在文档集,以抵消量化造成的分辨率损失。重新排序将使用全分辨率向量重新计算相似度得分。下表显示了 OpenAI 和Cohere嵌入的MTEB 数据集子集 ,其中二进制量化均值为 NDCG@10  ,有无重新排序/过采样。

 

表 1.2:二进制量化对 MTEB 子集平均 NDCG@10 的影响

模型

无重新排序 (Δ / %)

重新排序 2x 过采样 (Δ / %)

Cohere Embed V3(1024天)

-4.883(-9.5%)

-0.393(-0.76%)

OpenAI 文本嵌入-3-小 (1536d)

-2.312(-4.55%)

+0.069(+0.14%)

OpenAI 文本嵌入-3-large (3072d)

-1.024(-1.86%)

+0.006(+0.01%)

表 1.2 比较了来自 MTEB 数据集子集的不同嵌入模型在使用未压缩索引的二进制量化时平均 NDCG@10 的相对点差异。

 

关键要点:   

  • 与无重新排序相比,BQ+重新排序可实现更高的检索质量
  • 在维度较低的模型中,重新排序的影响更为明显,而对于维度较高的模型,其影响较小,有时可以忽略不计
  • 强烈考虑使用全精度向量进行重新排序,以尽量减少甚至消除量化造成的召回损失

 

何时使用二进制量化

对于具有高维向量和大型数据集的应用程序,建议使用二进制量化,因为存储效率和快速搜索性能至关重要。它对于尺寸大于 1024 的嵌入特别有效。但是,对于较小的尺寸,我们建议测试 BQ 的质量或考虑使用 SQ 作为替代方案。此外,当嵌入以零为中心时,BQ 的表现非常出色,就像 OpenAI 和 Cohere 等流行的嵌入模型中一样。

 

BQ + 重新排序/过采样的工作原理是搜索内存中的压缩向量索引并使用存储在磁盘上的全精度向量进行重新排序,从而让您在保持强大的搜索质量的同时大幅降低成本。这种方法通过利用内存和 SSD 来实现在内存受限的设置下高效运行的目标,从而为大型数据集提供高性能和可扩展性。

 

BQ 是我们过去几个月来在性价比方面做出的改进,可节省存储空间并提高性能。通过采用此功能,组织可以实现更快的搜索结果和更低的运营成本,最终带来更好的结果和用户体验。

 

更多功能现已全面开放

我们很高兴地告诉大家,Azure AI Search 现已正式推出多项向量搜索增强功能。这些更新让用户可以更好地控制 RAG 解决方案中的检索器,并优化 LLM 性能。以下是主要亮点:

  • Azure AI Search 的 Azure OpenAI集成矢量化现已正式发布!
  • 支持二进制向量类型: Azure AI Search 支持包括二进制向量在内的窄向量类型。此功能可以以较低的成本存储和处理更大的向量数据集,同时保持快速的搜索功能。
  • 向量加权:此功能允许用户在混合搜索场景中为向量查询分配相对重要性,而不是术语查询。它允许用户优先考虑向量相似性而不是关键字相似性,从而更好地控制最终结果集。
  • 文档增强:使用针对矢量和混合搜索查询量身定制的评分配置文件增强您的搜索结果。无论您优先考虑新鲜度、地理位置还是特定关键字,我们的新功能都可以进行有针对性的文档增强,确保为您提供更相关的结果。

 

Azure AI Search 入门 

要开始使用二进制量化,请访问我们的官方文档: 减小矢量大小 - Azure AI 搜索 | Microsoft Learn

  • 了解有关Azure AI Search和所有最新功能的更多信息。     
  • 开始在Azure 门户、Azure CLI、管理 REST API、ARM 模板或Bicep 文件中创建搜索服务。       
  • 了解 Azure AI Search 中的检索增强生成。 
  • 探索我们的Python、  .NET、  Java和 JavaScript预览客户端库 ,提供多种集成方法来满足不同的用户需求。  
  • 探索如何使用Azure AI Studio创建端到端 RAG 应用程序 。 

http://www.ppmy.cn/news/1521445.html

相关文章

模板:测试计划文档

测试计划文档是软件测试过程中的一个重要组成部分,它详细描述了测试的范围、目标、方法、资源、时间表以及预期的测试结果等关键信息。一个完善的测试计划文档有助于确保测试活动的有序进行,提高测试效率和质量。以下是一个测试计划文档的基本框架和内容…

IMU助力JAXA空间站机器人

近日,日本宇宙航空研究开发机构(JAXA)宣布,在国际空间站(ISS)实验舱“希望号”(Kibo)上部署的一款移动摄像机器人将采用Epson M-G370系列惯性测量单元(IMU)。…

OpenCV结构分析与形状描述符(7)计算轮廓的面积的函数contourArea()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 计算轮廓的面积。 该函数计算轮廓的面积。与 moments 类似,面积是使用格林公式计算的。因此,返回的面积与你使用 drawCo…

PWR电源控制(低功耗模式)

1 PWR简介 1 程序后面是空循环,即使不用也会耗电,所以有了低功耗(例如遥控器) 2 也要保留唤醒模式,如串口接收数据中断唤醒,外部中断唤醒,RTC闹钟唤醒,在需要工作是,ST…

【机器学习】决策树与随机森林:模型对比与应用案例分析

文章目录 一.引言 在现代数据科学的世界中,决策树和随机森林是两个非常重要且广泛使用的机器学习算法。它们不仅因其高效性和强大的表现力而受到青睐,而且在解决实际问题时也表现出了令人印象深刻的能力。本篇文章将深入探讨这两个算法,帮助读…

前端登录鉴权——以若依Ruoyi前后端分离项目为例解读

权限模型 Ruoyi框架学习——权限管理_若依框架权限-CSDN博客 用户-角色-菜单(User-Role-Menu)模型是一种常用于权限管理的设计模式,用于实现系统中的用户权限控制。该模型主要包含以下几个要素: 用户(User)…

【Python】BeautifulSoup:HTML解析

BeautifulSoup 是 Python 中用于解析和处理 HTML 或 XML 文档的强大库。它提供了简洁的接口,能高效处理复杂的网页结构,非常适合网页爬虫和数据提取任务。本文将详细介绍如何使用 BeautifulSoup 进行 HTML 文档的解析与操作。 BeautifulSoup 对象 Beaut…

Go 语言知识点总结

在 Go 语言中,... 是用于定义可变参数(variadic parameters)的符号。 在 func sum(nums ...int) 中,nums ...int 表示函数 sum 可以接受任意数量的 int 类型的参数,传入的参数将被打包成一个切片 nums,将 …

硬件工程师笔试面试知识器件篇——电感

目录​​​​​​​ 3、电感 3.1、基础 电感原理图 电感实物图 3.1.1、定义与单位 1)定义: 2) 单位: 3.1.2、物理原理 1)法拉第电磁感应定律: 2)楞次定律: 3.1.3、电感器的构造 3.1.4、类型 3.1.5、应用 3.1.6、特性 3.1.7、设计考虑 3.2、相关问题 3.…

基于FCM模糊聚类算法的图像分割matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 FCM算法原理 4.2 图像分割中的应用 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 matlab2022a 3.部分核心程序 (完整版代码包…

【嵌入式学习笔记】---- 通信基础

1 数据传输方式 按照数据传输的方式,通信可以分为串行通信和并行通信两大类1.1 串行通信 少量数据信号线(8根以下),数据分成一位一位的逐个依次传输 1.2 并行通信 多根数据信号线(8根以上)&#xff0c…

【Kubernetes知识点问答题】健康检查

目录 1. Kubernetes 对集群 Pod 和容器健康状态如何进行监控和检测的。 2. 解释 LivenessProbes 探针的作用及其适用场景。 3. 解释 ReadinessProbe 探针的作用及其适用场景。 4. 解释 StartupProbe 探针的作用及其适用场景。 5. 说明 K8s 中 Pod 级别的 Graceful Shutdown…

Rust 赋能前端:PDF 分页/关键词标注/转图片/抽取文本/抽取图片/翻转...

❝ 我从不幻想成功。我只会为了成功努力实践 大家好,我是柒八九。一个专注于前端开发技术/Rust及AI应用知识分享的Coder ❝ 此篇文章所涉及到的技术有 WebAssembly Mupdf Pdf操作( 分页展示/文本抽离/文本标注/获取超链接/Pdf转图片/翻转/截取) 因为,行文…

Redis实战宝典:开发规范与最佳实践

目录标题 Key命名设计:可读性、可管理性、简介性Value设计:拒绝大key控制Key的生命周期:设定过期时间时间复杂度为O(n)的命令需要注意N的数量禁用命令:KEYS、FLUSHDB、FLUSHALL等不推荐使用事务删除大key设置合理的内存淘汰策略使…

2024国赛数学建模A题思路模型代码

2024国赛数学建模思路资料,思路获取见文末名片 数学建模感想 纪念逝去的大学数学建模:两次校赛,两次国赛,两次美赛,一次电工杯。从大一下学期组队到现在,大三下学期,时间飞逝,我的…

深入理解红黑树:在C++中实现插入、删除和查找操作

深入理解红黑树:在C中实现插入、删除和查找操作 红黑树是一种自平衡二叉搜索树,广泛应用于各种算法和系统中。它通过颜色属性和旋转操作来保持树的平衡,从而保证插入、删除和查找操作的时间复杂度为O(log n)。本文将详细介绍如何在C中实现一…

学生管理系统升级(登录注册 + 关联学生管理系统)

新增需求 这是在昨天的基础初代版本上面新增一个登录注册忘记密码的功能 需求分析 注册 登录 忘记密码 user类代码呈现 package StudentSystem;public class User {private String username;private String password;private String personID;private String phoneNumber;pu…

微信小程序知识点(二)

1.下拉刷新事件 如果页面需要下拉刷新功能,则在页面对应的json配置文件中,将enablePullDownRefresh配置设置为true,如下 {"usingComponents": {},"enablePullDownRefresh": true } 2.上拉触底事件 在很多时候&#x…

【摸鱼笔记】python 提取和采集 finereport 未绑定目录的报表模板

背景 在企业应用过程中,报表一般会按照数据分析的主题、项目将多个报表放在一处,一些图表类报表会有通过超链接等方式,跳转到对应的明细报表中。 并且在正式的使用中,这些报表不会绑定到目录。 在梳理数据分析项目使用情况时这…

ubuntu22.04搭建elasticsearch+kibana环境

下载镜像ElasticSearch 命令:docker pull elasticsearch:7.6.2 部署ElasticSearch 命令: docker run -d --name hc-es -p 9200:9200 -p 9300:9300 -v "/home/hc/es/data":/usr/share/elasticsearch/data -e "discovery.typesingle-n…