pub fn optimize_fusion<K: Clone + Eq + Hash>(
qrels: &Qrels<K>,
runs: &[Vec<(K, f32)>],
config: OptimizeConfig,
) -> OptimizedParamsExpand description
Optimize fusion hyperparameters using grid search.
Given relevance judgments (qrels) and multiple retrieval runs, searches over parameter space to find the best configuration.
ยงExample
use rankops::optimize::{optimize_fusion, OptimizeConfig, OptimizeMetric, ParamGrid};
use rankops::FusionMethod;
let qrels = std::collections::HashMap::from([
("doc1", 2), // highly relevant
("doc2", 1), // relevant
]);
let runs = vec![
vec![("doc1", 0.9), ("doc2", 0.8)],
vec![("doc2", 0.9), ("doc1", 0.7)],
];
let config = OptimizeConfig {
method: FusionMethod::Rrf { k: 60 }, // will be overridden
metric: OptimizeMetric::Ndcg { k: 10 },
param_grid: ParamGrid::RrfK {
values: vec![20, 40, 60, 100],
},
};
let optimized = optimize_fusion(&qrels, &runs, config);
println!("Best k: {}, score: {:.4}", optimized.best_params, optimized.best_score);