跳到主内容
快讯直播
AI智模界
AI 词典

SPLADE(学习稀疏):让倒排索引也能做语义检索

一句话定义

SPLADE(Sparse Lexical and Expansion)是「学习稀疏」(learned sparse)检索模型的代表:它把一段文字编码成一个与整个词表等长的权重向量,绝大多数词权重为零,只有少数词非零——因此能直接放进倒排索引,同时因为权重是模型学出来的,又带上了语义联想能力。

它怎么工作

传统 BM25 像图书馆里只会数数的管理员:一个词在本篇出现越多、在别处越少见,卡片上就写得越重。他不认识词义,同义词、缩写一概不管。

SPLADE 换了个读过书的管理员。他不再数词频,而是拿着全词表逐项打分:这段话该给「电动车」多少分、「充电」多少分、「新能源」多少分,没关系的写 0。交出来的仍是一张关键词卡片,只是分数是学出来的。

技术上大致三步:用 BERT 类编码器(encoder)配一个语言模型预测头(MLM head),为词表里每个词打分;对各 token 的分数做 max pooling,得到与词表同长的向量;再用 ReLU 去掉负值、用饱和函数压缩高分项,并用稀疏正则让非零项尽量少。查询端同样编码,两边都是稀疏向量,倒排索引做加权求和即可打分。

和邻居的区别

BM25稠密向量检索学习稀疏(SPLADE 等)
表示词频统计权重数百至上千维浮点向量全词表稀疏权重
语义联想基本没有有,但不可读有,且落在具体词上
索引倒排索引向量索引 + 近似最近邻倒排索引
可解释性

「学习稀疏」是个家族,SPLADE 只是最出名的一个,同族还有 DeepImpact、uniCOIL,以及各家检索产品内置的稀疏模型。它也不是稠密检索的替代品,更像是在「词匹配」这条老路上请了个懂语义的人来打分。

实际意义

  • 已在用 Elasticsearch、OpenSearch、Lucene 这类倒排引擎的团队,接入学习稀疏通常最省事:过滤、聚合、排序链路都能复用,不必另建一套向量索引。
  • 输出是可读的词与权重,出问题能直接看出「哪个词把它召回了」,调试体验好过稠密向量。
  • 代价也明确:文档会被扩展出大量相关词,索引体积和查询耗时上升;缩写、专业术语的扩展质量高度依赖训练数据;和稠密检索混用时,还得调两路分数的融合权重。
  • 对普通用户,直观感受是搜「报销流程」也能捞到写着「费用申请步骤」的文档,措辞不同不再等于搜不到。

具体实现与各代改进(例如稀疏正则的做法)以官方页面和论文为准。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。