Skip to content
Back to skills

Bm25s

ASecurity

"Use bm25s for sparse lexical retrieval: tokenize text, build and

  • 247 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 8, 2026
businesspythonrustbashbackend

Works with

  • cli
  • mcp

Security analysis

A96/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 20 files and shows the line behind each finding

Scanned September 8, 2026

npx -y skills add VectorSpaceLab/AREX-Skill --skill bm25s --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Bm25s?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Bm25s
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vectorspacelab-bm25s/badge)](https://www.skillsdirectory.com/skills/vectorspacelab-bm25s)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: bm25s
description: "Use bm25s for sparse lexical retrieval: tokenize text, build and
  query BM25 indexes, persist or memory-map them, run the high-level or bm25 CLI
  workflows, and diagnose optional acceleration and integrations."
disable-model-invocation: true
metadata:
  disco-role: operating
license: MIT
---
# bm25s

`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:

```bash
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](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](sub-skills/core-indexing-retrieval/SKILL.md).
- **Tokenize corpus and queries, configure stopwords/stemming, share a
  vocabulary, stream text, or persist tokenizer state:** read
  [tokenization-and-stopwords](sub-skills/tokenization-and-stopwords/SKILL.md).
- **Save/load an index, restore a JSONL corpus, use `mmap`, inspect files, or
  plan a large-index workflow:** read
  [persistence-and-corpus-io](sub-skills/persistence-and-corpus-io/SKILL.md).
- **Load CSV/TXT/JSON/JSONL, use `BM25Search`, or run `bm25 index/search`:**
  read [high-level-and-cli](sub-skills/high-level-and-cli/SKILL.md).
- **Choose Numba, SciPy, NumPy/JAX top-k, compile JIT code, or diagnose an
  optional backend:** read
  [acceleration-and-selection](sub-skills/acceleration-and-selection/SKILL.md).
- **Exchange indexes with Hugging Face, expose a local index through MCP, or
  compute bounded BEIR-style metrics:** read
  [hub-mcp-and-evaluation](sub-skills/hub-mcp-and-evaluation/SKILL.md).

## 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](references/troubleshooting.md) for
cross-cutting install/import, data alignment, optional dependency, CLI, and
integration failures. Read [references/repo-provenance.md](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.

Files in this skill

  • SKILL.md4.3 KB
  • references/repo-provenance.md1.8 KB
  • references/repo-routing-metadata.json320 B
  • references/troubleshooting.md4.6 KB
  • scripts/check_environment.py2.5 KB
  • sub-skills/acceleration-and-selection/SKILL.md6.1 KB
  • sub-skills/acceleration-and-selection/references/api-reference.md6.3 KB
  • sub-skills/acceleration-and-selection/references/numba-workflows.md5.7 KB
  • sub-skills/acceleration-and-selection/references/troubleshooting.md7.5 KB
  • sub-skills/acceleration-and-selection/scripts/numba_smoke.py4.9 KB
  • sub-skills/core-indexing-retrieval/SKILL.md7.9 KB
  • sub-skills/core-indexing-retrieval/references/api-reference.md9.5 KB
  • sub-skills/core-indexing-retrieval/references/troubleshooting.md7.1 KB
  • sub-skills/core-indexing-retrieval/references/workflows.md6 KB
  • sub-skills/core-indexing-retrieval/scripts/metadata_retrieval.py2.4 KB
  • sub-skills/high-level-and-cli/SKILL.md6.6 KB
  • sub-skills/high-level-and-cli/references/api-reference.md6.5 KB
  • sub-skills/high-level-and-cli/references/cli-reference.md5 KB
  • sub-skills/high-level-and-cli/references/troubleshooting.md6.3 KB
  • sub-skills/high-level-and-cli/scripts/simple_file_search.py2.6 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.