Filters Exclude What Ranking Would Have Shown
Same query, same embeddings, one filter. Three of the top five yellow armchairs were out of stock; the in_stock pre_filter removed all three from the response and three deeper matches moved up.

A pre_filter removes rows from the response before the ranking reaches you. The diagram runs the query yellow armchair twice against a 118 image index with SigLIP image embeddings. The only difference between the two calls is one filters line.
Without the filter, the top five are ranked purely by similarity, and three of them are out of stock. With in_stock set to true, those three are gone. Two rows survive in their original positions and three items from deeper in the ranking move up to fill the rail.
The removed rows leave no trace in the response. A caller reading the filtered result sees five in-stock armchairs and has no signal that better visual matches existed. That is the trade a pre_filter makes, and it is the right trade when the user should never see the excluded item at all: out of stock, wrong region, no permission.
The alternative is to keep every match and rank the failing ones lower, which is a different decision with different failure modes. A demoted item still occupies a slot and still shows the user something they cannot buy. An excluded item is invisible and so is the reason it vanished. Pick one on purpose, and if your users report that a product they know you carry never appears in search, check the filter before the embeddings.
One more thing the run surfaced. The API warned that in_stock had no payload index, so filtering on it may be slow on a large collection. Declare a keyword payload index on any field you filter routinely.
What is real here: the photos are Pexels images with every photographer credited, the embeddings and queries ran against the live API, and the order is exactly what came back with the cache skipped on both calls. The prices and stock flags are demo catalog data generated for this corpus.
Run this on your own data
Mixpeek turns video, images, audio, and documents in your object storage into searchable, timestamped results through one API.
Search your own data

