vectordb/examples/run.rs

54 lines
1.6 KiB
Rust

use std::time::Instant;
use rand::{thread_rng, Rng};
fn main() {
let db = vectordb::VectorDb::open("./vectordb", String::from("moments"), 2).expect("Launched");
let total_chunks = 32;
let chunk_size = 1024 * 32;
for _ in 0..total_chunks {
let vectors = (0..chunk_size)
.map(|_| thread_rng().gen::<[f32; 7]>().into())
.collect::<Vec<_>>();
println!("Inserting vectors");
let now = Instant::now();
db.insert_many_vectors(&vectors).expect("Inserted vectors");
println!("Inserting vectors - Took {:?}", now.elapsed());
std::thread::sleep(std::time::Duration::from_secs(5));
}
std::thread::sleep(std::time::Duration::from_secs(30));
let existing_vector = thread_rng().gen::<[f32; 7]>().into();
db.insert_vector(&existing_vector).expect("Insert works");
let test_vecs = [existing_vector]
.into_iter()
.chain((0..50).map(|_| thread_rng().gen::<[f32; 7]>().into()));
for v in test_vecs {
println!("Finding similarities");
let now = Instant::now();
let similarities = db
.find_similarities(v.clone(), 5)
.expect("Similar vectors exist");
println!("Finding similarities - Took {:?}", now.elapsed());
for id in similarities {
let similar = db
.get_vector(id)
.expect("Got vector")
.expect("Vector exists");
println!(
"similar to {}: {}",
id,
v.squared_euclidean_distance(&similar)
);
}
}
}