MinHash

v0.1.0Añadido el 26 sept 2026

Detección de casi duplicados con firmas MinHash, idéntica bit a bit a datasketch. Estima la similitud de Jaccard entre conjuntos de tokens en espacio constante, para deduplicar corpus de RAG y datos de entrenamiento.

cargo install kura-rs
kura add minhash

Copia 2 archivos de código fuente en tu proyecto. A partir de ahí, el código es tuyo.

Si otra herramienta ya instala un comando kura, ejecuta cargo install kura-rs --bin kura-rs y usa kura-rs add en su lugar.

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

Verificado frente a datasketch 2.0.0 (Python). Método: Pruebas diferenciales. Las mismas entradas se pasan a ambas implementaciones y se comparan las salidas.

Referencia
datasketch
Python 2.0.0
Casos de prueba
20.000
Pruebas diferenciales
Superados
20.000 / 20.000
Todos los casos coinciden
Última ejecución
26 sept 2026
UTC

kura-rs (Rust) frente a datasketch con distintos tamaños de entrada. Más rápido en todos los tamaños de entrada medidos, hasta 19× más rápido.

kura-rs (Rust)datasketch
Tiempo real por ejecución (menos es mejor).
Mostrar tabla de datos
Tamaño de entradakura-rs (Rust)datasketchAceleración
100 ms0,01 ms19×
1000 ms0,04 ms9.9×
10000,04 ms0,37 ms8.8×
10.0000,42 ms3,73 ms9.0×
100.0004,14 ms37 ms8.9×

Tamaño de entrada: tokens per document (num_perm = 128).

Medido en Apple M4 Pro, macOS 27.0 (arm64). kura-rs con rustc 1.98.1; la referencia con Python 3.14.6, numpy 2.5.3.

Archivos

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

Dependencias (crates)