What the floor changes
Hold the corpus and the query fixed and move only the floor. The corpus never
changes. What changes is which question the index can answer without misleading
the reader.
| Query | Floor 0.40 | Floor 0.25 (live) | Floor 0.10 |
| Broad, answerable | Nothing | Related articles | Related articles plus weak matches |
| Off topic | Nothing | Nothing | Confident, irrelevant results |
| What the reader concludes | Search is broken | Search found what exists | Search cannot be trusted |
Score bands for this model on this corpus
These bands describe OpenAI text-embedding-3-small over news
articles. They describe one system.
| Band | What a score there means | Putting the floor here |
| 0.70+ | Near duplicate: same story, another outlet | Returns almost nothing. This band is for dedup |
| 0.40 to 0.70 | Highly related: same story, different angle | High precision, and empty results on fair questions |
| 0.25 to 0.40 | Clearly related: same topic, overlapping entities | The live floor sits at the bottom of this band |
| 0.10 to 0.25 | Loosely related: shared domain, weak overlap | High recall, and readers meet plausible wrong answers |
| under 0.10 | Noise | No filtering. Every query returns something wrong |
Why the floor sits at the bottom of its band
One bound is recorded and the other is not, which is worth saying plainly on a
page about how well numbers are known.
Off-topic queries top out around 0.08 to 0.09 on this corpus. That sets the
lowest defensible floor. Nothing records where fair questions begin coming back
empty, so there is no measured upper bound: 0.40 is the label on the next band,
not an observed cutoff.
What can be said is that 0.25 is the lowest value clearing the noise. Raising a
floor trades recall for precision, because a reader who gets "no results" for a
fair question decides the search is broken.
How well this is known
The source comment says empirical tests returned 0.08 to 0.09, so it
claims a run. No fixture, eval or log in the repository carries that number. No sample size, corpus snapshot or date sits behind it. Treat it as the
author's calibration note, and re-measure before relying on it.
The constant kept deliberately separate
SEMANTIC_SIMILARITY_NEAR_DUPLICATE = 0.7 belongs to the dedup
pipeline alone. Holding it apart from the search floor prevents one specific
failure: someone tightens duplicate detection, a single shared number moves, and
search quietly returns nothing while every component still reports healthy.
What carries to another system
The principle carries. A retrieval system needs an absolute relevance
gate, because ranking alone cannot say that every candidate is wrong.
The method carries. Derive the gate from the top score of queries you know
should fail, and record that ceiling next to the floor so the number stays
re-derivable.
The band does not carry either, and the reason matters. The source
comment credits OpenAI's embeddings guidance with putting useful relatedness near
0.2 to 0.3. That guidance says no such thing. It recommends cosine similarity and
adds that the choice of distance function rarely matters, and it publishes no
threshold at all. No vendor number stands behind this band. Checked against
OpenAI's embeddings guide on 2026-08-24.
The exact value does not carry. 0.25 describes this chunking and this
corpus. Cosine scores are not comparable across embedding models. Across distance
measures the difference is scale, not ranking: these embeddings are unit
length, so cosine, dot product and Euclidean distance order results
identically. A floor of 0.25 in cosine is simply not the number 0.25 in
another measure.