96-向量检索算法ANN-HNSW-IVF-PQ乘积量化-精度速度对比
文章目录【96.PythonAI】向量检索算法ANNHNSW、IVF、PQ乘积量化千万级数据毫秒返回导入语1 ~ 先立标杆暴力检索的成本1.1 ANN的统一思路2 ~ IVF先分桶再搜桶2.1 原理和查字典一个思路2.2 两个参数的权衡2.3 短板3 ~ HNSW小世界里的图导航3.1 原理跳表思想搬进高维空间3.2 关键参数3.3 为什么它是主流4 ~ PQ把向量压扁内存直降97%4.1 原理分段代号替换4.2 代价与定位5 ~ 三算法对比与选型5.1 实测画像5.2 选型决策树思考 总结结尾【96.PythonAI】向量检索算法ANNHNSW、IVF、PQ乘积量化千万级数据毫秒返回文章简介本文系统讲解近似最近邻搜索ANN三大主流算法的原理与选型回答千万级向量库如何实现毫秒级检索这一工程核心问题。文章从暴力检索的成本算账切入——1000万条768维向量逐一比对的计算量为何不可接受引出ANN用1%精度换100倍速度的核心权衡逐一拆解三大算法IVF倒排索引先分桶再搜桶nprobe参数控制搜多少个桶的精度/速度旋钮、HNSW分层图导航借鉴跳表思想高层快粗跳、底层细搜索ef和M参数的含义与调优、PQ乘积量化把768维向量切成段、每段用8位码本压缩内存直降97%的数学原理给出三算法在召回率、QPS、内存占用、构建速度上的实测对比表以及数据量×召回要求×内存预算的三维选型决策树。配以Mermaid流程图展示ANN检索的完整过程适合需要在Milvus/Chroma等向量库中做索引选型和参数调优的开发者阅读参考。 个人主页源码骑士❄专栏传送门《Android开发基础》《python基础课程》⭐️热衷从源码视角拆解技术底层原理将复杂架构讲得通俗易懂 源码骑士的简介5年Android Framework系统开发经验曾主导多项系统级性能优化专项技术栈覆盖Android系统全链路Binder/Handler/AMS/WMS/启动流程及Java后端全家桶Spring MyBatis Redis Oracle累计产出原创技术文章100篇文章以流程图为特色被读者评价为看一篇胜过啃一周源码导入语上一篇我们搞懂了Embedding语义变成了向量相似度就是算余弦。那么一个直白的方案摆在面前用户查询来了把查询向量和库里每个向量都算一遍余弦取Top-K——完事。算笔账1000万条向量、每条768维一次查询就是1000万次向量运算单次查询要跑几秒到十几秒。Demo阶段数据几千条无所谓上了生产这个延迟就是灾难。ANNApproximate Nearest Neighbor近似最近邻就是为了干掉这个逐条比对而生的。它的核心思想用一句话说不追求100%找到最近的那几个只要找到几乎肯定是最近的那几个——用1%的精度损失换100倍的速度提升。这篇文章拆解三大主流ANN算法IVF、HNSW、PQ讲清原理、参数和选型。1 ~ 先立标杆暴力检索的成本暴力检索Flat的成本账 数据量1000万条 ×768维 ×4字节(float32)≈28.7GB 内存 计算量每次查询1000万次余弦相似度计算 延迟 秒级且随数据量线性增长 并发 每次查询全表扫QPS稍微一高CPU就打满暴力法有个正式名字叫Flat索引——它是唯一保证100%召回的方案也是衡量一切ANN算法的精度基准。记住这个数字ANN算法的召回率指的就是它的结果和暴力法结果的重合比例。召回98%意思是ANN找到的Top-10里平均有9.8个和暴力法一致。1.1 ANN的统一思路三个算法招式不同心法完全一致别把查询和全库比对先用某种结构把肯定不相关的绝大多数向量跳过只在候选子集里精算。区别只在于——用什么结构来跳。IVFHNSWPQ查询向量进来用索引结构快速圈定候选集找最近的几个桶只搜桶内向量从顶层图入口逐层导航到最近邻压缩码快速估算近似距离筛选候选集内精确计算返回Top-K牺牲约1%~5%召回换来10~100倍提速2 ~ IVF先分桶再搜桶2.1 原理和查字典一个思路查字典不会从第一页翻到最后一页——先按拼音找到部首区再在区里找字。IVFInverted File倒排文件干的就是这件事建索引阶段1. 用K-Means把1000万向量聚成nlist1024个桶2. 每个向量存进离它最近的那个桶 查询阶段1. 查询向量先和1024个桶的中心比 → 找最近的nprobe10个桶2. 只在这10个桶里约10万向量精算相似度3. 计算量从1000万次 →10万次直降99%2.2 两个参数的权衡参数作用调大调小nlist建库时分多少个桶每桶更细、查询更快建索引慢、易分碎桶大、查询慢nprobe查询时搜多少个桶召回高、速度慢召回低、速度快nprobe是线上最常用的旋钮召回不够就调大延迟敏感就调小不用重建索引、改完立即生效。经验起点nlist ≈ 4×√数据量nprobe从nlist的1%开始试。2.3 短板分桶边界是硬伤——如果最近邻恰好落在相邻的桶里而那个桶又没被nprobe选中就永远找不回来了。数据分布越不均匀漏检越严重。3 ~ HNSW小世界里的图导航3.1 原理跳表思想搬进高维空间HNSWHierarchical Navigable Small World是当前召回率之王思想却很好懂——想象你在陌生城市找人分层导航的过程 第2层稀疏层只有机场几步跳到目标城市 ← 粗定位 第1层中等密度有高铁站跳到目标城区 ← 中定位 第0层全量层所有街道都在精确走到目的地 ← 细定位建索引时所有向量在底层连成一张近邻图每个点连着最相近的M个邻居再按概率抽出部分点建上层稀疏图。查询时从顶层随机入口出发每一层都执行同一个贪心策略跳到比当前更近的邻居直到跳不动然后下到更密的一层。3.2 关键参数参数阶段含义经验值M建库每个点连几个邻居16~64越大图越密、召回越高、内存越大ef_construction建库建图时的搜索宽度200左右影响建索引质量ef查询时查询查询时的搜索宽度动态旋钮≥K越大召回越高越慢ef对标IVF的nprobe——都是搜多宽的线上旋钮调大召回涨、延迟涨。3.3 为什么它是主流HNSW的江湖地位 召回率同速度下碾压IVF图导航比分桶更能追踪真实的近邻结构 延迟 微秒~毫秒级千万级数据轻松hold住 短板 内存大户——图结构本身要吃掉原始向量30%~50%的额外内存 数据动态删除支持弱图里删点会留下断桥Milvus、Qdrant、Weaviate、Chroma——主流向量库的默认或推荐索引全是HNSW不是没道理的。4 ~ PQ把向量压扁内存直降97%4.1 原理分段代号替换HNSW快但吃内存PQProduct Quantization乘积量化从另一个维度解题——不优化怎么找优化怎么存压缩过程以768维 →96段为例1. 把768维向量切成96段每段8维2. 对全库的第1段做聚类得到256个代表码本 同理每一段都有自己的256个代表3. 存储时每段不存8个浮点数只存它最接近的代表编号 → 编号范围0~255一个字节搞定 压缩比768×4字节 →96×1字节3072B → 96B省97%内存查询时用查表法快速估算距离提前算好查询向量各段到256个代表的距离表不再需要解压缩全部向量。4.2 代价与定位压缩是有损的——代表不等于原向量距离估算有误差召回率明显低于HNSW。所以PQ几乎不单独使用标准姿势是和IVF或HNSW组合如IVF_PQ、HNSW_PQ粗筛用结构、精算用压缩距离内存和速度兼得。亿级以上的数据规模PQ基本是必选项。5 ~ 三算法对比与选型5.1 实测画像维度IVFHNSWIVF_PQ / HNSW_PQ召回率中85%~95%高95%~99%中低80%~95%查询速度快最快快内存占用中高图结构30~50%极低省97%构建速度快慢建图贵中线上调参旋钮nprobeefnprobe/ef适用规模百万~千万百万~千万内存够千万~亿级5.2 选型决策树数据量100万 ├─ 是 → 别纠结Flat暴力法或默认HNSW召回拉满 └─ 否 → 内存预算充足 ├─ 是 → HNSWM32,ef128起步召回优先 └─ 否 → 数据量5000万 ├─ 是 → IVF_PQ 或 HNSW_PQ内存优先 └─ 否 → IVFnlist4√N, nprobe逐步调最后一句实在话参数没有银弹值只有适合你数据分布的值。上线前务必用自己的真实数据做召回率压测——拿1000个查询同时跑暴力法和ANN看Top-K重合度这才是你的召回率不是论文里的。思考 总结ANN的本质是权衡用1%5%的召回率损失换10100倍的速度——暴力法Flat是衡量一切ANN算法的召回基准。IVF像查字典先分桶nlist再搜桶nprobenprobe是线上最顺手的精度/速度旋钮分桶边界漏检是天生短板。HNSW是召回率之王分层图导航顶层粗跳底层细搜ef对标nprobe代价是图结构多吃30%~50%内存、弱于动态删除。PQ解决内存问题向量分段、每段存一字节代号省97%内存有损压缩召回偏低所以总是和IVF/HNSW组合出场。选型三问数据量多大内存预算多少召回要求多高——没有银弹参数用自己数据实测的召回率才算数。算法原理就位是时候落地了——下一篇进入向量数据库的实战环节Milvus从零到生产Standalone和Cluster怎么选、集合怎么设计、索引参数怎么落到配置里。结尾各位小伙伴本文的内容到这里就全部结束了源码骑士在这里再次感谢您的阅读源码骑士 — Android Framework 全栈开发关注跟博主一起从源码视角深耕底层原理见证每一次成长❤️点赞让优质内容被更多人看见让知识传递更有力量⭐收藏把核心知识点存好在需要时随时查、随时用评论分享你的经验或疑问评论区一起交流避坑一键四连不要忘记给博主一键四连哦️寄语技术之路难免有困惑但同行的人会让前进更有方向结语IVF教会我们分而治之HNSW教会我们站在高处看方向PQ教会我们舍弃冗余换空间——三种算法的思想早已超出向量检索本身值得放进每个工程师的思维工具箱。不要忘记给博主一键四连哦

