SH

Soloharness

概念 · 辨析 · Agent

← 返回概念辨析

Concept Contrast Fable

一类方法和一个具体公式

稀疏检索是一整类基于词频和文档统计的检索方法,BM25 是其中最常用的具体概率公式。用 BM25 替换稀疏检索这个词在技术选型里能导致漏掉 TF-IDF、布尔检索等其他稀疏方案,或在评估时把具体实现的限制当作整类方法的缺陷。

寓言

城南木匠行有个说法:榫接。但王记用的是燕尾榫

城南木匠行里流传一个祖传手艺,叫榫接。不管打桌子、做柜子还是修房梁,老师傅教徒弟都说:凡接木,必榫接。行外人听起来,榫接就是一个东西。但行里人都知道,榫接有十几类——燕尾榫、直角榫、穿带榫、斜角榫——各管各的场景。

王记木匠铺用的最多的是燕尾榫,拉板结实,做抽屉两百年不变形。用了三代人,王记的口碑传遍了半个省。外地客商来订家具,点名要榫接的手艺,王记拿燕尾榫交货。一次、两次、十来次都没出问题。客商后来直接把榫接和燕尾榫画了等号。

岔子出在一个南方客商的订单上。他要做一套榫接结构的活动戏台——每场戏搭起来,演完拆掉,装车运往下一个镇子。王记用燕尾榫做了一整套骨架,运到第二个镇子,四个角全裂了。燕尾榫卡得太死,拆一次就伤木头,拆三次就报废。客户拍了桌子。

王记的老师傅被请过来看现场。他没说话,拆了一根横梁,换上了穿带榫。穿带榫不用卡死,靠楔子横向锁紧,拆的时候抽掉楔子就松。戏台跑了八个镇子没散架。客户问区别在哪。老师傅说:燕尾榫讲究牢,穿带榫讲究活,都是榫接。是你把王记当成了榫接的全部。

后来木匠行在接外地单子时多了一个规矩:客商说榫接,木匠必须追问场景——固定家具还是活动结构、承重还是面板、一次性安装还是反复拆装。燕尾榫只是榫接里的一个公式,用对了天下无敌,用错了反而比其他榫接坏得更快。

行里的年轻木匠在学手艺时也犯过同样的错。他们看见王记燕尾榫名气最大,就以为榫接等于燕尾榫。师傅让他们翻老图谱,他们才发现燕尾榫之前,直角榫、穿带榫、斜角榫早就各有用处。如果把榫接当成燕尾榫,许多特定场景里的老办法就都被忽略了。

木匠行的老规矩刻在门框上:榫接是通名,燕尾榫是专名。不能说榫接不行,因为只说对了一根木头。

稀疏检索

一类基于词频和文档统计的检索方法,将查询和文档表示为稀疏向量。包含 TF-IDF、BM25、布尔检索等多种具体算法,不与任何单一公式绑定。

BM25

稀疏检索中最常用的概率排序函数,基于词频饱和和文档长度归一化。是具体公式而非整类方法,不能代表所有稀疏检索方案。

故事对应

  • 榫接:稀疏检索,一整类基于词频和文档统计的方法
  • 燕尾榫:BM25,具体的一个概率排序公式
  • 外地客商直接把榫接当成燕尾榫:工程中把稀疏检索等同于 BM25 的常见误区
  • 戏台散架:BM25 在某些场景并非最优,穿带榫代表其他稀疏方案
  • 布尔法用了三十年:除了 BM25,还有布尔检索和 TF-IDF 等成熟方案
  • 门框刻字:通名是分类,专名是实例,选型时必须区分

落到检索方案选型

写系统设计文档时,如果写稀疏检索,意味着你需要进一步指定用哪种具体算法;如果写 BM25,意味着你已经选定了算法。把总称写成具体名称会限制后续选型空间,把具体名称写成总称会在评审时被追问实现细节。实际工程中优先评估域内数据对每种稀疏方案的适配性——BM25 的 IDF 假设并非在所有语料上都成立。