How does it work?
Two retrievers run against the same documents. The keyword side matches literal terms weighted by rarity; the semantic side matches embeddings by meaning. Each returns a ranked list, and a fusion step combines them into a single ordering.
The hard part is the merge, because the two scores are not comparable — a cosine similarity and a term-frequency score are different units. The common answer is to ignore the scores and combine the ranks instead, which sidesteps the calibration problem entirely.
