Out of memory on this device? Lighter builds, smallest last: 20,000 photographs · 2,000 photographs · 2,000 and a smaller model. The last one has no anchor measured for its runtime yet, so it will load but retrieve badly. That is the point of the anchor.
Try one, and watch the scores as much as the pictures:
Reply
Retrieved by reading your message through the same weights that are writing the reply. That read finishes long before the sentence does, so the pictures arrive first.
Ask something with a scene in it and the scores spread out. Ask the model about itself and you will keep seeing the same photographs: a question with no visual content projects to near the middle of the gallery, where the closest images are simply the ones nearest the average of all of them.
The line between those two is not abstract against concrete, it is whether the words name anything physical. Semiosis inside your frozen state is as abstract as a sentence gets, and it retrieves bodies curled inside suitcases and drawers, because frozen and inside are things a photograph can be.
Measured against these 123,287 images, a scene runs 0.47 to 0.54 with a spread of about 0.06 across the twelve results. The frozen-state question and a question about the model itself both sit near 0.41 across roughly 0.05, and the second of them actually scores higher. So the top number alone will not tell you which is which. What separates them is that one of them keeps returning the same photographs whatever you ask.
Why two reads rather than one? Because the head is fitted on plain text, and the chat format the reply needs is a different distribution. Feeding the templated prompt to the head instead of your bare message moves the median rank of the right photograph from 187 to 41,014 out of 123,287, and the two vectors have a cosine of 0.10. Sharing a single pass would be tidier and it does not work. Same lesson as the four kilobytes below: a linear read-out is fitted to one distribution of states and does not survive being handed another.
There is a coincidence worth noticing. Ask it what it is thinking about and it will say something like the world around me, and the people I've met. Meanwhile the search, having nothing visual to work with, falls to the centre of the gallery. We went and looked at what is there: of the eight images nearest the centre, seven are people and five of those are single portraits facing the camera. The sentence and the pictures are produced by completely different machinery, and with nothing to go on both fall back to the same thing.
Steering
An axis is the difference between two sets of sentences, measured in the space the search happens in. Adding it to your query reorders the gallery. It costs one vector addition and about two kilobytes; the model is not touched and nothing is re-encoded.
| run | retention | results |
|---|
The four kilobytes
A head fitted against one runtime does not transfer to another unchanged. Measured on an earlier head against this same quantized runtime, the uncorrected version retrieved at R@1 0.015 where the runtime it was fitted on got 0.230, and the failure was silent: the rankings still looked confident. One mean vector of about four kilobytes restored it to 0.195. The correction is per runtime rather than per visitor, so it is measured once and shipped, and it was applied before your first search.
What this does not do
Steering here acts on the search query, not on the model's generation. The research programme also measured a direction in the residual stream that moves a model's refusal disposition, in both directions, and the finding worth leading with is the restoring one: a calibrated two-kilobyte vector puts refusal back into a model that had it removed. We also measured that the removal edit perturbs the model about eighteen times less than switching quantizers does. Those belong in the papers. They are a different artifact with a different risk profile, so this page exposes no hook into generation at all, and the reply above is produced by the model unmodified.