vague
Fully local, multimodal semantic search in Rust. Searches text and images by meaning instead of keywords, using Ollama for text and CLIP for images. Can find anything based on context, no matter how vague your query is.
A local Rust command line tool that searches your text files and images by meaning instead of keywords, using Ollama and CLIP.
vague is a command line tool, written in Rust, for searching your own files by meaning rather than by exact keywords, and it runs entirely on your own computer with nothing sent to the cloud. The idea is that a search like "that one legal file" should be able to find a tax document even if none of those exact words appear in it, because the tool compares the meaning of your query against the meaning of your files rather than matching text directly.
It handles two kinds of files differently. Text files, including plain text, markdown, and PDFs, have their content turned into a numerical representation called an embedding using a local text embedding model named nomic-embed-text, run through Ollama. Images, including PNG, JPG, and WebP files, are embedded directly using CLIP, a model that understands the content of a picture, run locally through a library called fastembed. This means an image search like "screenshot of an error message" can find a matching picture even though the file was never tagged with those words. Text and image results are ranked together in one combined list, with their differing scoring scales normalized so they can be compared fairly.
An optional flag adds OCR, meaning it extracts any readable text found inside images during indexing, so a search can also match words that appear inside a screenshot or diagram, at a small added cost of about four tenths of a second per image.
Getting started means indexing a folder once, which downloads the required models to a local cache the first time, and then running search queries against that index whenever needed. The project ships prebuilt binaries for Windows, along with instructions for installing from source using Rust and the Cargo package manager on any platform, though building from source also needs a working C++ compiler toolchain because of how the underlying ONNX Runtime library is compiled. The project is still an early, work in progress release, and is licensed under the GNU Affero General Public License version 3.
Where it fits
- Find a specific document by describing its content instead of its filename
- Search a folder of screenshots by what they show
- Search images for embedded text like error messages using OCR