Skip to content

Your documents

Add files in Settings → Assistant → Documents. PDFs, plain text and Markdown are supported. Everything below happens on the device: nothing is uploaded, and removing a document deletes its index entry while leaving the original file untouched.

Scanned pages are read too

A PDF does not have to contain text. Pages without embedded text are recognised on the device using Apple's Vision framework.

This works per page, not per document — a report with a scanned appendix is one file with both kinds in it, and each page is handled the way it needs to be. Where embedded text exists it is used directly, because it is exact and instant.

Pages are rendered at 200 dpi for recognition. Accuracy falls off sharply below about 150, and much above 200 costs memory and time for very little in return.

How an answer finds the right passage

Text is split into overlapping passages, each converted into a vector by a small embedding model (MiniLM L6 by default, about 102 MB, stored with your other downloads). Your question is converted the same way, and the closest passages are given to the model as evidence.

Answers cite what they drew on, by page where the format has pages:

Lease agreement · pages 2, 7 and 9

Citations are per document rather than per passage. Three passages from one file are one source to a reader; numbering them separately would imply three pieces of corroborating evidence where there is one.

Why a router decides, not a similarity score

Whether a question uses your documents at all is decided by a small router model rather than a similarity threshold — because measurement showed a threshold cannot do the job.

On a ten-passage corpus, questions the corpus answered scored 0.830, 0.828 and 0.745 at the top. Questions it did not answer reached 0.706, 0.677 and 0.504. Those ranges overlap, so no single cut-off separates them. When the question shared no vocabulary with its answer, the true match scored 0.602 against an unrelated question's 0.578.

Using the margin between the top two scores instead separates no better: 0.034 against 0.035.

A threshold set anywhere in that overlap either drops real matches or dresses up irrelevant passages as evidence. The router is asked the question directly instead.

Asking a good question

Retrieval finds passages; the model still has to write the answer. A specific question gets a far better reply than a vague one:

  • Good: "When does the licence expire?" · "What is the notice period?"
  • Poor: "?" · "In the index" · a single word

Given a vague prompt and a page of evidence, a small model sometimes produces a fragment rather than a sentence. Ask it something a person could answer and it will answer in kind.

Turning it off frees memory

Switching retrieval off releases the embedding model. That matters: it would otherwise sit in memory beside a chat model that may already be several gigabytes.