MinHash

v0.1.0Ajouté le 26 sept. 2026

Détection de quasi-doublons à l'aide de signatures MinHash, identique bit à bit à datasketch. Estime la similarité de Jaccard entre des ensembles de tokens en espace constant, pour dédupliquer les corpus RAG et les données d'entraînement.

cargo install kura-rs
kura add minhash

Copie 2 fichiers source dans votre projet. Le code vous appartient ensuite.

Si un autre outil installe déjà une commande kura, lance cargo install kura-rs --bin kura-rs et utilise kura-rs add à la place.

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));

Vérifié par rapport à datasketch 2.0.0 (Python). Méthode : Tests différentiels. Les mêmes entrées sont fournies aux deux implémentations, puis leurs sorties sont comparées.

Référence
datasketch
Python 2.0.0
Cas de test
20 000
Tests différentiels
Réussis
20 000 / 20 000
Tous les cas concordent
Dernière exécution
26 sept. 2026
UTC

kura-rs (Rust) comparé à datasketch sur plusieurs tailles d'entrée. Plus rapide pour toutes les tailles d'entrée mesurées, jusqu'à 19× plus rapide.

kura-rs (Rust)datasketch
Temps d'exécution par itération (plus bas = meilleur).
Afficher le tableau de données
Taille d'entréekura-rs (Rust)datasketchAccélération
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×

Taille d'entrée : tokens per document (num_perm = 128).

Mesuré sur Apple M4 Pro, macOS 27.0 (arm64). kura-rs avec rustc 1.98.1 ; la référence avec Python 3.14.6, numpy 2.5.3.

Fichiers

  • parts/minhash/mod.rs
  • parts/minhash/permutation.rs

Dépendances (crates)