This is the exact bug I'd expect and most writeups skip it. Good catch showing the raw distances instead of just the fix. One thing worth adding: 1 - distance only looked like similarity because MiniLM happens to emit unit-length vectors. That's a property of that model, not of Chroma or your retriever code. Swap embedding models later and if the new one isn't reliably unit-norm, the scores don't break loudly, they just get quietly worse. Normalizing embeddings yourself right after generation, even when the model already does it, means that failure mode never comes back.