相关新闻

基于PLC控制的冷却水循环系统设计与实现|毕设答辩|PLC项目|毕设项目|自动化项目

基于PLC控制的冷却水循环系统设计与实现|毕设答辩|PLC项目|毕设项目|自动化项目

题目:基于PLC控制的冷却水循环系统设计与实现 一、项目介绍 摘 要 工业生产中,冷却水循环系统的稳定高效运行对设备安全和生产效率有着重要影响,传统控制系统存在操作繁琐、能耗较高、稳定性不足等问题,难以满足现代化工业的控制需…

2026/8/8 23:28:31 阅读更多 →
从Ambari迁移到Apache BigTop:基于Puppet的Hadoop集群部署与运维实战

从Ambari迁移到Apache BigTop:基于Puppet的Hadoop集群部署与运维实战

1. 项目概述:为什么我们需要寻找Ambari的替代方案最近在社区里,和不少负责大数据平台运维的老哥聊天,大家普遍都在吐槽一个事儿:Ambari这玩意儿,用起来是越来越“心累”了。我自己的团队也深有同感。Ambari曾经是Hadoo…

2026/8/8 23:28:31 阅读更多 →
Java内部类与外部类引用关系解析

Java内部类与外部类引用关系解析

1. 内部类与外部类引用的本质关系在Java开发中,内部类持有外部类引用这个现象看似简单,实则暗藏玄机。我第一次真正理解这个机制,是在排查一个内存泄漏问题时——当时应用运行几小时后就会OOM崩溃,最终发现是内部类实例被长生命周…

