Skip to main content
Version:
0.0.4dev

A fast Python implementation of locality sensitive hashing with persistance support.

Highlights

  • Fast hash calculation for large amount of high dimensional data through the use of numpy arrays.

  • Built-in support for persistency through Redis.

  • Multiple hash indexes support.

  • Built-in support for common distance/objective functions for ranking outputs.

Installation

LSHash depends on the following libraries:

  • numpy

  • redis (if persistency through Redis is needed)

  • bitarray (if hamming distance is used as distance function)

To install:

$ pip install lshash

Quickstart

To create 6-bit hashes for input data of 8 dimensions:

>>> from lshash import LSHash

>>> lsh = LSHash(6, 8)
>>> lsh.index([1,2,3,4,5,6,7,8])
>>> lsh.index([2,3,4,5,6,7,8,9])
>>> lsh.index([10,12,99,1,5,31,2,3])
>>> lsh.query([1,2,3,4,5,6,7,7])
[((1, 2, 3, 4, 5, 6, 7, 8), 1.0),
 ((2, 3, 4, 5, 6, 7, 8, 9), 11)]

Main Interface

  • To initialize a LSHash instance:

LSHash(hash_size, input_dim, num_of_hashtables=1, storage=None, matrices_filename=None, overwrite=False)

parameters:

hash_size:

The length of the resulting binary hash.

input_dim:

The dimension of the input vector.

num_hashtables = 1:

(optional) The number of hash tables used for multiple lookups.

storage = None:

(optional) Specify the name of the storage to be used for the index storage. Options include “redis”.

matrices_filename = None:

(optional) Specify the path to the .npz file random matrices are stored or to be stored if the file does not exist yet

overwrite = False:

(optional) Whether to overwrite the matrices file if it already exist

  • To index a data point of a given LSHash instance, e.g., lsh:

lsh.index(input_point, extra_data=None):

parameters:

input_point:

The input data point is an array or tuple of numbers of input_dim.

extra_data = None:

(optional) Extra data to be added along with the input_point.

  • To query a data point against a given LSHash instance, e.g., lsh:

lsh.query(query_point, num_results=None, distance_func="euclidean"):

parameters:

query_point:

The query data point is an array or tuple of numbers of input_dim.

num_results = None:

(optional) The number of query results to return in ranked order. By default all results will be returned.

distance_func = "euclidean":

(optional) Distance function to use to rank the candidates. By default euclidean distance function will be used.

Metadata

Release files for lshash3 0.0.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for lshash3 0.0.8
File Size Uploaded
lshash3-0.0.8.tar.gz 9.4 kB Details

Release files / lshash3-0.0.8.tar.gz

Download URL lshash3-0.0.8.tar.gz
Size 9.4 kB
Tags Source
SHA-256 checksum
How to use checksums
aec18362311a44c62a3440915fd26533f2d6fc3708bfd5063d4856390ae9d220
BLAKE2b-256 checksum
How to use checksums
51a7825799ea4c52ff477aae56f08b172016c434cd0264cbdd9cd7d82895bfe4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.0.8 This release

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page