Skip to main content

Crate mmr_rerank

Crate mmr_rerank 

Source
Expand description

§mmr-rerank

Maximal Marginal Relevance (Carbonell & Goldstein, 1998) reranker.

Given relevance scores rel[i] = sim(query, doc_i) and a pairwise similarity matrix pair[i][j] = sim(doc_i, doc_j), returns the top-k indices that balance query relevance against novelty:

pick = argmax_{i not picked}  λ * rel[i] - (1 - λ) * max_{j picked} pair[i][j]

§Example

use mmr_rerank::mmr;
let rel = vec![0.9, 0.85, 0.6, 0.55];
// 4 docs; pair[i][j] = pairwise similarity
let pair = vec![
    vec![1.0, 0.95, 0.10, 0.10],
    vec![0.95, 1.0, 0.10, 0.10],
    vec![0.10, 0.10, 1.0, 0.95],
    vec![0.10, 0.10, 0.95, 1.0],
];
// λ = 0.5 trades off relevance and diversity equally.
let picks = mmr(&rel, &pair, 0.5, 2);
// Expect 0 (top relevance), then 2 (low pair sim with 0).
assert_eq!(picks, vec![0, 2]);

Functions§

mmr
Pick k indices in MMR order. lambda ∈ [0, 1].