Embedding runtime verification

Same model.
Different runtime.

Your health check is green. The dimensions match. But does TEI return the same embedding as SentenceTransformers—under real traffic, at real lengths, in real batches?

pip install embed-parity
View source ↗
Same modelPass
Same revisionPass
Correct dimensionPass
Health endpointPass
Concurrent parityFail
Interactive failure lab

The same text should not care who arrived beside it.

Switch request patterns and runtime builds. These are measured cosine similarities from the pinned Qwen3 reproduction of open TEI issue #882.

Minimum cosine 1.0000
Result Stable

One request at a time produces the isolated reference embedding.

What actually broke

“No padding” accidentally became “no causal mask.”

Padding only fills shorter rows. A causal mask is separate: it controls which token positions may look ahead. Equal-length requests need no padding, but Qwen3 still needs its causal mask.

databaseindexesspeedqueries
oceancurrentsshapeweather
Padding maskNot needed
Causal maskSkipped by bug
Reproduced, not simulated

A current upstream regression ordinary checks miss.

Pinned model revision. Pinned container digests. Identical probes. The proposed patch changes only the broken condition.

Request path Official 1.9.3 PR #883 build
Client list batch1.00001.0000
Concurrent router batch0.15861.0000
Unequal-length control1.00001.0000
One command, layered evidence

Check the embedding behavior you actually deploy.

terminal
$ embed-parity compare \
  --model Qwen/Qwen3-Embedding-0.6B \
  --revision 97b0c614... \
  --tei http://localhost:8080 \
  --concurrent-requests 4 \
  --concurrency-trials 3

Concurrent server batching
  responses compared               12
  minimum cosine                   0.266183
  divergent responses              6
                                     FAIL