use rbert::*;
use std::num::NonZeroUsize;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let bert = Bert::builder()
.build()
.await?
.cached(NonZeroUsize::new(1000).unwrap());
if let Ok(cache) = std::fs::read("cache.bin") {
let cache: Vec<(EmbeddingInput, Vec<f32>)> = postcard::from_bytes(&cache)?;
bert.load_cache(cache);
}
let start_time = std::time::Instant::now();
let sentences = [
"Cats are cool",
"The geopolitical situation is dire",
"Pets are great",
"Napoleon was a tyrant",
"Napoleon was a great general",
];
let embeddings = bert.embed_batch(sentences).await?;
println!("{:?}", embeddings);
println!("embedding uncached took {:?}", start_time.elapsed());
let start_time = std::time::Instant::now();
let embeddings = bert.embed_batch(sentences).await?;
println!("{:?}", embeddings);
println!("embedding cached took {:?}", start_time.elapsed());
let sentences = [
"Cats are cool",
"The geopolitical situation is dire",
"Pets are great",
"Napoleon is from France",
"Kalosm supports embedding models",
];
let embeddings = bert.embed_batch(sentences).await?;
println!("{:?}", embeddings);
println!("embedding partially cached took {:?}", start_time.elapsed());
let cache = bert.export_cache();
let file = std::fs::File::create("cache.bin")?;
postcard::to_io(&cache, &file)?;
Ok(())
}