xhluca/bm25s
Fast BM25 search in Python, powered by Numpy and Numba
What it solves
bm25s 是一個超高速的 Python 實作 BM25 排序函式,用於詞彙搜尋與文字檢索。它透過提供顯著更快的文件排序方式,解決了現有 Python 函式庫的效能瓶頸,使其在許多使用情境下成為 Elasticsearch 等重型搜尋服務的可行替代方案。
How it works
此函式庫利用 Numpy 與稀疏矩陣來儲存所有文件 token 的即時計算分數。此方法讓查詢時的計分極為快速。它亦支援透過 numba 進行可選的 JIT 編譯,以在更大型資料集上獲得額外加速,並提供記憶體映射 (mmap) 選項,讓索引載入時不必佔用整個系統記憶體。
Who it’s for
此套件設計給開發搜尋服務、RAG(檢索增強生成)管線,或任何需要在 Python 中以關鍵字快速檢索文件、且不想承擔 Java 或 PyTorch 負擔的應用程式開發者。
Highlights
- High Performance: 宣稱相較於流行的 Python BM25 實作有數量級的速度提升。
- Low Dependency: 完全使用 Numpy 的純 Python 實作;不需要 Java 或 PyTorch。
- Flexible API: 支援多種 BM25 變體(Robertson、ATIRE、BM25L、BM25+、Lucene)與可自訂的斷詞。
- Tooling: 包含命令列介面(CLI)用於建立索引與搜尋,並內建 Model Context Protocol (MCP) 伺服器,將索引作為 LLM 工具公開。
- Ecosystem Integration: 原生支援透過 Hugging Face Hub 儲存與載入索引。