bm25s
SkillDev tools"Use bm25s for sparse lexical retrieval: tokenize text, build and
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the bm25s skill
What this skill tells your AI
The instructions your AI receives, as published by vectorspacelab/arex-skill in skills/repositories/repo-skills/bm25s/SKILL.md and read by ahel’s review.
bm25s is a NumPy-backed, eager sparse BM25 implementation for lexical search.
Use this root as the routing map; keep detailed signatures, file contracts, CLI
flags, and troubleshooting in the linked sub-skills.
Install and verify
Start with the smallest dependency set that matches the route:
pip install bm25s
python -c "import bm25s; print(bm25s.__version__)"
Optional extras are independent choices: bm25s[core] adds progress/JSON,
PyStemmer, and Numba; bm25s[indexing] adds SciPy CSC construction;
bm25s[selection] adds CPU JAX top-k; bm25s[hf] adds Hugging Face Hub;
bm25s[mcp] adds MCP; bm25s[cli] adds Rich; and
bm25s[evaluation] adds pytrec_eval. The full extra combines the package
extras but is not required for ordinary CPU retrieval. Check optional imports
with scripts/check_environment.py.
The required operating path is CPU/NumPy. Numba, SciPy, and JAX are optional CPU choices, not CUDA claims. Hub operations require network/credentials and MCP is a local or separately deployed service; do not perform remote writes or start a listener without explicit user intent.
Choose a route
- Construct or query a low-level BM25 index, score variants, return IDs or metadata, or apply a mask: read core-indexing-retrieval.
- Tokenize corpus and queries, configure stopwords/stemming, share a vocabulary, stream text, or persist tokenizer state: read tokenization-and-stopwords.
- Save/load an index, restore a JSONL corpus, use
mmap, inspect files, or plan a large-index workflow: read persistence-and-corpus-io. - Load CSV/TXT/JSON/JSONL, use
BM25Search, or runbm25 index/search: read high-level-and-cli. - Choose Numba, SciPy, NumPy/JAX top-k, compile JIT code, or diagnose an optional backend: read acceleration-and-selection.
- Exchange indexes with Hugging Face, expose a local index through MCP, or compute bounded BEIR-style metrics: read hub-mcp-and-evaluation.
Common low-level contract
A normal low-level flow is: produce one corpus vocabulary with
bm25s.tokenize(...) or Tokenizer, call BM25.index(...), tokenize queries
with the same vocabulary strategy, and call retrieve(..., k=...). The default
result is a Results named tuple with two-dimensional .documents and
.scores arrays. Without a display corpus, document values are positional
indices; a supplied corpus must have exactly the indexed document count and
order.
Use show_progress=False for bounded automation. Keep k no larger than the
number of documents in low-level retrieval; the high-level wrapper instead
clamps oversized positive k. Use return_as="documents" only when scores
are not needed. Record the model method, vocabulary strategy, result shape, and
optional backend in experiment metadata.
Handoff and safety
Route across sub-skills rather than reopening the original package checkout.
For a saved index, record the exact directory, filenames, corpus count,
mmap, and vocabulary state. For a CLI or Hub task, record the input format,
column/key, resolved paths, revision, token/authorization boundary, and result
artifact. Keep allow_pickle=False for untrusted indexes, validate corpus
alignment before document-returning retrieval, and stop on missing or
incompatible optional dependencies instead of silently changing the experiment.
Read references/troubleshooting.md for cross-cutting install/import, data alignment, optional dependency, CLI, and integration failures. Read references/repo-provenance.md before deciding whether this skill matches a changed repository; refresh the skill when the recorded commit, package entry points, or major evidence paths no longer match.
Signals
- GitHub stars
- 266
- Forks
- 21
- Last commit
- Sep 2026
ahel review
K1binfo
installs-packagesK1binfo
installs-packages (in references/troubleshooting.md)K1binfo
installs-packages (in sub-skills/acceleration-and-selection/SKILL.md)K1binfo
installs-packages (in sub-skills/acceleration-and-selection/references/troubleshooting.md)K1binfo
installs-packages (in sub-skills/persistence-and-corpus-io/references/troubleshooting.md)K1binfo
installs-packages (in sub-skills/tokenization-and-stopwords/references/troubleshooting.md)
Automated review, not a security audit. Ruleset v1+k2.
Advanced
- Catalog kind
- skill
- Gateway key
bm25s- Source
- github.com/vectorspacelab/arex-skill