O&A Consulting · Answer

Should you ask an LLM how similar two things are?

Usually not, if you can compute it instead. Similarity between structured things has a definition you can write down — which attributes count, how each is compared, how they're weighted — and computing it buys three things a model judgement can't: it's reproducible, it's decomposable (you can say which attributes drove the match), and it's auditable. Let the model do the parts that need language: normalising inputs, and explaining the result afterwards.

SimilarityEmbeddingsLLM JudgesRetrievalDeterminism
01 Answer

What you give up by asking

"How similar are these two deals, on a scale of 1 to 10?" gets an answer immediately, and the answer has three defects that only surface later:

  • It moves. Same pair, same prompt, different run, different number. Any threshold built on it is a threshold on a moving quantity, which means your alerting is partly noise.
  • It doesn't decompose. The useful output is almost never the score — it's which attributes made these comparable. A single number can't be broken back down, so the model is asked to explain itself, and that explanation is generated after the fact rather than derived from the computation.
  • It imports a definition you didn't choose. Similar in what sense? Structure, size, sector, timing, counterparty? Unless you said, the model picked — differently for each pair, invisibly.
02 Answer

Write the definition down instead

Nearly always, "similar" is a weighted comparison over attributes you can enumerate. Making that explicit turns a judgement into a calculation:

  • Which attributes count. Sector, size band, structure, timing, counterparty overlap — whatever the domain expert says matters.
  • How each is compared. Exact match, numeric distance, set overlap, embedding distance for genuinely free text.
  • How they're weighted. The part worth arguing about, and the part that should live in a versioned file rather than in a prompt.

Now a match explains itself: these two scored high on structure and counterparty overlap, low on size. That is a sentence an analyst can disagree with productively — and disagreement produces a weight change, which is a durable improvement, rather than a prompt tweak nobody can evaluate.

03 Answer

Structural similarity when attributes aren't enough

Some resemblance isn't in the attributes at all — it's in how a thing sits in a network. Two counterparties with nothing in common on paper can occupy the same structural position: same kind of neighbours, same role in the flow.

That's computable too, with graph measures and structural embeddings, and it's still deterministic and still decomposable. When you can corroborate it — for example two independent algorithms drawing similar community boundaries on the same graph — you have convergent evidence rather than one method's opinion. State the caveat honestly when you do: methods reading the same input aren't fully independent, and some agreement is guaranteed by construction.

04 Answer

Where the model genuinely earns its place

Not judging the comparison — feeding it and explaining it:

  • Normalisation. Turning messy prose into the structured attributes the computation needs. This is real language work and models are good at it.
  • Free-text fields. Where an attribute really is unstructured, an embedding distance is the right comparator — a computation, not a judgement.
  • Explanation. Once the computation has produced a decomposed result, having a model narrate it in plain language is genuinely useful, and it's grounded in numbers that exist independently of the narration.
  • Cases the definition doesn't cover. Route them to a person. An honest "this doesn't fit the model" beats a confident number.
05 Answer

The general rule

This is one instance of a rule worth applying across an agent system: never ask a model what code can answer. Deterministic checks are reproducible, cheap, and explainable; model judgements are none of those and should be spent only where language really is the problem.

The same logic decides where an LLM belongs in evaluation — mechanical checks first, a model only where meaning is genuinely at stake.

06 Further

Where this is argued properly

The short answer above is ours, and we've written at length about how we got to it: