fal scales media search to 300M+ assets on turbopuffer
fal shipped search in Assets so users and their agents can find and reference previously generated media assets. turbopuffer runs filtered hybrid search over 300M+ videos, images, and 3D models at millisecond latency.
300M+
media embeddings
225K+
namespaces
17ms
p50 latency
Before turbopuffer, it was basically impossible to search media generations. Now a user or their agent can type a query or upload an image and very quickly find the reference image they need.
Noah Solomon, Engineer
fal is a generative media platform for developers, with access
to 1K+ image, video, audio, and 3D models.
fal Assets gives developers a
single place to store, browse, and search the hundreds of millions of images,
videos, and 3D models they generate across fal. Search in fal Assets is powered
by turbopuffer.
Why turbopuffer?
fal users can generate assets in the fal UI or via an API. fal Assets currently
only stores media generated through the UI. This already accounts for over 300
million assets, and fal expects this to scale considerably once they begin
indexing media generated via fal's API.
On top of scaling to billions, the search infrastructure needed to meet these
requirements:
Consistent reads: assets must be retrievable as soon as they are saved so
search results don't miss recently created content.
Hybrid search: full-text search over prompts and captions, semantic search
over media embeddings.
Large inclusion lists: searches on fal Assets scope results with inclusion
lists of 1K+ IDs. These filters must not significantly impact latency or
recall.
Per-tenant data isolation: fal must ensure that a user can't surface other
users' assets. This should be enforced at the infra layer, not in the
application code.
turbopuffer was the only search engine they evaluated that met those
requirements at their current and planned scale.
fal already operates at a huge scale. We chose turbopuffer because they serve many companies not only at our current scale, but where we plan to be in the future.
Rehan Sheikh, Engineer
turbopuffer in fal
When a newly generated asset is saved to fal Assets, fal uses open-source
SigLIP2 models
to embed the media, input prompt, and captions. Embeddings take a few seconds to
generate and are upserted to turbopuffer alongside metadata attributes.
Users can search for images via text queries or by uploading reference images or
videos. fal embeds the query and uses hybrid search on turbopuffer, running
BM25 full-text search over prompts and captions and
vector ANN over embeddings.
Most searches also scope results with large inclusion lists, sometimes hundreds
or thousands of allowed IDs, based on categories, tags, and permissions.
turbopuffer represents those sets as simple bitmaps and
intersects them directly, so the query stays fast as the lists grow.
fal uses a namespace-per-tenant design in turbopuffer, isolating each account's
assets in its own dedicated search index. Only active
namespaces are warmed into an NVMe SSD cache for
17ms p50 latency. Everything else stays on cheap object storage.
0:00 / 0:00
0:00 / 0:00
Log
fal shipped search in Assets so users and their agents can find and reference
previously generated media assets. turbopuffer runs filtered hybrid search over
hundreds of millions of images, videos, and 3D models:
300M+ media assets indexed
225K+ isolated search namespaces
17ms p50 filtered hybrid search
99.5% average recall@10
MiniMax H3 Max is fal's post-trained variant of
MiniMax H3. It generates video faster than it can be watched, making continuous
video output possible for the first time.
fal now indexes every H3 Max continuous output video on turbopuffer so those
streams are searchable in Assets. For each video, fal samples frames, embeds
each frame, and stores the centroid of those frame vectors as a single embedding
per video. They also use Marlin, a small
vision-language model (VLM), to caption each clip with a spatial scene
description and time-ranged events, then index those captions for hybrid search.
What's next for fal
fal is expanding Assets to support larger scale, more features, and better
search:
API-scale: UI generations are only a small portion of fal's workload. fal
will begin indexing API-generated media in turbopuffer, which they expect will
scale their workload by 100x.
Organization search: Today, each fal account has its own turbopuffer
namespace, and multiple accounts can belong to a single organization. fal
plans to allow team members to search assets belonging to the whole
organization while respecting account-level permissions.
Better multimodal embedding: For security reasons, fal only uses
open-source embedding models running on their own GPUs. Currently, assets
spanning every media modality (including images, videos, and 3D models) are
embedded with a SigLIP2 vision-language encoder. fal versions embeddings so
they can re-embed when stronger open-source multimodal models become
available.
We will continue to update this log as fal's turbopuffer usage evolves.