IMHO the documents retrieved only via vector search must be assigned a value of 0 for the bm25 part before applying the fusion, by doing that the last bm25 result will rank up as the normalized score won’t be zero.
relativeScoreFusion just normalizes linearly from [worst_score, best_score] to [0, 1]. The problem is that if a document does not have a BM25 score, we simply cannot scale it.
Is that a bug or is it by design?
It is more a limitation of the current design. In principle, you could compute the missing vector/Bm25 scores before fusion, but it is not trivial