AB

alessandrobenigni/bm25-turbo-rust-python-wasm-cli

Developer tools

Эта страница переведена автоматически. Технические детали смотрите в оригинале. Открыть оригинал

51 stars 2 forks Качество 55 Тренд 13AGPL-3.0

Самый быстрый скоринговый двигатель 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
Открыть полный README на GitHub

Установка

This server does not publish a one-line install command.

Open the repository installation guide Новичок в MCP? Начните с руководства на mcpskill.org →