08_为什么3563条向量我用暴力全量而不是ANN索引
为什么 3563 条向量我用暴力全量而不是 ANN 索引几乎每篇 RAG 教程的默认第一步都是上向量数据库、建 HNSW 索引。我把这件事当成了必须做的一步直到我停下来实测——然后决定不上索引。一、三种索引实测对比3563 条 × 1024 维同一批查询三种方案方案延迟召回率暴力全量0.24 ms100%IVFnprobe10.12 ms0.657Milvus Lite HNSW291 ms—结果很反直觉唯一比暴力快的是 IVF快了一半0.12ms但召回掉到 0.657丢了三分之一的正确答案号称最先进的 HNSW在 3563 这个规模上反而要 291 ms比暴力慢一千多倍——因为建索引、加载索引的开销在数据量不够大时远超少算几次内积省下的时间。索引在这个规模上是负优化。它没有让检索更快反而更慢、更不准。二、索引是规模工具不是质量工具关键认知就一句话ANN 索引解决的是规模大了算不过来不是检索质量不够好。我外推了一下规模曲线暴力全量约0.04 ms / 千条。数据量暴力耗时要不要上索引3563 条0.24 ms不上10 万条6.7 ms可上可不上100 万条67 ms该上了所以正确的决策顺序是先量自己的规模再决定上不上索引。我 3563 条暴力 0.24ms 远低于任何 LLM 调用的几百毫秒到几秒——检索根本不是瓶颈生成才是。在检索只占整个链路千分之一时间的时候去优化检索是典型的优化错了环节。别为了显得高级提前上索引那是负优化。三、比索引更值钱的是 small-to-big真正影响答得对不对的不是索引结构是分块结构。我用的是 small-to-big 父子块块大小用途子块≤ 1000 字进向量库负责找得准父块超大块原文检索命中后回查负责答得全为什么要拆开因为检索和生成对块的诉求是冲突的检索要小块——块越小命中的那一块噪声越少排名越准生成要大块——块太小模型读到的是一段被切断的话上下文不全。small-to-big 让两者各取所需检索用 137 个父块对应的 1426 个子块命中后把整个父块原文喂给模型。这比换任何索引结构对最终答案的影响都大。四、这一路的四个坑上索引这件事我没做成但踩的坑一个不少都记着IVF 的self._mat没赋值——__init__里写成了局部变量search里hasattr恒为假结果每次查询现场重建候选矩阵加速比算成 0.3x整张对比表作废。自采样查询不加噪声——拿块自己的向量当查询IVF 召回虚高到近 1.0。不加perturb()的扫描结果全是自欺。Milvus 注册表是进程级的——换 db 文件没用同一个进程里第二次建同名 collection 报 already exists索引同理。建 HNSW 的顺序有坑——create_collection自带默认索引直接create_index报已存在已加载的不能drop_index。正确顺序是load → release → drop → create → load。这些坑的共同点是每条都不是索引原理问题是真跑一遍才会暴露的工程细节。这也是为什么我坚持看文档不算产出跑通才算。小结结论数字 / 事实3563 × 1024 暴力检索0.24 ms召回 100%IVFnprobe10.12 ms但召回掉到 0.657Milvus HNSW291 ms比暴力慢千倍规模曲线0.04 ms/千条 → 100 万条才 67 ms什么时候上索引数据量大到算不过来才上不是质量不够上比索引更值钱small-to-big 父子块137 父 / 1426 子上一篇Embedding 三个后端怎么选。下一篇混合检索为什么用 RRF 而不是加权分数。

相关新闻

ASP.NET Core 定时任务怎么做?FreeScheduler 可视化调度实战

ASP.NET Core 定时任务怎么做?FreeScheduler 可视化调度实战

