I Forgot the Words, Not the Memory: Building Ghostlight
Description and use
Users can recall a moment but forget the exact words, making it hard to retrieve the original text from a memory archive. Ghostlight lets users input fuzzy queries, embed them, and find the most similar stored passages locally in the browser.
Problem
Users can remember a moment but forget the exact words, making it hard to retrieve the original text from a memory archive.
Outcome
In a Chromium test on 1 Nov 2026, the browser‑based model returned relevant passages for fuzzy queries with similarity scores above 0.25, and clearly labeled weak matches. The system operates offline after the initial 23 MB model download.
Workflow
- 1. User adds a memory passage to the archive. 2. The app converts the passage to an embedding using all‑MiniLM‑L6‑v2 (quantized via Xenova ONNX) and caches it. 3. User enters a search phrase. 4. The phrase is embedded with the same model. 5. Cosine similarity between query and cached embeddings is computed. 6. Results are ranked and displayed with the original text and similarity score.
- 7. Users can export the archive as JSON or import a JSON file to transfer memories.
- 8. Optional localStorage persists notes across sessions; otherwise data is session‑only.
Evidence
Ghostlight found it.
The first visit downloads roughly 23 MB of model weights plus runtime files.
The retrieval flow is small enough to inspect: 1. Convert each saved passage into an embedding… 4. Compare those vectors with cosine similarity and rank the passages.
The worker keeps model loading and inference away from the interface thread.
The model earns its place in the app. “Hummed songs” and “music” can be close in its embedding space; exact string matching alone cannot make that connection.
- Record date: 2026-11-01T11:44:08.426Z