How it works
How a model decides two images are alike
Most "this resembles that" judgements in image models are one dot product, and knowing what it ignores explains some strange results.
When a vision model needs to decide whether two images are alike, the calculation underneath is usually one formula: cosine similarity. It compares the angle between two embedding vectors and returns a number between -1 and 1, with 1 meaning the vectors point in exactly the same direction.
What it measures, and what it skips
Cosine similarity is computed from the dot product of two vectors, divided by the product of their lengths - a normalisation step that cancels out magnitude entirely. That is the detail worth remembering: two embeddings pointing in the same direction score as maximally similar regardless of how long either vector is.
Magnitude in an embedding often correlates with something like overall signal strength or intensity of activation - not a property with a clean human name, but not nothing either. Cosine similarity throws that away on purpose, because for most tasks direction, not length, is what carries the useful signal - it is what makes the measure robust to things like overall brightness or contrast scaling that shouldn't change what an image "is."
One consequence worth knowing
That design choice has a specific, checkable consequence: an over-exposed photo and a well-exposed photo of a similar scene can produce embeddings that point in a very similar direction even though their raw intensity, and therefore their vector length, differs substantially. Measured by cosine similarity, the model can register them as "similar" in a way that a length-sensitive measure would not.
This is not a flaw exactly - it is the intended behaviour of the metric, chosen because ignoring magnitude generally helps more than it hurts. But it means a "these two images are alike" result from any pipeline using cosine similarity is a claim about direction in embedding space specifically, not about every property the raw pixels differ on, and exposure is one of the properties that most reliably slips through.
Where this shows up
This same measure sits underneath comparisons in latent space more generally - clustering, nearest-neighbour lookups, and any "similar to" feature a tool might offer - and the broader idea of a latent space, what a position in it means, and why nearby points tend to get similar scores, is covered separately in latent space, explained with a rating tool in mind. It is also the same underlying step that produces the embedding in the first place, described from the encoding side in what an image becomes before it is scored. CLIP-style models are the most common source of the embeddings being compared this way, and how that particular architecture became the default for scoring is worth reading on its own.
None of this changes how Rate Cock or any other scoring tool presents a result to you - cosine similarity is typically an internal step, not a number shown on screen - but it explains why two photos that look, to a person, meaningfully different in brightness or exposure can still be treated as close by a system working underneath. Whether that closeness translates into a similar score depends on the scoring head reading the position, a separate step covered by Measure My Cock's data notes, and a question a human reviewer answers by looking at the photo directly rather than computing an angle, which Rate Penis's review notes cover from that side, while Penis Rater covers what a "similar photo" feature can and cannot promise a user in practice.