Skip to main content

Module ensemble

Module ensemble 

Source
Expand description

Ensemble Embedding Methods (v0.3.0)

Aggregates multiple embedding models using three strategies:

  • Voting (mean pooling): average embeddings across all models element-wise.
  • WeightedAverage: performance-weighted mean (weights from validation cosine similarity).
  • Stacking: a two-layer meta-learner (linear + ReLU + linear) trained on concatenated model outputs; requires a held-out validation set.

§Design

Each “model” in the ensemble is represented as a boxed function Fn(&str) -> Vec<f64> (same contract as ModelVariant in the A/B testing module). This keeps the ensemble decoupled from specific KGE implementations.

use oxirs_embed::ensemble::{EnsembleConfig, EnsembleEmbedder, EnsembleStrategy};

let models: Vec<Box<dyn Fn(&str) -> Vec<f64> + Send + Sync>> = vec![
    Box::new(|_key: &str| vec![1.0f64; 16]),
    Box::new(|_key: &str| vec![2.0f64; 16]),
];
let config = EnsembleConfig {
    strategy: EnsembleStrategy::Voting,
    output_dim: 16,
    ..Default::default()
};
let embedder = EnsembleEmbedder::new(models, config).expect("valid config");
let embedding = embedder.embed("entity:Alice").expect("embedding");
assert_eq!(embedding.len(), 16);

Structs§

EnsembleConfig
Configuration for EnsembleEmbedder.
EnsembleEmbedder

Enums§

EnsembleStrategy
Aggregation strategy for combining model embeddings.