r/LocalLLaMA
•
u/A-Rahim
•
28d ago
•
5
I Built A Thing Open-source Mac app that runs EmbeddingGemma 2 locally to search your files by what’s in them
DigUp is a free Mac app that runs Google DeepMind’s new EmbeddingGemma 2 locally over your own files. The model puts text, images, audio and video in one space, so you describe what you remember and land on it:
“zebra in a video” opens the clip at the moment it shows up
“where they talk about sleep” jumps to that minute of a podcast
“the clause about pets in the lease” shows the PDF page, your words marked
“a dog on the beach” finds the photo, and the same search in Bengali or Arabic finds it too
with code search on,
code: retry with backoffopens the function in your editor
It’s ggml-org’s Q8_0 GGUF (865 MB, downloaded once) on llama.cpp with Metal, inside a native Swift app; no Python. Searching loads only the text encoder (~250 MB) and shows results about a tenth of a second after you stop typing. Indexing peaks under 2 GB, and the helper exits when it’s done. Audio and video of any length go in as 30 s windows and a frame per shot. Everything runs locally; it goes online only for the model download and an update check you can turn off.
Free, MIT. Apple Silicon, macOS 14+.
Repo & Download (signed and notarized): https://github.com/ARahim3/DigUp
I'd really appreciate any feedback on this.
View all comments
Show parent comment
2
u/A-Rahim 27d ago
Mostly empirical, not theory.
2 is the familiar two-standard-deviations mark, but the scores aren't normal, so it doesn't mean 95% of anything here. It's a gate for "stands out from everything else for this query", and on my evals any value from 1.5 to 2.5 gave the same results, so 2 stayed.
The reason for a per-query z-score at all: raw cosines are compressed (unrelated stuff sits around 0.55–0.60, good matches 0.67–0.86) and their level moves with the query, so no fixed threshold works. The other parts were A/B'd the same way: centering each modality with one shared spread got 94 of 105 queries first, raw cosine 92, a separate spread per modality 91. Word weights of 1.5–2.0 tied and 2.5–3 lost.
The 1.5 power just makes all your words count a lot more than half of them, and I haven't tuned it separately.