小语料为什么不用向量检索?delivery-harness词法搜索背后的「傻瓜指数」与Milvus取舍(ADR-0003)
小语料为什么不用向量检索delivery-harness词法搜索背后的「傻瓜指数」与Milvus取舍ADR-0003【免费下载链接】delivery-harnessAI harness reference implementation for on-demand delivery workflows项目地址: https://gitcode.com/gh_mirrors/de/delivery-harness在 AI 应用里做知识检索很多人第一反应就是上 RAG嵌入embedding 向量数据库比如 Milvus。但delivery-harness——一个面向即时配送的 AI 参考实现——在 ADR-0003 里做了一个反直觉的决定语料库只有十几条规则时不引入向量检索而是用简单的词法搜索lexical search。这不是偷懒而是用「傻瓜指数」Idiot Index算出来的理性取舍。本文带你读懂这个决策背后的完整推理。一个没人调用的假向量检索是怎么进来的 事情的起点很有代表性。仓库最初提交里带了一个VectorSearchService对内存里的 map 跑一个余弦相似度循环代码注释写着「生产环境替换为 Milvus 客户端」路线图上还列着「embedding 生成 向量检索」。但没有任何代码调用它。真正在跑的检索逻辑是String.contains配着三个写死的固定分数规则 0.8、文档 0.6、案例 0.5。这个宣称的设计与实际运行的代码之间的落差自然会诱导出下一步把活干完嘛——生成嵌入、搭起向量库。ADR-0003 开宗明义地指出在这个体量下这一步是错的而且值得写下来免得将来有人默认就这么做了。配套的清理动作见 docs/adr/0001-delete-unreachable-code-before-adding-features.md那个从未被执行的VectorSearchService被直接删除而不是留作占位——因为它本来就不是真正向量库的写法留着也省不下未来的工作量。「傻瓜指数」一个成本收益公式专治过度设计 ADR 的结尾用了一个很形象的词idiot index傻瓜指数。它的思想很简单傻瓜指数 成本 / 收益分母你买到的东西是零分子付出的代价是实打实的——这就是无界的傻瓜指数。翻译成人话花真金白银第二模型依赖、冷启动流程、索引同步成本却换不来任何可度量的收益这笔账越算越亏。ADR 原文的判词是在当前语料规模下引入嵌入管线的傻瓜指数是无界的——成本是真实的而它能买到的分子是零。为什么小语料不用向量检索四个硬核理由 ✅先看前提这个语料库是一份政策集。项目启动时播种了 11 条规则和 8 个已解决案例数据文件 harness-core/src/main/resources/seed/rules.json 和 harness-core/src/main/resources/seed/cases.json。真实的运营方其赔付与归因政策也不会大出几个数量级——它必须是一份人能读完、能争论、能签字确认的文档规模上限就在几百条左右。在这个体量下四条理由逐条成立#理由说明1整个规则集塞得进 prompt检索在这里是优化项不是使能项2暴力扫描就是正确答案对几百条短字符串做全量打分只要微秒级向量索引存在的意义正是避免线性扫描——而这里线性扫描恰恰是最合适的数据结构3嵌入引入一整串新依赖第二个模型、冷启动步骤、需要与事实源保持同步的索引以及一类新故障政策文本改了、向量却没跟上4政策查找更像精确匹配COMP-001、超时30分钟以上是运营真实会用到的词词法匹配直接命中而最近邻搜索反而可能自信地返回一个错误的邻居词法搜索长什么样分词 词元重叠打分 删掉向量方案后RetrievalService 的实现朴素到近乎透明分词把查询按空格和标点逗号、顿号、分号等切成小写词元丢掉单字符tokenize打分一条记录的分数 它包含的查询词元占比overlap破平按来源类型加一点小权重rule 1.00 case 0.95 document 0.90只用于打破平局绝不让未命中的条目超过命中的条目。对比旧实现这一步是实质性修复详见 RetrievalScoringTest旧逻辑把整串查询当子串去匹配——任何包含多个词的查询包括工作流生成的所有查询都会失败旧逻辑里所有规则都是 0.8 分按分排序只复现出先规则、后文档、再案例的来源顺序分数不携带任何信息新逻辑下多词查询能命中分数真实反映匹配程度且不依赖任何模型即可测试——而它确实被测了。对外只有一个入口POST /api/v1/knowledge/searchKnowledgeController工作流分析订单时自动调用把命中的规则和案例写进 prompt。诚实的代价放弃的是什么 ADR 没有报喜不报忧明确列了两条负面后果没有同义/改写匹配。查出餐慢不会命中只写了备餐时间过长的规则。缓解手段是每条规则上的tags字段——由运营方亲手枚举重要说法。在百条级规模下这比 embedding 更便宜、更可审计中文不做分词只按空格和标点切分召回依赖查询与规则共享短语。在查询来自固定词表的机器生成场景下可接受若将来运营方开始自由文本搜索需要重新评估。这两条被明确写进了 README 的已知限制——诚实的取舍声明比含糊的高级检索更有价值。什么时候该重新考虑 MilvusADR 最有价值的部分之一是给出了可执行的再评估触发条件——而且要求带上数字再来语料库超过约1,000 条运营方自由文本搜索成为真实用例且有实测的词法匹配漏召回查询有度量证据表明检索召回不足导致了归因错误——而不是假设。三者都不成立之前嵌入管线在这里就只是一个成本真实、收益为零的方案。Roadmap 里甚至专门写了一条embedding 与向量检索在当前语料规模下刻意不列入。小结架构决策的示范样本 ADR-0003docs/adr/0003-no-vector-retrieval-at-this-corpus-size.md是一份很好的决策不做什么的范本用数字说话十几条规则 vs 上千条的再评估线用公式防杠傻瓜指数把成本 vs 收益变成可计算的东西闭环设计负面后果有缓解措施tags未来有条件有数字1,000 条、实测召回缺口。对新手来说它传递的工程直觉是技术选型没有先进即正确。几百条政策文档分词 包含打分就是最优解把 Milvus 留给你真正需要它的那一天。想亲手验证这套检索行为最快的方式是跑./mvnw clean verify看 RetrievalScoringTest 里的断言或者调用知识搜索接口观察分数如何随词元重叠变化。【免费下载链接】delivery-harnessAI harness reference implementation for on-demand delivery workflows项目地址: https://gitcode.com/gh_mirrors/de/delivery-harness创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Three.js到GLSL着色器:awesome-opus5-5-videos的55个3D场景作品与选型指南

