ekzhu/datasketch

MinHash, LSH, LSH Forest, Weighted MinHash, HyperLogLog, HyperLogLog++, LSH Ensemble and HNSW

解决的问题

提供一种极快处理和搜索海量数据集的方法,同时保持高精度。解决了在无需将完整数据集存储或处理在内存中的情况下,对海量数据计算相似性和基数(唯一元素数量)的问题。

工作原理

该库使用称为“草图”的概率数据结构,创建数据的紧凑表示。它实现了多种算法来估计数据的属性:

  • MinHashWeighted MinHash:用于估计 Jaccard 相似度和基数。
  • HyperLogLogHyperLogLog++:用于估计唯一元素的数量(基数)。

为了高效搜索这些草图,它提供了多种索引,可实现亚线性查询时间,包括用于基于阈值的相似性搜索的局部敏感哈希(LSH)和用于自定义度量的 Top-K 查询的 HNSW。

适用人群

需要在百亿规模数据集上执行快速相似性搜索或统计唯一项的数据工程师和软件开发人员。

特色亮点

  • 概率效率:以极小的内存开销和极高的速度处理大规模数据。
  • 可扩展存储:支持 Redis 和 Cassandra 作为 LSH 索引的存储层。
  • 多样化的索引:提供 LSH、LSHBloom、LSH Forest 和 HNSW,适用于不同查询类型(如 Jaccard 阈值、Top-K)。
  • 灵活的方案:提供多种置换方案(如 affine32 和 affine64),可根据数据集大小优化内存和速度。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目