docs=152 chars=1,468,630 chunks=2771 model loaded in 0.5s embedded 2771 chunks in 143.3s heading queries: 780 identifier queries: 309 paraphrase queries: 30 == single retrievers, MRR@5 == heading bm25=0.859 vector=0.493 ident bm25=0.773 vector=0.285 para bm25=0.566 vector=0.768 == rank weights 1/(k+rank): weight of rank 1 divided by weight of rank r == k | r=2 r=5 r=10 r=50 0 | 2.00 5.00 10.00 50.00 1 | 1.50 3.00 5.50 25.50 5 | 1.17 1.67 2.50 9.17 10 | 1.09 1.36 1.82 5.45 20 | 1.05 1.19 1.43 3.33 40 | 1.02 1.10 1.22 2.20 60 | 1.02 1.07 1.15 1.80 100 | 1.01 1.04 1.09 1.49 200 | 1.00 1.02 1.04 1.24 1000 | 1.00 1.00 1.01 1.05 == fused MRR@5 by k (equal weights) == k | heading ident para | mean 0 | 0.751 0.704 0.741 | 0.732 1 | 0.745 0.710 0.743 | 0.733 5 | 0.723 0.705 0.747 | 0.725 10 | 0.704 0.700 0.747 | 0.717 20 | 0.686 0.690 0.731 | 0.702 40 | 0.679 0.688 0.714 | 0.694 60 | 0.679 0.684 0.712 | 0.692 100 | 0.678 0.683 0.712 | 0.691 200 | 0.677 0.683 0.712 | 0.691 1000 | 0.676 0.683 0.712 | 0.690 best k by mean MRR: 1 (0.733); worst: 1000 (0.690); k=60: 0.692 spread (max-min of per-set MRR across all k): heading=0.075, ident=0.028, para=0.035 == how often the fused top-1 equals each retriever's top-1 (all queries pooled) == k | =bm25 top1 =vec top1 either 0 | 0.732 0.592 1.000 1 | 0.718 0.580 0.973 5 | 0.676 0.541 0.893 10 | 0.659 0.519 0.853 20 | 0.636 0.514 0.826 40 | 0.631 0.507 0.813 60 | 0.631 0.506 0.812 100 | 0.631 0.506 0.812 200 | 0.630 0.506 0.811 1000 | 0.630 0.506 0.811 == worked example: A = rank 1 in one list only; B = rank 5 in both lists == k= 0: A=1.00000 B=0.40000 -> A wins k= 1: A=0.50000 B=0.33333 -> A wins k= 5: A=0.16667 B=0.20000 -> B wins k= 10: A=0.09091 B=0.13333 -> B wins k= 20: A=0.04762 B=0.08000 -> B wins k= 40: A=0.02439 B=0.04444 -> B wins k= 60: A=0.01639 B=0.03077 -> B wins k= 100: A=0.00990 B=0.01905 -> B wins k= 200: A=0.00498 B=0.00976 -> B wins k= 1000: A=0.00100 B=0.00199 -> B wins