Why BM25 queries with more terms can be faster (and other scaling surprises)January 07, 2026β’Adrien Grand (Engineer)BM25 full-text search has very different scaling characteristics than vector search. Vector search latency is generally a function of vector dimensions, top-k, the size of the dataset, and the presence of filters. BM25 latency, on the other hand, also varies a lot by query, and in some surprising ways: Sometimes adding a new term to a query actually makes it faster The fastest query at top_k=10 may not be fastest at top_k=10000 This post discusses what I learned modeling BM25 query latencies across varying term counts, document counts, and top_k values. Background turbopuffer implements BM25 full-text search by indexing text data into an inverted index, a data structure that maps unique terms to the list of document IDs that contain these terms, which are called βpostingsβ. term posting list ββββββββββββββ βββββ¬ββββ β pufferfish βββββββββββββΆβ 1 β 2 β // "pufferfish" appears in few documents ββββββββββββββ βββββ΄ββββ ββββββββββββββ βββββ¬ββββ¬ββββ¬ββββ¬ββββ β fish βββββββββββββΆβ 1 β 2 β 4 β 6 β 9 β // appears in more documents ββββββββββββββ βββββ΄ββββ΄ββββ΄ββββ΄ββββ ββββββββββββββ βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬β β to βββββββββββββΆβ 1 β 2 β 3 β 4 β 5 β 6 β 7 β 8 β 9 β β’β’β’ // apears in many ββββββββββββββ βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄β ββββββββββββββ βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬β β be βββββββββββββΆβ 1 β 2 β 3 β 4 β 5 β 6 β 7 β 8 β 9 β β’β’β’ ββββββββββββββ βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄β ββββββββββββββ βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬β β or βββββββββββββΆβ 1 β 2 β 3 β 4 β 5 β 6 β 7 β 8 β 9 β β’β’β’ ββββββββββββββ βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄β term posting list ββββββββββββββ βββββ¬ββββ β pufferfish βββΆβ 1 β 2 β ββββββββββββββ βββββ΄ββββ ββββββββββββ βββββ¬ββββ¬ββββ¬ββββ β fish βββββΆβ 1 β 2 β 6 β 9 β ββββββββββββ βββββ΄ββββ΄ββββ΄ββββ ββββββββββ βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββ β to βββββββΆβ 1 β 2 β 3 β 4 β 5 ββ’β’β’ ββββββββββ βββββ΄ββββ΄ββββ΄ββββ΄β...
First seen: 2026-01-13 04:03
Last seen: 2026-01-13 14:05