MinHash

v0.1.0Hinzugefügt am 26. Sept. 2026

Erkennung 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 minhash

Kopiert 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.

Referenz
datasketch
Python 2.0.0
Testfälle
20.000
Differenzielles Testen
Bestanden
20.000 / 20.000
Alle Fälle stimmen überein
Letzter Lauf
26. Sept. 2026
UTC

kura-rs (Rust) im Vergleich zu datasketch über verschiedene Eingabegrößen. Bei jeder gemessenen Eingabegröße schneller, bis zu 19× schneller.

kura-rs (Rust)datasketch
Laufzeit pro Durchlauf (niedriger ist besser).
Datentabelle anzeigen
Eingabegrößekura-rs (Rust)datasketchSpeedup
100 ms0,01 ms19×
1000 ms0,04 ms9.9×
1.0000,04 ms0,37 ms8.8×
10.0000,42 ms3,73 ms9.0×
100.0004,14 ms37 ms8.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