use crate::bundle::Bundle;
use crate::tower::TowerRole;
fn evaluated_tower(
tower: &zeppelin_embed::epoch::EmbeddingTower,
tokenizer_revision: &str,
) -> zeppelin_embed::epoch::EmbeddingTower {
let mut tower = tower.clone();
tower.model_version.push_str(";ze-text-output-layout=2");
tower.model_version.push_str(tokenizer_revision);
tower
}
pub(crate) fn embedding_epoch(bundle: &Bundle) -> zeppelin_embed::epoch::EmbeddingEpoch {
zeppelin_embed::epoch::EmbeddingEpoch {
document: evaluated_tower(
&bundle.document_tower().embedding,
bundle.tokenizer(TowerRole::Document).evaluation_revision(),
),
query: evaluated_tower(
&bundle.query_tower().embedding,
bundle.tokenizer(TowerRole::Query).evaluation_revision(),
),
alignment_digest: bundle.alignment_digest().to_vec(),
}
}
pub(crate) fn document_epoch(bundle: &Bundle) -> zeppelin_embed::epoch::EmbeddingEpoch {
let document = evaluated_tower(
&bundle.document_tower().embedding,
bundle.tokenizer(TowerRole::Document).evaluation_revision(),
);
zeppelin_embed::epoch::EmbeddingEpoch {
document: document.clone(),
query: document,
alignment_digest: Vec::new(),
}
}