MindPage Search v2 (GGUF)
On-device search model of MindPage, a notes and PDF app. It finds the right page in
your notes, PDFs, handwriting and recorded lectures/meetings. Fine-tuned from Google's
EmbeddingGemma 2 (Apache-2.0), text model only, Q8_0 for llama.cpp
(b11716 or newer, architecture gemma-embedding2).
New in v2: trained on what Apple Vision really reads from handwritten pages, so it finds a page even when the handwriting was misread ("icceleration" for acceleration, "olject" for object).
Use
Same prompts as EmbeddingGemma 2, vectors truncated to 256 dimensions (Matryoshka) and L2-normalized:
- query:
task: search result | query: {question} - passage:
title: none | text: {document title}, page {n}: {passage}(recordings:{title}, recording: {passage})
Vectors are not compatible with v1: re-embed your pages when you switch.
Training
- Contrastive (multiple negatives ranking) with hard negatives from the same document, Matryoshka 768/512/256/128.
- Data: questions and searches written by an on-device model for public Wikipedia study articles (CC BY-SA), the same pages rewritten as terse handwritten-style notes with OCR noise, lecture-style spoken versions of the same content, QMSum meeting transcripts and their human queries (MIT), and general retrieval pairs from Natural Questions, GooAQ and SQuAD.
- v2 adds 3,000 of those Wikipedia passages rendered as handwritten pages (open handwriting fonts, OFL / Apache-2.0, lined paper, slant, ink colours) and read back by Apple Vision with MindPage's settings: the model learns Vision's real reading mistakes.
- No user notes were used. Token embeddings frozen; 1 epoch.
Results
Held-out library-wide search (49 articles and 35 meetings never seen in training, 256 dims, Q8_0 through llama.cpp, the engine the app uses), R@1:
| Task | MindPage Search v1 | MindPage Search v2 |
|---|---|---|
| Handwriting read by Apple Vision (234 pages) | 80.3 | 85.9 |
| Wiki questions | 82.1 | 85.0 |
| Short searches | 70.9 | 71.8 |
| Handwritten notes (simulated OCR noise) | 78.6 | 81.2 |
| Meetings, human queries | 40.2 | 37.4 |
| Meetings, generated queries | 41.9 | 43.8 |
| Recorded lectures | 87.6 | 87.6 |
| Average | 68.8 | 70.4 |
Paired permutation test over the same queries (10,000 sign flips): v2 is better than v1 on the macro average (R@1 p = 0.043, MRR p = 0.011) and on Vision-read handwriting (p = 0.006); no task is significantly worse (meetings with human queries −2.9, p = 0.19).
License
Apache-2.0, as the base model. Built on EmbeddingGemma 2 by Google DeepMind.