Skip to content

@saehrimnir/druidjs / LSH

Class: LSH<T>

Defined in: knn/LSH.js:34

Locality Sensitive Hashing (LSH) for approximate nearest neighbor search.

LSH uses hash functions that map similar items to the same buckets with high probability. This implementation uses Random Projection hashing (SimHash-style) which works well for cosine similarity and Euclidean distance.

Key concepts:

  • Multiple hash tables increase recall probability
  • Each hash function projects data onto random hyperplanes
  • Points on the same side of hyperplanes are hashed together
  • Combines results from all tables for better accuracy

Best suited for:

  • High-dimensional data where exact methods fail
  • Approximate nearest neighbor needs
  • Large datasets where linear scan is too slow
  • When some false positives/negatives are acceptable

Template

See

https://en.wikipedia.org/wiki/Locality-sensitive_hashing

Extends

  • KNN

Type Parameters

Type ParameterDescription
T extends number[] | Float64Array

Constructors

Constructor

ts
new LSH<T>(elements: T[], parameters?: ParametersLSH): LSH<T>;

Defined in: knn/LSH.js:41

Creates a new LSH index.

Parameters

ParameterTypeDescription
elementsT[]Elements to index
parameters?ParametersLSHConfiguration parameters

Returns

LSH<T>

Overrides

ts
KNN.constructor

Properties

PropertyTypeInherited fromDefined in
_dimnumber-knn/LSH.js:76
_elementsT[]KNN._elementsknn/KNN.js:14
_hashTablesMap<string, number[]>[]-knn/LSH.js:64
_metricMetric-knn/LSH.js:56
_numHashFunctionsnumber-knn/LSH.js:58
_numHashTablesnumber-knn/LSH.js:57
_offsetsnumber[][]-knn/LSH.js:72
_parametersParametersLSHKNN._parametersknn/KNN.js:16
_projectionsFloat64Array<ArrayBufferLike>[][]-knn/LSH.js:68
_randomizerRandomizer-knn/LSH.js:60
_seednumber-knn/LSH.js:59
_type"array" | "typed"KNN._typeknn/KNN.js:18

Methods

add()

ts
add(elements: T[]): LSH<T>;

Defined in: knn/LSH.js:169

Add elements to the LSH index.

Parameters

ParameterTypeDescription
elementsT[]-

Returns

LSH<T>


ts
search(query: T, k?: number): {
  distance: number;
  element: T;
  index: number;
}[];

Defined in: knn/LSH.js:202

Search for k approximate nearest neighbors.

Parameters

ParameterTypeDefault valueDescription
queryTundefined-
k?number5-

Returns

{ distance: number; element: T; index: number; }[]

Overrides

ts
KNN.search

search_by_index()

ts
search_by_index(i: number, k?: number): {
  distance: number;
  element: T;
  index: number;
}[];

Defined in: knn/LSH.js:288

Parameters

ParameterTypeDefault valueDescription
inumberundefined-
k?number5-

Returns

{ distance: number; element: T; index: number; }[]

Overrides

ts
KNN.search_by_index