SH

Soloharness

概念 · 辨析 · Agent

← 返回概念辨析

Concept Contrast Fable

混合搜索和稀疏检索

稀疏检索是传统的倒排索引关键词匹配,混合搜索是在它的基础上再加一路语义检索。以为混合搜索就是「升级版关键词匹配」,会低估架构变化带来的成本和收益。

寓言

老账本和新搭档

档案局的检索台用了二十年的老账本法——按关键词建倒排索引,每个词后面列一串文献编号。查「漕运」,翻到漕运那一页,后面整整齐齐列着四百条记录。这套办法够用、够快、维护简单,全局上下都熟。

新来的技术员建议引入一面意义镜,跟老账本法搭配使用。试点跑了三个月,效果不错,领导给这个组合起了个新名字叫「合手查」。全局通报里写:即日起推广合手查。

通报发出去第二周,问题来了。三个分馆打电话问同一个问题:合手查是不是就是把老账本换了套新界面?如果是,我们分馆的老账本索引一直维护得很好,是不是不需要动?

总局派人下去解释,才发现通报里没说清楚一件事:合手查不是单纯把老账本换了层皮。老账本还在,但它旁边多了一个新搭档——意义镜。两路信号并行跑,最后在结果层融合。老账本负责精确命中,意义镜负责语义补全。缺了意义镜那一半,合手查就退回了老账本。

分馆的人又问:那我们要不要也买一面意义镜?总局说:要,而且买了以后还要调融合权重。有的查询老账本给的结果已经很好,权重就多给它一些。有的查询老账本召回太少,就让意义镜多补一些。权重的调法跟各分馆的文献类型直接相关——法院分馆的判例文书专有名词多,老账本宜重。医学院分馆的论文同义表达多,意义镜宜重。

一年以后,各分馆都配齐了两路检索,运维团队也攒出了一套调权经验。回看当初的通报事故,负责人说了一句:命名的时候只想着给组合起个新名字,忘了告诉大家老账本还在里面、没有消失。

后来有人问,合手查和老账本的区别到底在哪。回答变成了两句话:老账本是一个人干活,合手查是两个人搭档。老账本始终在场,但多了一个能听懂「意思差不多」的搭档。

后来查档台门口挂了块流程板:左侧写着老账本查什么,右侧写着意义镜补什么,中间画了一个汇合点。新来的人先看板再上岗。

稀疏检索 (Sparse Retrieval)

基于倒排索引的关键词匹配检索,典型实现是 BM25。向量维度高但大部分为零(稀疏),对精确词条、专有名词非常敏感,计算成本低。

混合搜索 (Hybrid Search)

融合稀疏检索和密集检索两路信号的综合检索策略。以稀疏检索为基础,再额外叠加语义检索通道的组合方案。

故事对应

  • 老账本法(倒排索引):稀疏检索,BM25 关键词匹配。
  • 意义镜:密集检索,向量语义匹配。
  • 合手查:混合搜索,两路融合。
  • 分馆的困惑:以为混合搜索只是稀疏检索换了界面,忽略了语义通道是独立的组件。
  • 法院和医学院的权重差异:不同领域对稀疏和密集信号的依赖程度不同。

落到项目里

存量系统里如果已经有一套成熟的 BM25/Elasticsearch 检索,引入混合搜索时不要推倒重来。在原有稀疏检索旁边加一条密集检索通道,两路并行后再做结果融合。这样做三件事可以避免踩坑:第一,明确告知团队「稀疏检索保留,语义检索是新增」,防止运维把新系统当旧系统用。第二,为不同业务域设置不同的融合权重。第三,保留去掉密集通道、纯靠稀疏检索的回退开关,作为性能基线。