Skip to main content

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_bm25 element-wise (last-ulp level; the differential suite asserts agreement within 1e-8 on both the native and fallback backends). BM25Okapi, BM25L, and BM25Plus are provided.
  • Much faster scoring: the kernel walks postings lists with the idf-weighted scores baked in at index time — 149x-13,137x faster get_scores than 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 and benchmarks/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 with bm25_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.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for bm25-mojo 0.2.3
File Interpreter ABI Platform
bm25_mojo-0.2.3-py3-none-manylinux_2_35_x86_64.whl Python 3 none Linux glibc 2.35+ x86-64 Details
bm25_mojo-0.2.3-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.3-py3-none-manylinux_2_35_x86_64.whl

Download URL bm25_mojo-0.2.3-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
1f88dd506190460414478f2833162971404ccdae949263da25e7ba0db8c4a0c9
BLAKE2b-256 checksum
How to use checksums
1dddd9a2adbf11dbbf5f7973beb7bb6ee3707eedf77b3c5c09fe2b81e0d1a21b
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.3-py3-none-macosx_14_0_arm64.whl

Download URL bm25_mojo-0.2.3-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
c6839cd2b4cef5096db46e4aa53f9639db2c7a5f3e20957bf1b585e6b2eba4f6
BLAKE2b-256 checksum
How to use checksums
8ec7f25ea35734c086b174f1b1c6e21f01f9e8d28df6fc58c451f919e00623f4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

This release

0.2.3 This release

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.7

2 release files

0.1.5

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page