Top-1, top-5, and top-10 parity on the deterministic SciFact sample.
A healthy server.
Different vectors.
The model, revision, dimensions, and health endpoint all matched. Normal requests passed. Client batches passed. Concurrent router batching collapsed cosine similarity to 0.1586.
1.0000PASS1.0000PASS0.1586FAILSame model · Same dimensions · Healthy endpoint
embed-parity is a differential test for catching silent embedding changes across runtimes, batching modes, prompts, pooling, and production workloads.
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.
One request at a time produces the isolated reference embedding.
“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.
A current upstream regression ordinary checks miss.
Pinned model revision. Pinned container digests. Identical probes. The proposed patch changes only the broken condition.
Check the embedding behavior you actually deploy.
$ 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
Compare the search results, not only the vectors.
Bring representative queries and documents. The workload report compares each runtime independently and shows exactly which rankings changed—without claiming retrieval quality when no relevance labels exist.
Top-5 overlap, despite mean vector cosine remaining at 0.9959.
embed-parity workload --input workload.jsonl --save-baseline baseline.json --html report.html