Currently there is only one LSH family implemented (angle), but this should be templated so that other hash functions can be specified at compile time.
Similarly, the ids of feature vectors are stored as strings in the buckets of the hash table. The only operations on these involve collecting them, so they can also be completely general (which would allow them to be replaced with more complex objects that store properties, such as whether they act as representatives for clusters, etc.)