MinHash
v0.1.0Adicionado em 26 de set. de 2026Detecção de quase duplicatas com assinaturas MinHash, idêntica bit a bit ao datasketch. Estima a similaridade de Jaccard entre conjuntos de tokens em espaço constante, para deduplicar corpora de RAG e dados de treinamento.
cargo install kura-rs
kura add minhashCopia 2 arquivos de código-fonte para o seu projeto. A partir daí, o código é seu.
Se outra ferramenta já instala um comando kura, execute cargo install kura-rs --bin kura-rs e use kura-rs add no 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 com datasketch 2.0.0 (Python). Método: Teste diferencial. As mesmas entradas são enviadas às duas implementações e as saídas são comparadas.
kura-rs (Rust) comparado com datasketch em vários tamanhos de entrada. Mais rápido em todos os tamanhos de entrada medidos, até 19× mais rápido.
Mostrar tabela de dados
| Tamanho da entrada | kura-rs (Rust) | datasketch | Aceleração |
|---|---|---|---|
| 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× |
Tamanho da entrada: tokens per document (num_perm = 128).
Medido em Apple M4 Pro, macOS 27.0 (arm64). kura-rs com rustc 1.98.1; a referência com Python 3.14.6, numpy 2.5.3.
Arquivos
- parts/minhash/mod.rs
- parts/minhash/permutation.rs
Dependências (crates)
- sha10.11