A segment check costs the same at any size. Finding the closest audience does not.

Insights, Updates11 Aug 2026Damian Naglak
A segment check costs the same at any size. Finding the closest audience does not.

Segment targeting asks one question: is this user in list 12345. Embedding targeting asks which of my audiences this user is closest to. One of those is a lookup. The other is a search.

With segments somebody drew the line in advance, so a user is on the list or off it and the auction only has to check. With vectors there is no list and no line. Every user has some score against every audience, nothing is in or out, and the only way to decide is to rank everything and take the top few. So matching on meaning means finding the closest, and finding the closest is a different job from checking membership. Databases are fast on huge tables for two reasons. The rows are kept in order, so finding one is jumping straight to it. And they are grouped into chunks whose contents are known, so most chunks never get read at all: if a chunk holds only values between 10 and 20 and you asked for 50, it is thrown away untouched. A billion rows, and the database reads almost none of them.

Neither trick works on vectors. Keeping things in order needs something to order them by, and closest has nothing, because it depends on a question that arrives later and is different every time. Whatever order you pick, the next request wants another one. Skipping groups fails for its own reason: to throw a group away you have to be certain nothing inside it is closer than what you already found, and with hundreds of numbers per vector the distances all come out similar.

So you are left comparing against all of them. A million vectors at 3,072 numbers, four bytes each, is twelve gigabytes to read for one bid request. Nobody does that. Everyone gets around it the same way: group the vectors by closeness before any request arrives, then only look at the group the request lands in. That saves almost all the work, and it sometimes gives you the wrong answer. For bidding it lands somewhere specific. Today the hard part happened days earlier, when someone worked out who belongs in the audience and wrote it down, so the auction only reads the answer. Matching on meaning moves the finding into the auction itself, and what a bid costs stops being flat. Twice the audiences, twice the work, on every request.

Next: the three ways people organise vectors in advance, and what each one gets wrong.