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),可根據資料集大小優化記憶體與速度。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案