The 18 GB is for just the hashes. The dataset is several terabytes.
A bloom filter is useless, as it doesn't let you do searches within an edit distance. Basically, I use a BK-tree of perceptual hashes (https://en.wikipedia.org/wiki/Perceptual_hashing). Then, I can find similar images by searching within a certain edit-distance.
Basically, the end result is a system that functions very similarly to how google's reverse image search works.
I used a google paper's approach in a mosaic competition. I didn't end up submitting it, but I got it working.
It uses locality sensitive hashing to hash vectors into buckets. These buckets are a subset of the total set of items. It worked with similar images of a small size when I used it, but I didn't have many images.
In my case, the vectors were just the rgb values of the down-sampled image.
A bloom filter is useless, as it doesn't let you do searches within an edit distance. Basically, I use a BK-tree of perceptual hashes (https://en.wikipedia.org/wiki/Perceptual_hashing). Then, I can find similar images by searching within a certain edit-distance.
Basically, the end result is a system that functions very similarly to how google's reverse image search works.