Skip to content

BM25

BM25 (Okapi BM25) is a lexical ranking function that scores documents by keyword overlap with a query, widely used in search and retrieval systems.

Known aliases

  • BM25 keyword search
  • BM25Okapi
  • full-text search
  • keyword search
  • Okapi BM25

Current stories

buildOne report1 publisher

GPT-4.1 falls from 93.49% to 14.58% on BrowseComp-Plus when BM25 does the searching

GPT-4.1 scored 93.49% on BrowseComp-Plus with documents supplied and 14.58% when BM25 searched, according to The New Stack. That 78.9-point gap sizes the room for retrieval work on one fixed corpus. Production failure rates need their own measurement.

Publishers:thenewstack.io

Reality

Evidence58
Adoption
Not scored
Hype gap+15
Incentives
Not scored
Confidence55
buildOne report1 publisher

turbopuffer v3 scores postings in batches and cuts full-text p90 by up to 80% against v2

turbopuffer says v3 cut hot and cold full-text p90 latency by up to 80% against v2 on 10-million-document namespaces. The figure is from the vendor's own nightly benchmark, and the company does not expect a gain for cold vector queries.

Publishers:turbopuffer.com

Reality

Evidence50
Adoption
Not scored
Hype gap+12
Incentives60
Confidence55
buildOne report1 publisher

Databricks isolates app and database limits in its Lakebase Search sizing test

Databricks tests Lakebase Search on 1M to 4M rows, using a 23,000-row internal app as its baseline. A search request touches two computes, the app's and the database's, and either one can set the limit.

Publishers:databricks.com

Reality

Evidence50
Adoption
Not scored
Hype gap+15
Incentives65
Confidence55
buildOne report1 publisher

pg_search 0.26 trades single-term speed for a fourfold gain on ten-term BM25 search

ParadeDB's pg_search 0.26 cut a ten-term BM25 search from 129ms to 29ms in a benchmark published on dev.to. The same storage change made single-term queries several times slower, so teams whose searches are mostly one or two words would pay for the upgrade.

Publishers:dev.to

Reality

Evidence55
Adoption
Not scored
Hype gap+25
Incentives
Not scored
Confidence50
buildOne report1 publisher

Gemini File Search's 'pay once at indexing' pricing still billed LiveReview for reasoning on every query

LiveReview's Maneshwar says Gemini File Search cost over 50 cents a review run because a reasoning model performed each search. A local index and a cheaper model brought runs down to 4 cents.

Publishers:dev.to

Reality

Evidence45
Adoption10
Hype gap+15
Incentives35
Confidence40
buildOne report1 publisher

Handed the right tool in a five-item shortlist, a small model picks it 19 times in 20

A two-stage eval forces every shortlist to hold the correct tool plus its four strongest BM25 siblings. Selection accuracy comes in at 90 to 97 percent. That puts the 5 percent paraphrase recall on the critical path.

Publishers:dev.to

Reality

Evidence55
Adoption
Not scored
Hype gap0
Incentives35
Confidence55
buildOne report1 publisher

Paraphrased requests drop BM25 tool recall to 5 percent across a 100-tool pool

Deferred tool loading assumes retrieval puts the right tool in the shortlist. A BM25 harness over 100 synthetic enterprise tools and 200 tasks says it does that 5 percent of the time when the user does not use your words.

Publishers:dev.to

Reality

Evidence55
Adoption
Not scored
Hype gap+10
Incentives25
Confidence60
buildOne report1 publisher

JudgeStack stores today's ban and the dated announcement that imposed it as separate documents

A Magic: The Gathering rules agent works out which source is entitled to settle a question before it answers. Its evaluation pits 496 structured documents against a single BM25 pass over the same corpus, graded blind.

Publishers:dev.to

Reality

Evidence45
Adoption12
Hype gap−10
Incentives65
Confidence50
buildOne report1 publisher

Refusing a BigQuery key cost findmypylibrary 15,000 requests per snapshot

The build log for a Python package finder shows a day-one no-key rule pushing the download data onto a public JSON file and 15,000 PyPI API calls per refresh, held to a few minutes by a semaphore of 25.

Publishers:dev.to

Reality

Evidence42
Adoption10
Hype gap+12
Incentives55
Confidence45
buildOne report1 publisher

Stamping a trap chunk id into every negative test turned two false passes red

An embedding swap to bge-large made two long-failing negative tests pass because the retriever stopped surfacing the trap chunks at all. A chunk-id check in CI gives the suite a third verdict, test did not run.

Publishers:dev.to

Reality

Evidence45
Adoption12
Hype gap+20
Incentives65
Confidence50
buildOne report1 publisher

PlanetScale's TIN searches a Postgres row the moment its transaction commits

The extension puts BM25 ranking behind an ordinary Postgres index, so a newly committed row is searchable without a trip to an Elasticsearch cluster. PlanetScale's own benchmark reports 199 queries per second against ParadeDB's 7.9.

Publishers:runtimewire.com

Reality

Evidence46
Adoption
Not scored
Hype gap+31
Incentives82
Confidence57
buildOne report1 publisher

Reading faithfulness against context recall tells you which half of a RAG pipeline broke

The four RAGAS-lineage metrics were built to separate a retriever's failures from a generator's. Read in pairs, they also expose the case where the model skipped the context and got the answer right anyway.

Publishers:dev.to

Reality

Evidence22
Adoption
Not scored
Hype gap+35
Incentives
Not scored
Confidence35
buildOne report1 publisher

Fusion of body, vector and prose signals, not just the word "refunds," carries billing_credit_note into the top six

Name-only BM25 matched nothing for "money we gave back to shoppers". The description channel put the right table second and embeddings put it twenty-second, and reciprocal rank fusion let the blind channel cost the answer nothing.

Publishers:dev.to

Reality

Evidence64
Adoption15
Hype gap−10
Incentives60
Confidence58
buildOne report1 publisher

Chunkless RAG relocates the retrieval decision into the layout parser

A dev.to post argues that IBM's chunkless RAG only helps on documents whose structure a parser can actually recover, and that on scanned PDFs and one-table wikis the agent ends up walking a tree the parser invented.

Publishers:dev.to

Reality

Evidence28
Adoption
Not scored
Hype gap+34
Incentives44
Confidence36
buildOne report1 publisher

Graft gates coding-agent recall behind a STRONG, WEAK or MISS verdict

An Apache-2.0 memory layer for coding agents returns a candidate only when several signals agree, and it labels every answer STRONG, WEAK or MISS so the calling agent has to branch on confidence before reusing an old fix.

Publishers:dev.to

Reality

Evidence30
Adoption
Not scored
Hype gap+15
Incentives65
Confidence52
buildOne report1 publisher

Enriching 1,245 tables with an LLM pushed the word contact into 1,072 documents

The generated descriptions were accurate and specific, and indexing them beside the table names dropped BM25's IDF for the term contact to 0.15, about what the same index gives words the tokenizer never strips out.

Publishers:dev.to

Reality

Evidence58
Adoption
Not scored
Hype gap+12
Incentives32
Confidence57
buildOne report1 publisher

Claude's memory list hands back 20 full items per call against a 10,000-memory store

The same platform ships regex and BM25 ranking in front of its tool catalog, while its memory store offers only depth, limit, page, path_prefix and view, so ranking memories is work the developer supplies.

Publishers:dev.to

Reality

Evidence66
Adoption
Not scored
Hype gap−5
Incentives70
Confidence62
buildOne report1 publisher

A Postgres default of 40 caps how many neighbors your vector search can return

pgvector ships hnsw.ef_search at 40, the size of the candidate list its graph walk keeps in flight, and a top-20 query with a tenant filter can come back with two rows and no error to explain it.

Publishers:dev.to

Reality

Evidence62
Adoption
Not scored
Hype gap+12
Incentives20
Confidence58
buildOne report1 publisher

Q2D-Web scores your retriever against labels only Perplexity can see

Perplexity pairs about 190 million web pages with 69,721 agent-written queries, which is closer to production than most retrieval tests get, and keeps the corpus, queries and labels private so it stays the only party able to run it.

Publishers:runtimewire.com

Reality

Evidence50
Adoption15
Hype gap+15
Incentives88
Confidence55

Earlier coverage