Napkin Math #23: Serial & Dumb > Smart & Random
In the past few months, we’ve made a push for blog posts at my company turbopuffer. We’re building a search engine that powers Anthropic, Cursor, Notion, Ramp, and many more.
A common topic in recent blog posts is the navigation between choosing “smart & random” or “dumb & serial” algorithms. We end up choosing the latter again and again, as it allows for SIMD-maxxing, better speculation, and IO that can do high throughput, high latency (S3, NVMe SSDs). Throughput > latency seems like the right development to bet on, and here’s a few examples of how it applies to turbopuffer:
WAND vs MAXSCORE for skipping in posting lists in inverted indexes for FTS. We now have a close to SOTA text search engine.
ANN v3 which we scaled to 100B+ vectors @ 200ms p99, Nathan discusses our choice of SPFresh over e.g. HNSW. This is SOTA as far as we know!
Object storage native database, where everything is optimized for few roundtrips assuming high network throughput