Cold start for new items

Cold start means there is no history to learn from. A text embedding made from the change stream put each new item in the index within 1.3 s, instead of after the nightly retrain.

Play a level

See it on the board

The same traffic runs on two boards. The simulator measured both when this page was built.

Board to show
HTTP/2HTTP/2SQLUsersUsersAPI server1 vCPU · 1 GBPostgres2 vCPU · 4 GBSearch index4 vCPU · 16 GB
HTTP/2HTTP/2SQLUsersUsersAPI serverPostgresSearch ind…
Vectors come only from clicks: misses a goal
GPU server (L4)HTTP/2HTTP/2SQLgRPCgRPCUsersUsersAPI server1 vCPU · 1 GBPostgres2 vCPU · 4 GBSearch index4 vCPU · 16 GBEmbedding m…1 vCPU · 24 GB
GPU server (L4)HTTP/2HTTP/2SQLgRPCUsersUsersAPI serverPostgresSearch in…Embedding…
Text embedding for each new item: meets the goals
See it on the board
Measure Goal Vectors come only from clicks Text embedding for each new item
p99 latency (Browse) under 100 ms 3.5 ms Pass 3.5 ms Pass
p99 latency (Listings) under 200 ms 6.7 ms Pass 6.7 ms Pass
Data age under 30 s 119.9 s Fail 1.3 s Pass
Monthly cost 84 USD/mo 604 USD/mo
Error rate 0% 0%

Key numbers

Default part values from the catalog. The mini board has 50 new items/s and a limit of 30 s to find them.
NumberValue
Embedding call, median150 ms
Searches per second, one vector index10,000 ops/s
Vector search, median0.3 ms
One change feed keeps serving in stepTap or press Space to change the write paths

Two write paths · 4 of 16 served features differ from training

How it works

A recommender learns from behavior: what people click and buy. A new item has no behavior. The model has nothing to learn from, so the item gets no score and does not appear in results. Until the next retrain, usually one night later, the item is invisible.

For a marketplace, this is a real loss. In the mini board sellers list 50 new items each second. Item vectors come from clicks, so none of them can appear. New items must be findable within 30 s. A listing must save within 200 ms at p99.

The item text gives a usable vector at once. An embedding model turns the title and description into a vector that places the item near similar items. The system reads each new listing from the change stream, embeds it, and writes the vector to the item index. The item appears in results about 1 s later. In the run each new item reached the index in 1.3 s.

Keep the embedding off the listing path. If the listing request waited for the GPU, a slow model would make the save slow. The change stream does the work in the background.

The text vector is only a start. When clicks arrive, the click-based model can take over for that item. Mix the two scores for a while, and watch whether new items get a fair chance.

In the levels you give new items a vector from their content and check how fast they are findable.