Three.js到GLSL着色器:awesome-opus5-5-videos的55个3D场景作品与选型指南

Three.js到GLSL着色器:awesome-opus5-5-videos的55个3D场景作品与选型指南 【免费下载链接】awesome-opus5-5-videos A growing collection of viral videos made with Claude Opus 5.5 and the prompts behind them. Watch each original next to a live remake on…

2026/10/9 18:24:17 阅读更多 →
HBase 2.0.2发行版安装配置实战:版本识别、参数调优与避坑

HBase 2.0.2发行版安装配置实战:版本识别、参数调优与避坑

简介:这款 HBase 离线组件包专为 Ambari 2.7.5 编译过程准备,面向需要搭建 HDP 3.1.4.0 集群或对 HBase 进行二次开发的大数据工程师。压缩包内共包含 412 个文件,整体大小约 211.57 兆字节,其中以 jar 类文件为主,数量…

2026/10/10 20:47:53 阅读更多 →
2026企业AI办公工具选型指南:方法论与平台全景盘点

2026企业AI办公工具选型指南:方法论与平台全景盘点

企业在采购AI办公工具的过程中,很容易陷入功能清单比对的误区。不少数字化负责人会把产品官网罗列的能力项逐一打勾,或是单纯参考行业热门榜单、同行采购案例做决策,把功能数量、品牌知名度当成核心判断标尺。这类选型方式往往会出现工具上线…

2026/10/10 19:41:43 阅读更多 →

最新新闻

纯Java手写TopoJSON生成器:从GeoJSON到拓扑压缩的完整实践

纯Java手写TopoJSON生成器:从GeoJSON到拓扑压缩的完整实践

做 WebGIS 的同学这两年应该对 TopoJSON 不陌生,尤其当你需要把全省县级行政区划、全国路网这类动不动几十 MB 的 GeoJSON 塞进浏览器时,TopoJSON 几乎成了绕不开的选项。它的核心价值只有一句话:在拓扑关系上做文章,让共享边界只…

2026/10/10 20:47:31 阅读更多 →
Spring Boot+MyBatis Plus游戏分享网站毕设全流程实战解析

Spring Boot+MyBatis Plus游戏分享网站毕设全流程实战解析

每年的毕业设计季,总能看到一批同学被“选题”折磨得焦头烂额。游戏分享网站这种项目,听起来难度适中、事务清晰,特别适合拿来当计算机专业的毕设项目,但实际动起手来,从技术栈选型到功能模块拆解,再到部署…

2026/10/10 20:47:31 阅读更多 →
给 AI 生成 UI 上“护栏“:json-render 白名单配置从零到生产

给 AI 生成 UI 上“护栏“:json-render 白名单配置从零到生产

给 AI 生成 UI 上"护栏":json-render 白名单配置从零到生产 【免费下载链接】json-render The Generative UI framework 项目地址: https://gitcode.com/GitHub_Trending/js/json-render 2026 年初,Vercel Labs 开源的 json-render 在短…

2026/10/10 20:47:31 阅读更多 →
用NAS把收藏夹文章变成专属播客:搭建指南

用NAS把收藏夹文章变成专属播客:搭建指南

我猜你八成也有这么个毛病:看到一篇好文章先收藏,想着“回头认真读”,结果这个“回头”就是永远。收藏夹里堆了几百篇深度长文,从AI技术、投资分析到历史考据,什么都有,就是没有时间去读。直到有天我在通勤…

2026/10/10 20:47:31 阅读更多 →
把“留痕“当一等公民:金融智能体的审计设计为什么比模型能力更烧钱

把“留痕“当一等公民:金融智能体的审计设计为什么比模型能力更烧钱

把"留痕"当一等公民:金融智能体的审计设计为什么比模型能力更烧钱 【免费下载链接】financial-services 可将 Claude 转变为金融服务专家,适用于投资银行、股票研究等领域。提供核心及专项插件,支持端到端工作流,集成多…

2026/10/10 20:47:31 阅读更多 →
基于Java的校园二手智能交易平台APP开发全攻略

基于Java的校园二手智能交易平台APP开发全攻略

1. 项目到底在做什么:需求与定位拆解每年毕业设计季,“校园二手交易平台”这类题目都是常青树,但今年我带着学生把“基于Java的校园二手智能交易平台APP”完整做成可运行系统时,发现很多人对这个题目的理解还停留在十年前&#xf…

2026/10/10 20:46:30 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

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

2026/10/10 11:14:25 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

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

2026/10/10 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

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

2026/10/10 11:14:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/10 5:23:50 阅读更多 →
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/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练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/10 10:38:42 阅读更多 →