2026/8/8 23:28:31 阅读更多 →

最新新闻

GPU算力跑不满?揭秘访存墙优化技巧

GPU算力跑不满?揭秘访存墙优化技巧

一、背景与问题描述 在深度学习与高性能计算领域,当我们惊叹于 GPU 动辄数十 TFLOPS 的算力时,往往忽略了一个残酷的现实——大多数算子根本跑不满算力。以 A100 为例,其 FP16 算力高达 312 TFLOPS,但实际训练中许多算子的利用率不…

2026/8/9 1:20:22 阅读更多 →
AI Agent会写代码后,为什么测试反而更需要Harness?

AI Agent会写代码后,为什么测试反而更需要Harness?

当AI开始写代码,测试的战场从“测代码”变成了“测AI”大家好,我是某互联网公司质量基础设施团队的负责人。最近半年,我身边越来越多的同行在问同一个问题:“AI Agent都能自己写代码了,测试是不是快被淘汰了&#xff1…

2026/8/9 1:20:22 阅读更多 →
AI论文辅助工具:提升学术写作效率的九大平台评测

AI论文辅助工具:提升学术写作效率的九大平台评测

1. 为什么需要AI论文辅助工具? 读MBA的朋友们应该都深有体会,写论文简直就是一场噩梦。特别是开题报告和文献综述这两个环节,往往要耗费我们80%的精力。我读MBA那会儿,光是开题报告就改了7版,导师每次都说"文献支…

2026/8/9 1:20:22 阅读更多 →
Redis核心数据结构与高并发场景实战指南

Redis核心数据结构与高并发场景实战指南

1. Redis核心定位与应用场景Redis作为当下最流行的内存数据库之一,其价值远不止于简单的缓存工具。我在实际生产环境中使用Redis已有七年时间,见证了这个系统从3.0到7.0的演进过程。本质上,Redis通过将数据存储在内存中实现亚毫秒级响应&…

2026/8/9 1:20:22 阅读更多 →
微信小程序自习室预约系统开发实战

微信小程序自习室预约系统开发实战

1. 项目背景与需求分析自习室预约小程序是近年来随着共享经济兴起而快速发展的实用工具。作为一名长期关注教育科技领域的产品开发者,我发现传统自习室管理存在几个痛点:人工登记效率低下、座位使用情况不透明、预约冲突频发。特别是在考试季或周末高峰期…

2026/8/9 1:20:21 阅读更多 →
语言必须离散吗?从何恺明 ELF 到南大 AURORA-LM,连续扩散语言模型的底层革命

语言必须离散吗?从何恺明 ELF 到南大 AURORA-LM,连续扩散语言模型的底层革命

语言必须离散吗?从何恺明 ELF 到南大 AURORA-LM,连续扩散语言模型的底层革命2026 年 8 月 8 日,南京大学模式识别实验室联合南洋理工、帝国理工发布 AURORA-LM:一个完全在**昇腾 NPU** 上训练、扩展到约 10 亿参数的连续扩散语言模…

2026/8/9 1:19:21 阅读更多 →

日新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/9 0:01:47 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/9 0:01:47 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/9 0:03:48 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/9 0:01:47 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/9 0:01:47 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/9 0:03:48 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/8 17:02:44 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/9 0:45:04 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/8 17:02:44 阅读更多 →