RRepoGEO

REPOGEO REPORT · LITE

xhluca/bm25s

Default branch main · commit c37c81c7 · scanned 5/22/2026, 11:07:13 AM

GitHub: 1,675 stars · 99 forks

Scan history for this repo

Score trend below includes all ready runs (older left, newer right; scroll horizontally if needed). The table is collapsed by default—expand for newest-first rows, 10 per page.

Score trend (left → right: older → newer)

2 ready scans. Expand the table below for newest-first rows (10 per page, paginated).

AI VISIBILITY SCORE
33 /100
Critical
Category recall
0 / 2
Not recommended in any query
Rule findings
2 pass · 0 warn · 0 fail
Objective metadata checks
AI knows your name
2 / 3
Direct prompts that named your repo
HOW TO READ THIS REPORT

Action plan is what to do next — copy-pasteable changes prioritized by impact. Category visibility is the real GEO test: when a user asks an AI a brand-free question that should surface xhluca/bm25s, does the AI actually recommend you — or your competitors? Objective checks verify the metadata signals AI engines weight first. Self-mention check detects whether AI even knows you exist by name.

Action plan — copy-paste fixes

3 prioritized changes generated by gemini-2.5-flash. Mark items done after you ship the fix.

OVERALL DIRECTION
  • highreadme#1
    Reposition the README's introductory statement to clarify scope

    Why:

    CURRENT
    BM25S (or BM25-Sparse) is an ultrafast implementation of BM25 in pure Python, powered by Numpy
    Welcome to `bm25s`, a library that implements BM25 in Python, allowing you to rank documents based on a query. BM25 is a widely used ranking function used for text retrieval tasks, and is a core component of search services like Elasticsearch.
    COPY-PASTE FIX
    Welcome to `bm25s`, an ultrafast and memory-efficient pure Python library for **lexical BM25 search and document ranking**, powered by Numpy and Numba. Unlike full-fledged search engines like Elasticsearch or vector search libraries such as Faiss and Annoy, `bm25s` focuses specifically on providing a high-performance implementation of the BM25 algorithm, making it ideal for integrating into custom RAG pipelines and specialized search applications.
  • highreadme#2
    Add a dedicated 'Comparison with Alternatives' section to the README

    Why:

    COPY-PASTE FIX
    ## Comparison with Alternatives
    
    While several libraries offer BM25 implementations or broader search capabilities, `bm25s` stands out for its unique focus on **ultrafast, memory-efficient lexical BM25 scoring** in pure Python.
    
    -   **vs. `Rank BM25`**: `bm25s` is designed for significantly higher performance and lower memory footprint, especially with large document collections, by leveraging sparse matrix operations and Numba acceleration for eager score computation.
    -   **vs. `pyserini`**: `pyserini` offers a comprehensive toolkit built on Lucene, providing broader functionalities. `bm25s` is a lightweight, pure Python library focused solely on optimizing the BM25 algorithm itself.
    -   **vs. Elasticsearch, Faiss, Annoy**: These are full search engines (Elasticsearch) or vector search libraries (Faiss, Annoy) for different paradigms. `bm25s` is a specialized library for integrating high-performance lexical BM25 into your custom applications, not a standalone search system or vector index.
  • mediumtopics#3
    Refine the topics list for more specific targeting

    Why:

    CURRENT
    bm25, bm25-l, bm25-plus, information-retrieval, lexical-search, okapi-bm25, rag, retrieval, robertson, search
    COPY-PASTE FIX
    bm25, bm25-l, bm25-plus, information-retrieval, lexical-search, okapi-bm25, rag, retrieval, robertson, search, python-library, sparse-matrix, high-performance-search, document-ranking

Category GEO backends resolved for this scan: google/gemini-2.5-flash, deepseek/deepseek-v4-flash

Category visibility — the real GEO test

Brand-free queries asked to google/gemini-2.5-flash. Did AI recommend you, or someone else?

Same questions for every model — switch tabs to compare answers and rankings.

Recall
0 / 2
0% of queries surface xhluca/bm25s
Avg rank
Lower is better. #1 = top recommendation.
Share of voice
0%
Of all named tools, what % are you?
Top rival
facebookresearch/faiss
Recommended in 1 of 2 queries
COMPETITOR LEADERBOARD
  1. facebookresearch/faiss · recommended 1×
  2. spotify/annoy · recommended 1×
  3. elastic/elasticsearch · recommended 1×
  4. mchaput/whoosh · recommended 1×
  5. RaRe-Technologies/gensim · recommended 1×
  • CATEGORY QUERY
    What is the fastest Python library for efficient lexical search and document ranking?
    you: not recommended
    AI recommended (in order):
    1. Faiss (facebookresearch/faiss)
    2. Annoy (spotify/annoy)
    3. Elasticsearch (elastic/elasticsearch)
    4. Whoosh (mchaput/whoosh)
    5. Gensim (RaRe-Technologies/gensim)
    6. Haystack (deepset-ai/haystack)
    7. Scikit-learn (scikit-learn/scikit-learn)

    AI recommended 7 alternatives but never named xhluca/bm25s. This is the gap to close.

    Show full AI answer
  • CATEGORY QUERY
    How can I implement a high-performance BM25 information retrieval system in Python for RAG?
    you: not recommended
    AI recommended (in order):
    1. Rank BM25
    2. pyserini
    3. Elasticsearch
    4. Whoosh
    5. Gensim

    AI recommended 5 alternatives but never named xhluca/bm25s. This is the gap to close.

    Show full AI answer

Objective checks

Rule-based audits of metadata signals AI engines weight most.

  • Metadata completeness
    pass

  • README presence
    pass

Self-mention check

Does AI even know your repo exists when asked about it directly?

  • Compared to common alternatives in this category, what is the core differentiator of xhluca/bm25s?
    pass
    AI did not name xhluca/bm25s — likely talking about a different project

    AI answers can be confidently wrong. Read for accuracy: does it match your actual tech stack, audience, and differentiator?

  • If a team adopts xhluca/bm25s in production, what risks or prerequisites should they evaluate first?
    pass
    AI named xhluca/bm25s explicitly

    AI answers can be confidently wrong. Read for accuracy: does it match your actual tech stack, audience, and differentiator?

  • In one sentence, what problem does the repo xhluca/bm25s solve, and who is the primary audience?
    pass
    AI named xhluca/bm25s explicitly

    AI answers can be confidently wrong. Read for accuracy: does it match your actual tech stack, audience, and differentiator?

Embed your GEO score

Drop this badge into the README of xhluca/bm25s. It auto-updates whenever the report is rescanned and links back to the latest report — easy public proof that you care about AI discoverability.

RepoGEO badge previewLive preview
MARKDOWN (README)
[![RepoGEO](https://repogeo.com/badge/xhluca/bm25s.svg)](https://repogeo.com/en/r/xhluca/bm25s)
HTML
<a href="https://repogeo.com/en/r/xhluca/bm25s"><img src="https://repogeo.com/badge/xhluca/bm25s.svg" alt="RepoGEO" /></a>
Pro

Subscribe to Pro for deep diagnoses

xhluca/bm25s — Lite scans stay free; this card itemizes Pro deep limits vs Lite.

  • Deep reports10 / month
  • Brand-free category queries5 vs 2 in Lite
  • Prioritized action items8 vs 3 in Lite
xhluca/bm25s — RepoGEO report