search
Semantic file search using ImageBind and sqlite-vec
Installation
pip install -r requirements.txt
If you don't need PyTorch with GPU support, first run pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu. During runtime, if you get the error ModuleNotFoundError: No module named 'torchvision.transforms.functional_tensor', change functional_tensor to functional.
Usage
This program uses a client-server architecture to watch directories with inotify and keep the model loaded in memory. It takes around 15 seconds to load the model so it wouldn't be great if every query had to wait on that.
Run python server.py DIRS_TO_INDEX to start the server. Then, run python client.py SEARCH_TEXT NUM_RESULTS to get a list of the most similar files. You can pass this to an image viewer such as gwenview $(python client.py SEARCH_TEXT NUM_RESULTS) to get thumbnails of image results. Note that Gwenview doesn't preserve the order of the images.