---
title: "BM25算法（BM25）"
slug: bm25
language: zh-TW
source: https://aiterms.tw/terms/bm25
updated_at: 2026-07-29
tags: [自然語言處理, 推薦系統, 資料處理, AI應用, AI基礎, 資訊安全]
ipas_term: false
---

# BM25算法（BM25）

> **你在做搜尋排序，想把最相關的文件排前面時，你會怎麼判斷它真正的作用？**
>
> 你可以把它想成 BM25 (Best Matching 25) 是一種用於資訊檢索的排序函數，它基於詞頻和逆文檔頻率，並考慮了文檔長度的影響，以提高檢索的準確性。
>
> 在 你在做搜尋排序，想把最相關的文件排前面時 這種情境裡，這個概念會直接影響你怎麼設計、怎麼評估、怎麼上線。

### 容易混淆
> **BM25 vs TF-IDF**
> BM25 在 TF-IDF 基礎上加了詞頻飽和和文件長度歸一化。
>
> **BM25 vs 向量檢索**
> BM25 看字詞匹配，向量檢索看語意相似，兩者強項不同。
>
> **BM25 vs 關鍵字堆疊**
> BM25 不只是數次數，還會看稀有度和文件長短。

### 記住這句就好
> 先看它要解決的是什麼問題，再看它是不是最合適的方法。

### 實際案例
> **案例 1：站內搜尋**
> 使用者輸入產品型號時，BM25 可以快速把含有關鍵字的頁面排前面。
>
> **案例 2：FAQ 找答案**
> 問題和答案中的關鍵詞對上時，BM25 很適合做第一層召回。

### 算法與應用
> | 面向 | 重點 |
> |---|---|
> | 核心 | 詞頻越高不一定越重要，還要看詞稀不稀有、文件長不長。 |
> | 優點 | 簡單、穩定、可解釋，對文字檢索很實用。 |
> | 注意 | 遇到同義詞或語意改寫時，單靠 BM25 可能不夠。 |

### BM25 的公式與三個關鍵設計

> BM25 給「查詢詞」與「文件」算一個相關度分數，總分是查詢裡每個詞的分數加總：
>
> `score(D, Q) = Σ IDF(qᵢ) × ( f(qᵢ,D) × (k₁+1) ) / ( f(qᵢ,D) + k₁ × (1 − b + b × |D|/avgdl) )`
>
> 看起來複雜，但它其實只是在處理三件事。

| 要處理的問題 | BM25 的做法 | 對應的部分 |
| --- | --- | --- |
| 常見詞不該加分 | 越少文件出現的詞，權重越高 | IDF(qᵢ) |
| 出現 20 次不該是 10 次的兩倍 | 詞頻的效果會飽和 | k₁ 控制飽和速度 |
| 長文件容易誤中 | 依文件長度與平均長度的比值折算 | b 控制正規化強度 |

> 常見的預設值是 k₁ 介於 1.2 到 2.0、b 等於 0.75。
>
> 第二列是 BM25 勝過傳統 TF-IDF 的核心。TF-IDF 的詞頻是線性的，一個詞出現 100 次分數就是出現 1 次的 100 倍，這顯然不合理。BM25 讓詞頻的貢獻趨近一個上限，出現 5 次和 50 次的差別遠小於出現 0 次和 1 次的差別。

### 為什麼在向量檢索時代還要用 BM25

> 現在的 RAG 系統幾乎都採用混合檢索，也就是 BM25 加上向量檢索一起用，原因是兩者的失敗模式剛好互補。
>
> **BM25 擅長精確比對。** 產品型號、錯誤代碼、人名、專有名詞、罕見縮寫，這些東西向量模型常常抓不準，因為它們在訓練資料裡出現得少，嵌入品質差。使用者搜「E-1042 錯誤」時，BM25 一定找得到，向量檢索可能找回一堆「錯誤處理」的通用文件。
>
> **向量檢索擅長換句話說。** 使用者問「怎麼把錢拿回來」，文件寫的是「退款流程」，字面完全不重疊，BM25 找不到，向量檢索找得到。
>
> 合併兩邊結果的常見做法是倒數排名融合（Reciprocal Rank Fusion, RRF），它只看名次不看分數，所以不需要處理兩套分數尺度不同的問題，實作簡單而且效果穩定。
>
> 另外一個現實理由：BM25 不需要 GPU、不需要訓練、可以即時更新索引，成本比向量檢索低一個量級。

### 情境判斷
> **Q1（判斷題）：** 一篇很長的文件重複很多次關鍵字，BM25 會一直把它排第一嗎？
> → 不會完全照次數線性加分，因為詞頻會飽和，文件長度也會被校正。
>
> **Q2（判斷題）：** 如果使用者查的是同義詞，BM25 還一定有用嗎？
> → 有用但不夠，這時常會再搭配語意檢索。

### 常見問題
> **Q：BM25 和 TF-IDF 差在哪？**
> BM25 多了詞頻飽和和文件長度修正，搜尋排序通常更穩。
>
> **Q：BM25 適合做語意搜尋嗎？**
> 單獨用不夠，因為它主要是詞字面匹配。
>
> **Q：參數 k1 和 b 是什麼？**
> k1 控制詞頻飽和，b 控制文件長度影響。

### 相關術語
> - **TF-IDF**：這是下一層常搭配的排序或評估概念。
> - **語義搜尋**：這是下一層常搭配的排序或評估概念。
> - **詞袋模型**：這是下一層常搭配的排序或評估概念。
> - **餘弦相似度**：這是下一層常搭配的排序或評估概念。

---

來源：https://aiterms.tw/terms/bm25
快查頁：https://aiterms.tw/terms/bm25
最後更新：2026/07/29
深度解說：https://aiterms.tw/learning/what-is-bm25