pub async fn benchmark_provider<T: ProviderTrait + Send + Sync + ?Sized>(
provider: &T,
test_data: &BenchmarkTestData,
) -> Result<BenchmarkResults>
Expand description
Benchmark a single embedding provider
Examples found in repository?
examples/benchmark_hash.rs (line 27)
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}
More examples
examples/benchmark_onnx_vs_hash.rs (line 45)
13async fn main() -> Result<()> {
14 // Initialize logging to see what's happening
15 env_logger::builder()
16 .filter_level(log::LevelFilter::Info)
17 .init();
18
19 println!("š Manx Embedding Provider Performance Comparison");
20 println!("================================================");
21 println!("Comparing Hash vs ONNX-based embeddings\n");
22
23 // Test data for comparison
24 let test_data = BenchmarkTestData::extended();
25 println!("š Test Dataset:");
26 println!(
27 " {} texts with {} semantic similarity pairs",
28 test_data.texts.len(),
29 test_data.semantic_pairs.len()
30 );
31
32 println!("\nš Sample texts:");
33 for (i, text) in test_data.texts.iter().take(3).enumerate() {
34 println!(" {}. {}", i + 1, text);
35 }
36 println!(" ... and {} more", test_data.texts.len() - 3);
37
38 println!("\n{}", "=".repeat(60));
39
40 // Benchmark 1: Hash Provider (current baseline)
41 println!("\nš§ PHASE 1: Hash-based Embeddings (Baseline)");
42 println!("---------------------------------------------");
43
44 let hash_provider = HashProvider::new(384);
45 let hash_result = benchmark_provider(&hash_provider, &test_data).await?;
46
47 print_benchmark_results(std::slice::from_ref(&hash_result));
48
49 // Benchmark 2: ONNX Provider (if available)
50 println!("\nš¤ PHASE 2: ONNX-based Embeddings (Testing)");
51 println!("--------------------------------------------");
52
53 // Check if we need to download the model
54 let model_name = "sentence-transformers/all-MiniLM-L6-v2";
55 println!("š¦ Checking for ONNX model: {}", model_name);
56
57 // Note: In a real implementation, we'd download the model here
58 // For now, we'll create a simulation to show what the comparison would look like
59 println!("ā ļø ONNX model download not implemented in this demo");
60 println!(" In production, this would:");
61 println!(" 1. Download {} from HuggingFace", model_name);
62 println!(" 2. Convert to ONNX format if needed");
63 println!(" 3. Load tokenizer and model files");
64 println!(" 4. Initialize ONNX Runtime session");
65
66 // Simulate what ONNX results would look like based on research
67 simulate_onnx_comparison(&hash_result).await?;
68
69 println!("\n{}", "=".repeat(60));
70 println!("\nš SUMMARY & RECOMMENDATIONS");
71 println!("============================");
72
73 print_recommendations(&hash_result);
74
75 println!("\nā
Benchmark Complete!");
76 println!("\nš” To enable real ONNX testing:");
77 println!(" 1. Implement model download from HuggingFace");
78 println!(" 2. Add ONNX model file handling");
79 println!(
80 " 3. Test with: cargo run --example benchmark_onnx_vs_hash --features onnx-embeddings"
81 );
82
83 Ok(())
84}