BM25S : Une recherche lexicale des ordres de grandeur plus rapide grâce à un score sparse immédiat
BM25S: Orders of magnitude faster lexical search via eager sparse scoring
July 4, 2024
Auteurs: Xing Han Lù
cs.AI
Résumé
Nous présentons BM25S, une implémentation efficace de BM25 basée sur Python qui ne dépend que de Numpy et Scipy. BM25S atteint une accélération allant jusqu'à 500x par rapport au framework Python le plus populaire, en calculant de manière proactive les scores BM25 lors de l'indexation et en les stockant dans des matrices creuses. Il obtient également des accélérations significatives par rapport aux implémentations hautement optimisées basées sur Java, utilisées par des produits commerciaux populaires. Enfin, BM25S reproduit l'implémentation exacte de cinq variantes de BM25 basées sur Kamphuis et al. (2020) en étendant le calcul proactif des scores aux variantes non creuses grâce à une nouvelle méthode de décalage des scores. Le code est disponible à l'adresse suivante : https://github.com/xhluca/bm25s.
English
We introduce BM25S, an efficient Python-based implementation of BM25 that
only depends on Numpy and Scipy. BM25S achieves up to a 500x speedup compared
to the most popular Python-based framework by eagerly computing BM25 scores
during indexing and storing them into sparse matrices. It also achieves
considerable speedups compared to highly optimized Java-based implementations,
which are used by popular commercial products. Finally, BM25S reproduces the
exact implementation of five BM25 variants based on Kamphuis et al. (2020) by
extending eager scoring to non-sparse variants using a novel score shifting
method. The code can be found at https://github.com/xhluca/bm25sSummary
AI-Generated Summary