bm25-mojo
A drop-in faster replacement for the rank_bm25
package, powered by a clean-room Mojo kernel — with a vendored pure-Python
fallback for platforms without a native build (including Windows — tested there in CI: windows-fallback).
from bm25_mojo import BM25Okapi # same API as rank_bm25.BM25Okapi
bm25 = BM25Okapi(tokenized_corpus)
scores = bm25.get_scores(tokenized_query) # np.ndarray, float64
top = bm25.get_top_n(tokenized_query, documents, n=5)
panel = bm25.get_scores_batch(list_of_queries) # batch API: bit-identical rows
- Same results: scores match
rank_bm25element-wise (last-ulp level; the differential suite asserts agreement within 1e-8 on both the native and fallback backends).BM25Okapi,BM25L, andBM25Plusare provided. - Much faster scoring: the kernel walks postings lists with the
idf-weighted scores baked in at index time — 149x-13,137x faster
get_scoresthan rank_bm25, and 1.1x-1.95x faster than bm25s 0.3.11 (numba, its recommended config) across the whole 1k-100k doc grid (Apple M4 Max; full method and numbers in the repository README andbenchmarks/AUTOPSY-bm25s.md). - No toolchain needed: per-platform wheels ship the compiled kernel. Everywhere else the package transparently uses its pure-Python fallback.
- Force the fallback with
BM25_MOJO_DISABLE_NATIVE=1; inspect the active backend withbm25_mojo.backend_info().
Source, benchmarks, and development: https://github.com/thyn-ai/mojo-kernels
License: Apache-2.0, © 2026 Algenta
Release files for bm25-mojo 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| bm25_mojo-0.2.1-py3-none-manylinux_2_35_x86_64.whl | Python 3 | none | Linux glibc 2.35+ x86-64 | Details |
| bm25_mojo-0.2.1-py3-none-macosx_14_0_arm64.whl | Python 3 | none | macOS 14.0+ ARM64 | Details |
Total release size: 2.0 MB
Release files / bm25_mojo-0.2.1-py3-none-manylinux_2_35_x86_64.whl
| Download URL | bm25_mojo-0.2.1-py3-none-manylinux_2_35_x86_64.whl |
|---|---|
| Size | 840.4 kB |
| Tags | Linux glibc 2.35+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
15d806e7fa1f4775831263971e4e4770f8420225adeb9c1134b9ccc121d50723
|
|
BLAKE2b-256 checksum How to use checksums |
9eae754543d5dcfd899f95ae1a3cf3c885bc2647b3911445f6bbe624f4776b08
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / bm25_mojo-0.2.1-py3-none-macosx_14_0_arm64.whl
| Download URL | bm25_mojo-0.2.1-py3-none-macosx_14_0_arm64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | Python 3 macOS 14.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
8afd67f832e03ebe668939f8b1c47c0a6e4f90b9da0f5890dfb9d50cc0266481
|
|
BLAKE2b-256 checksum How to use checksums |
8d9635415d409d41d80d972659e39d3d9f52589374213d681c6120893e2fbf1d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|