march changelog
tpuf.link/chlog
Posts by turbopuffer
a 3D lego model of turbopufferβs mascot, puffy, is held up against an aquarium backdrop. puffy is right at home amongst the aquatic life.
A group of people enjoy an aquarium scene, admiring fish swimming in vibrant blue water under a dome structure.
An event banner highlights βA night at the aquarium,β while guests explore an underwater tunnel with vibrant lighting.
puffy was right at home at our AI night at the aquarium in London
coming to {a city near you}
each object store has its tradeoffs
GCS has great throughput but limits per-object replaces to 1/s. S3 has no rate limit, but lower throughput
we coalesce writes into larger WAL commits to respect GCS, but we've now increased commit cadence on S3 for ~2.5x lower write latency
ElevenHacks #4 β turbopuffer x ElevenLabs
π₯ $8,192 first prize
π₯ $4,096 second prize
π₯ $1,024 third prize
challenge drops tomorrow at 9a pt / 12p et
sign up below ($128 in tpuf credits to get you started)
tpuf.link/11hacks
Code snippet for configuring a multivector database entry, including title, image URI, and embedding details for text and images.
new: multiple vector columns
store multiple embeddings for the same document - each with its own dimensions, types, and ANN index
multimedia β multiple vectors
docs: tpuf.link/multi-vec-cols
new to tpuf: ranking by attribute for full-text search
incorporating attributes into the MAXSCORE skipping algorithm β more levers for first-stage search relevance
docs: tpuf.link/rba-docs
february changelog
tpuf.link/chlog
A chart showing p90 query latency performance gains for regex and glob filters after the introduction of a trigram regex index on turbopuffer. Latency improved from 115 milliseconds to 33.8 milliseconds for a representative regex filter and from 267 milliseconds to 34.2 milliseconds for a representative globbing filter. The chart suggests that while these kinds of filters already worked, now they puff!
new in tpuf: regex indexes
regex and glob filters can now use a trigram index to avoid full-table scans
tpuf AND filters are now up to 30% faster
Superhuman Mail increased indexed email history from 1 β 5 years per user on turbopuffer
"I will always pick a product with great reliability over a product with great features. turbopuffer has both" - Rafael Melo Cardoso, Engineering Manager
tpuf.link/superhuman
weβve reduced query prices by up to 94%, thanks to infrastructure improvements we've made under the hood
puff harder, for much less
A series of three grouped bar charts displays the latency in milliseconds for filtered BM25 queries over 5 million documents before and after optimization, showing up to 20% speedups depending on query when a 1% matching filter is applied.
78% of tpuf text searches include a filter. they are now up to 20% faster
before β always score first, then filter
now β filter first (when cheaper), then score
queue.json on object storage is all you need to build a reliable distributed job queue
β FIFO execution
β at-least-once delivery
β 10x lower tail latencies
tpuf.link/queue
Vercel's GTM engineers built an AI agent that searches across Gong, Slack, and Salesforce - helping sales work deals with better context
"I realized I could index Vercel's entire GTM corpus on turbopuffer with just my credit card." - Drew Bredvick
tpuf.link/vercel
January 2026 changelog list on dark background detailing FTS v2 speedups, turbopuffer MCP beta, token matching, permissions guide, stopword change, and group_by increase
january changelog
tpuf.link/chlog
Python code snippet demonstrating a ContainsAnyToken filter with aggregate and filters fields for counting matching documents on an arbitrary BM25 query
new: ContainsAnyToken filter
return documents that match any token in the query string
faster than BM25 when you just need a binary match (e.g. "showing 36 of 131,072" in your search UI) as it skips score computation entirely
docs: tpuf.link/containsany
Rust code snippet showing before/after. HashMap lookup replaced by precomputed nested array access for faster range retrieval. before: HashMap lookup at each step in binary search self.sstables.get(table_id).unwrap().range after: precomputed in parallel vec self.level_ranges[i][j][k]
8.3% of query CPU in our largest (~4 TiB) tpuf namespaces was being spent on hash-map lookups to figure out which files might contain a key range
fix: precompute it in a flat array
trade memory for cache-friendly access β 8% faster puffin'
tpuf ANN v3, for when you need to index the entire web
100B+ vectors @ 50ms p50 / 200ms p99 latency
blog: tpuf.link/ann-v3
BM25 queries use an inverted index: each search term maps to a posting list of matching document ids
tpuf now dynamically adjusts the encoding of postings lists based on density, like roaring bitmaps
result β up to 26% faster search for queries whose terms match many documents
turbopuffer December 2025 changelog π§± Redesigned inverted index structure for faster FTS queries π€ New object storage-native indexing queue for up to 10x faster queue time π¦ kNN exact search for 100% recall on filtered vector search queries πͺ£ Return a max number of search results per attribute value using limit.per π¨π¦ AWS ca-central-1 (Montreal) region π Cross-region backups guide π€ Link multiple orgs to a single account for unified billing, SSO, and roles [opt-in, beta]
december changelog
tpuf.link/chlog
for FTS v2, we redesigned our inverted index structure
β’ tighter compression
β’ less KV overhead
β’ better MAXSCORE interaction
up to 10x smaller indexes β up to 20x faster text search!
tpuf.link/fts-index
we modeled BM25 query latency across varying term counts, document counts, and top_k values.
takeaways:
- sometimes longer queries are *faster*
- the longer the query, the less efficiently it scales
- fitted curves on raw data are immensely gratifying
tpuf.link/bm25-latency
Line chart showing max indexing queue wait times peaking near 30 minutes before dropping to steady ~1 minutes, with a max latency marker at 57.55s around 15:04:30
we rolled out a new indexing queue on all tpuf shared regions
~10x lower index queue time β new documents get indexed sooner β faster queries on new data with less WAL scanning
built entirely on object storage, no kafka
(chart: max create_index time in queue, gcp us-east4)
TELUS indexes 25,000+ AI copilots on turbopuffer
"This doesn't exist without turbopuffer. If we used a traditional search provider, our bill would be in the millions each year." - Justin Watts, Distinguished Engineer
tpuf.link/telus
new: phrase matching
use the ContainsTokenSequence in your tpuf FTS queries to match documents on an exact phrase
docs: tpuf.link/phrase-match
Python- code snippet showing a turbopuffer query building a filtered aggregation: sum of total_lines_of_code grouped by programming_language, then printing results.
new: Sum aggregate function
combine it with group_by and filters for olap-style puffin'
yesterday: short human queries, scalar CPUs
today: long LLM queries, wide SIMD lanes
for FTS v2, we use a vectorized MAXSCORE algorithm instead of WAND, because dumb & serial beat smart & random algorithms on modern CPUs
tpuf.link/maxscore
turbopuffer logo alongside playerzero logo, stats below: "18x faster", "1B+ documents", "25k+ namespaces" on a dark background.
PlayerZero's AI retrieves and reasons over code and logs to debug large codebases.
"We went from 3 minutes to <10 seconds, with much better recall, which means fewer agent loops." - Maria Vinokurskaya, Founding Engineer
tpuf.link/playerzero