搜索与 AI
BM25 是什么?
Okapi BM25
BM25 是关键词检索常用的排序方法,依查询词在文档中出现的次数、这个词在整个数据集里有多少见,以及文档长度,计算文档与查询的相关分数。Elasticsearch 默认使用 BM25 计算相关性。
分数怎么算
BM25 属于 TF-IDF 一类的计分方式。查询词在文档里出现越多次,分数越高,但增加的幅度会逐渐变小;越少见的词权重越高;文档越长,同样的出现次数算得越少。
Elasticsearch 用参数 k1 控制词频多快达到饱和,用 b 控制文档长度的影响,默认值分别是 1.2 与 0.75。
和语义检索的差别
BM25 本身按词项计分,不会自行理解同义词。如果系统没有加入同义词扩展,用户说“订位”、工具只写“预约”,就可能缺少可匹配的词项;以 Embedding 为基础的语义检索则是另一种建立关联的方式。两者可以并用,再将候选交给重排序模型精排。
参考资料
- Elastic:Similarity settings
- Robertson, S., & Zaragoza, H.(2009):The Probabilistic Relevance Framework: BM25 and Beyond
- Elastic:Synonym token filter
最近查核: