Skip to main content

benchmark_hash/
benchmark_hash.rs

1//! Simple benchmark runner for hash-based embeddings
2
3use manx_cli::rag::benchmarks::{benchmark_provider, print_benchmark_results, BenchmarkTestData};
4use manx_cli::rag::providers::hash::HashProvider;
5
6#[tokio::main]
7async fn main() -> Result<(), Box<dyn std::error::Error>> {
8    println!("šŸ”„ Manx Embedding Provider Benchmarks");
9    println!("=====================================\n");
10
11    // Test different hash dimensions
12    let dimensions = vec![128, 256, 384, 512, 768];
13    let test_data = BenchmarkTestData::new_default();
14    let extended_data = BenchmarkTestData::extended();
15
16    println!("šŸ“Š Testing Hash Provider with Different Dimensions");
17    println!(
18        "Test Data: {} texts with {} similarity pairs\n",
19        test_data.texts.len(),
20        test_data.semantic_pairs.len()
21    );
22
23    let mut results = Vec::new();
24
25    for dim in &dimensions {
26        let provider = HashProvider::new(*dim);
27        let result = benchmark_provider(&provider, &test_data).await?;
28        results.push(result);
29    }
30
31    print_benchmark_results(&results);
32
33    println!("\nšŸ“ˆ Extended Dataset Benchmark (Hash-384)");
34    println!(
35        "Extended Data: {} texts with {} similarity pairs\n",
36        extended_data.texts.len(),
37        extended_data.semantic_pairs.len()
38    );
39
40    let provider_384 = HashProvider::new(384);
41    let extended_result = benchmark_provider(&provider_384, &extended_data).await?;
42    print_benchmark_results(&[extended_result]);
43
44    println!("\nāœ… Benchmark Complete!");
45    println!("šŸ’” Next: Compare with ONNX-based embeddings for quality improvements");
46
47    Ok(())
48}