Embeddings and reranking
The same loaded Model type exposes task-specific methods. Calling the wrong
method for a checkpoint returns Error::TaskMismatch.
Embeddings
use libmir::{EmbeddingRequest, GenerationOverrides, Library, RuntimeConfig};
let model = Library::new(RuntimeConfig::default()).load(
"/models/embedding",
GenerationOverrides::default(),
&mut |_| {},
)?;
let output = model.embed(EmbeddingRequest {
inputs: vec!["first text".into(), "second text".into()],
dimensions: None,
prompt_name: None,
})?;
println!("vectors={}", output.embeddings.len());
println!("tokens={}", output.prompt_tokens);
Ok::<(), libmir::Error>(())
dimensions may retain a prefix no larger than the checkpoint’s native
dimension. prompt_name must name a preset declared by the checkpoint.
Reranking
use libmir::{GenerationOverrides, Library, RerankRequest, RuntimeConfig};
let model = Library::new(RuntimeConfig::default()).load(
"/models/reranker",
GenerationOverrides::default(),
&mut |_| {},
)?;
let output = model.rerank(RerankRequest {
query: "native inference".into(),
documents: vec!["Rust and Metal".into(), "a hosted service".into()],
max_length: None,
raw_scores: false,
})?;
for result in output.results {
println!("{} {:.4} {}", result.index, result.score, result.document);
}
Ok::<(), libmir::Error>(())
Results are relevance-sorted but preserve each candidate’s original index.
Set raw_scores to return classifier logits instead of a logistic score.