后台里总有一些"每天凌晨跑一次""每月 1 号清理数据"的需求。EasyAdminBlazor 2.3 的做法是:底层用 FreeScheduler 做调度与持久化,上层提供统一接口和可视化页面。 一、接入 builder.AddEasyAdminBlazor(new EasyAdminBlazorOptio…

2026/10/13 17:10:56 阅读更多 →
拉孚 AIoT 节能实践:以“物联基座 + 场景智能体“击穿存量空间的能源黑洞

拉孚 AIoT 节能实践:以“物联基座 + 场景智能体“击穿存量空间的能源黑洞

关键词:拉孚、DeepBasic Folar、AIoT、节能、暖通节能智能体、冷源机组节能、空间认知智能体、存量建筑节能、AI Agent、建筑智能化、双碳建筑运行能耗约占中国全社会能源消费的 20% 以上,其中暖通空调(HVAC)系统又占据建筑能耗的…

2026/10/12 9:42:47 阅读更多 →
华为S5700交换机VLAN配置全流程:从接口类型到VLAN间通信与避坑指南

华为S5700交换机VLAN配置全流程:从接口类型到VLAN间通信与避坑指南

简介:这份PDF资料面向网络运维初学者与中小型企业网络管理员,聚焦华为S5700三层交换机的VLAN划分与配置实践,帮助读者解决多网段逻辑隔离、交换机与路由器协同组网等常见问题。资源为单一PDF文档,压缩包约1.43MB,内容以…

2026/10/13 1:08:29 阅读更多 →

最新新闻

配电网韧性提升中的移动储能预布局与动态调度优化:IEEE33节点Matlab实现

配电网韧性提升中的移动储能预布局与动态调度优化:IEEE33节点Matlab实现

配电网韧性、移动储能预布局、动态调度,这三个词放在一起,基本就是一个典型的两阶段优化问题。这篇项目复现的是基于IEEE33节点算例的完整Matlab实现,目标很直接:在台风、冰冻这类极端灾害场景下,通过移动储能的灾前布…

2026/10/13 17:11:12 阅读更多 →
回焊炉曲线优化:牛顿冷却定律、参数辨识与约束优化实践

回焊炉曲线优化:牛顿冷却定律、参数辨识与约束优化实践

简介:2020年全国大学生数学建模竞赛A题论文,面向备战全国赛的学生、指导教师,也适合希望以实际赛题学习数学建模算法应用的读者。内容围绕集成电路板生产中的回焊炉温度曲线优化展开,完整呈现问题重述、问题分析、模型假设、符号说…

2026/10/13 17:11:12 阅读更多 →
litellm实战:统一大模型API接入,解决多模型切换与网关部署

litellm实战:统一大模型API接入,解决多模型切换与网关部署

我一直觉得,做AI应用开发最磨人的不是算法本身,而是“接模型”这件事。今天接OpenAI,明天换Claude,后天又加一个国产模型,每个服务的接口风格不一样,鉴权方式不一样,返回字段也不一样&#xff0…

2026/10/13 17:11:12 阅读更多 →
el-tag组件实战:从基础用法到高阶玩法,避开后台开发那些坑

el-tag组件实战:从基础用法到高阶玩法,避开后台开发那些坑

用了这么多年前端框架&#xff0c; <el-tag> 大概是我在管理后台项目里见到频率最高的组件之一。小到一条订单的状态标记&#xff0c;大到一套完整的标签管理系统&#xff0c;它都能参与其中。但多数人只把它当成一个带颜色的圆角块&#xff0c;真正遇到动态增删、样式…

2026/10/13 17:11:12 阅读更多 →
el-tag标签组件实践:状态映射、动态编辑与样式定制全攻略

el-tag标签组件实践:状态映射、动态编辑与样式定制全攻略

做过不少后台管理界面之后&#xff0c;你会发现很多所谓“小功能”反而最考验细节。比如一个简简单单的el-tag标签&#xff0c;看起来就是几个彩色圆角块&#xff0c;但用好了能让状态展示、筛选分类、动态编辑都变得顺手不少&#xff0c;用不好就会出现样式错乱、关闭后无法恢…

2026/10/13 17:11:12 阅读更多 →
金字塔原理:职场沟通结构化表达的四个原则与实战技巧

金字塔原理:职场沟通结构化表达的四个原则与实战技巧

废话不多说&#xff0c;这可能是你在职场沟通中最值得补的一课。我见过太多人&#xff0c;明明业务能力很强&#xff0c;可一开口就败下阵来&#xff1a;汇报讲了十分钟&#xff0c;领导眉头越皱越紧&#xff1b;邮件写了几百字&#xff0c;对方回复“所以你想表达什么”&#…

2026/10/13 17:10:09 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目&#xff0c;我最大的感受是&#xff0c;大部分坑不是出在技术前沿&#xff0c;而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节&#xff0c;最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了&#xff0c;很难不碰到舵机控制这道坎。做智能小车要转方向&#xff0c;做机械臂要抬关节&#xff0c;做云台要偏航俯仰&#xff0c;背后都是同一个东西在干活&#xff1a;舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”&#xff1f;——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台&#xff1f;或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜&#xff1f;又或者&#xff0c;在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介&#xff1a;基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码&#xff0c;面向计算机相关专业课程设计与期末大作业学生&#xff0c;以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程&#xff0c;…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程&#xff1a;键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化&#xff0c;十个新手有八个栽在"往输入框里填东西"这件事上&#xff1a;要么填不进去&#xff0c;要么填了一半&#xff0c;要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程&#xff1a;阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀&#xff1a;什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面&#xff0c;跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →