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§
- Ensemble
Config - Configuration for
EnsembleEmbedder. - Ensemble
Embedder
Enums§
- Ensemble
Strategy - Aggregation strategy for combining model embeddings.