
alessandrobenigni/bm25-turbo-rust-python-wasm-cli
Developer toolsЭта страница переведена автоматически. Технические детали смотрите в оригинале. Открыть оригинал
Самый быстрый скоринговый двигатель BM25: в 2300 раз быстрее, чем BM25S. 28K QPS на 8,8 млн док. 5 вариантов BM25 (Robertson, Lucene, ATIRE, BM25L, BM25+). Сохранение памяти, обрезка BMW, потоковая индексация.
Обзор
BM25 Turbo Rust · Python · WASM · CLI Самый быстрый двигатель BM25. Период. 8,8 млн. документов. Предварительно вычисленный разреженный BM25 с обрезкой BMW, сохранением на карте памяти и загрузкой с нулевым индексом копирования. Построен для трубопроводов RAG, поисковых приложений и рабочих процессов ML. Большинство библиотек BM25 вычисляют баллы во время запроса — сканирование перевернутых индексов по каждому запросу. BM25 Turbo использует противоположный подход: в сжатую разреженную колонку (CSC). Запросы становятся редкими векторными поисками без математики во время обслуживания. Это делает BM25 Turbo правильным выбором, когда: - Вы (RAG, переоценка, пакетная оценка) - Вам нужно (ML трубопроводы, эксперименты) - Вы хотите (3 строки для индексации, 1 строка для запроса) - Вы создаете и не нуждаетесь в полном сервере поиска Маркировка MS MARCO (8 841 823 документа, 509 962 запроса) — стандартный эталон поиска информации. BMW Pruning включен. Однопоточный. Субмиллисекунда на корпусе менее 100 тыс. док.
Обзор (машинный перевод)
BM25 Турбо Rust · Python · WASM · CLI Самый быстрый двигатель BM25. Период.
28 217 запросов/секунда по 8,8 млн. документов. **8,6 млн. Предварительно вычисленный разреженный BM25 с обрезкой BMW, сохранением на карте памяти и загрузкой с нулевым индексом копирования. Построен для трубопроводов RAG, поисковых приложений и рабочих процессов ML.
Почему именно BM25 Turbo?
Большинство библиотек BM25 вычисляют баллы во время запроса — сканирование перевернутых индексов по каждому запросу. BM25 Turbo использует противоположный подход: precompute каждую оценку BM25 в индексное время в матрицу сжатой разреженной колонки (CSC). Запросы становятся редкими векторными поисками без математики во время обслуживания.
Это делает BM25 Turbo правильным выбором: Вы ** запрашиваете один и тот же индекс много раз ** (RAG, переоценка, оценка партии)
- Вам нужны детерминированные, воспроизводимые баллы (ML трубопроводы, эксперименты) Простейший API (3 строки для индексации, 1 строка для запроса) Вы создаете функцию поиска ** и не нуждаетесь в полном сервере поиска
##Спектакль
Маркировка MS MARCO (8 841 823 документа, 509 962 запроса) — стандартный эталон поиска информации. BMW Pruning включен. Однопоточный.
###Пропуск запросов
Эта страница переведена автоматически. Технические детали смотрите в оригинале.
README
Показан фрагмент оригинального README. Открыть оригинал.
BM25 Turbo ⚡ Rust · Python · WASM · CLI The fastest BM25 scoring engine. Period.
28,217 queries/second on 8.8 million documents. 8.6ms P50 latency. Precomputed sparse BM25 with BMW pruning, memory-mapped persistence, and zero-copy index loading. Built for RAG pipelines, search applications, and ML workflows.
use bm25_turbo::{BM25Builder, Method};
let index = BM25Builder::new()
.method(Method::Lucene) // Robertson, Lucene, ATIRE, BM25L, BM25+
.k1(1.5).b(0.75)
.build_from_corpus(&[
"Rust is a systems programming language",
"BM25 is a ranking function used in information retrieval",
"Machine learning models benefit from fast retrieval",
])?;
let results = index.search("information retrieval", 10)?;
for (id, score) in results.doc_ids.iter().zip(results.scores.iter()) {
println!("doc {} → {:.4}", id, score);
}
Why BM25 Turbo?
Most BM25 libraries compute scores at query time — scanning inverted indexes on every request. BM25 Turbo takes the opposite approach: precompute every BM25 score at index time into a compressed sparse column (CSC) matrix. Queries become sparse vector lookups with no math at serving time.
This makes BM25 Turbo the right choice when:
- You query the same index many times (RAG, reranking, batch evaluation)
- You need deterministic, reproducible scores (ML pipelines, experiments)
- You want the simplest possible API (3 lines to index, 1 line to query)
- You’re building a search feature and don’t need a full search server
Performance
Benchmarked on MS MARCO (8,841,823 documents, 509,962 queries) — the standard information retrieval benchmark. BMW pruning enabled. Single-threaded.
Query Throughput
Query Latency
Scaling Across Corpus Sizes
| Corpus | Documents | P50 Latency | QPS | nDCG@10 |
|---|---|---|---|---|
| SciFact | 5,183 | 67 μs | 682,127 | 0.665 |
Установка
This server does not publish a one-line install command.
Open the repository installation guide Новичок в MCP? Начните с руководства на mcpskill.org →