Simple hash-based "embedding" for testing purposes. Produces a deterministic vector from text content using character frequency analysis. NOT suitable for production — use a real embedding model (MiniLM, OpenAI, etc.) instead.
(text: &str, dims: usize)
| 281 | /// frequency analysis. NOT suitable for production — use a real |
| 282 | /// embedding model (MiniLM, OpenAI, etc.) instead. |
| 283 | pub fn hash_embed(text: &str, dims: usize) -> Vec<f32> { |
| 284 | let mut vec = vec![0.0f32; dims]; |
| 285 | for (i, byte) in text.bytes().enumerate() { |
| 286 | vec[i % dims] += byte as f32 / 255.0; |
| 287 | } |
| 288 | // Normalize |
| 289 | let norm: f32 = vec.iter().map(|x| x * x).sum::<f32>().sqrt(); |
| 290 | if norm > 0.0 { |
| 291 | for v in &mut vec { |
| 292 | *v /= norm; |
| 293 | } |
| 294 | } |
| 295 | vec |
| 296 | } |
| 297 | |
| 298 | #[cfg(test)] |
| 299 | mod tests { |