pub struct BenchmarkTestData {
pub texts: Vec<&'static str>,
pub semantic_pairs: Vec<(usize, usize, f32)>,
}
Expand description
Test data for benchmarking
Fields§
§texts: Vec<&'static str>
§semantic_pairs: Vec<(usize, usize, f32)>
Implementations§
Source§impl BenchmarkTestData
impl BenchmarkTestData
Sourcepub fn new_default() -> Self
pub fn new_default() -> Self
Get default test data for benchmarking
Examples found in repository?
examples/benchmark_hash.rs (line 13)
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}
Sourcepub fn extended() -> Self
pub fn extended() -> Self
Get extended test data for more comprehensive benchmarking
Examples found in repository?
examples/benchmark_hash.rs (line 14)
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 24)
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}
Auto Trait Implementations§
impl Freeze for BenchmarkTestData
impl RefUnwindSafe for BenchmarkTestData
impl Send for BenchmarkTestData
impl Sync for BenchmarkTestData
impl Unpin for BenchmarkTestData
impl UnwindSafe for BenchmarkTestData
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more