#![deny(missing_docs)]
#![warn(clippy::all, clippy::nursery, clippy::pedantic, clippy::cargo)]
pub use hyw_base::{Hyw, HywIterator, HE, YI, WEI};
pub use hyw_embed::{ApiClient, EmbedError, Embedding};
use instant_distance::{HnswMap, Search};
pub async fn search(map: &HnswMap<Embedding, usize>, client: &ApiClient, query: &str) -> Result<(), EmbedError> {
let query_embedding = &client.embed_text(&[query]).await?[0];
let mut search_state = Search::default(); let results = map.search(&query_embedding, &mut search_state);
println!("Top 5 results for query: \"{query}\"");
for (rank, result) in results.take(5).enumerate() {
let id = result.value;
let distance = result.distance;
let hyw = Hyw::from_index(*id).unwrap();
println!("#{}: {hyw} (Distance: {distance:.4})", rank + 1);
}
Ok(())
}