MinHash
v0.1.0Hinzugefügt am 26. Sept. 2026Erkennung von Beinahe-Duplikaten mit MinHash-Signaturen, bitgenau kompatibel zu datasketch. Schätzt die Jaccard-Ähnlichkeit zwischen Token-Mengen bei konstantem Speicherbedarf – zur Deduplizierung von RAG-Korpora und Trainingsdaten.
cargo install kura-rs
kura add minhashKopiert 2 Quelldateien in dein Projekt. Ab dann gehört der Code dir.
Wenn ein anderes Tool bereits einen kura-Befehl installiert, führe cargo install kura-rs --bin kura-rs aus und nutze stattdessen kura-rs add.
use crate::parts::minhash::MinHasher;
// Same num_perm and seed as datasketch.MinHash() → identical signatures
let hasher = MinHasher::new(128, 1);
let a = hasher.signature("the quick brown fox jumps".split_whitespace());
let b = hasher.signature("the quick brown fox leaps".split_whitespace());
println!("estimated jaccard = {:.3}", a.jaccard(&b));Geprüft gegen datasketch 2.0.0 (Python). Verfahren: Differenzielles Testen. Beide Implementierungen erhalten dieselben Eingaben, die Ausgaben werden verglichen.
kura-rs (Rust) im Vergleich zu datasketch über verschiedene Eingabegrößen. Bei jeder gemessenen Eingabegröße schneller, bis zu 19× schneller.
Datentabelle anzeigen
| Eingabegröße | kura-rs (Rust) | datasketch | Speedup |
|---|---|---|---|
| 10 | 0 ms | 0,01 ms | 19× |
| 100 | 0 ms | 0,04 ms | 9.9× |
| 1.000 | 0,04 ms | 0,37 ms | 8.8× |
| 10.000 | 0,42 ms | 3,73 ms | 9.0× |
| 100.000 | 4,14 ms | 37 ms | 8.9× |
Eingabegröße: tokens per document (num_perm = 128).
Gemessen auf Apple M4 Pro, macOS 27.0 (arm64). kura-rs mit rustc 1.98.1; Referenz mit Python 3.14.6, numpy 2.5.3.
Dateien
- parts/minhash/mod.rs
- parts/minhash/permutation.rs
Crate-Abhängigkeiten
- sha10.11