memsearchmanual
MEMSEARCH / MANUAL

Search

Write natural-language queries, filter by modality or person, interpret scores, and act on results.

Memsearch embeds the query with Gemini’s retrieval-query task and compares it with the embeddings in the local ChromaDB collection. Results are ranked by cosine similarity.

Natural-language queries

Describe the content or context you remember. A filename is optional.

quarterly roadmap about embeddings
photo of a neon alley at night
python script for batch processing
meeting notes about rollout pricing

Queries work best when they include distinctive concepts that are likely to appear in a text file or visually distinguish an image.

Search is semantic, not conversational

Memsearch does not ask a chat model to answer questions. It creates a query vector, returns nearby indexed items, and leaves the original file unchanged.

Filter by type

Use the type control beside the search field.

UI filterAPI/CLI modalityIncludes
All Typesno filterImages, PDFs, and text
ImagesimageFolder images and Photos assets
PDFspdfPDF documents
Text FilestextPlain text, Markdown, source code, and other supported text extensions

Changing the filter re-runs the current query. The desktop and Raycast clients request up to 20 results; the CLI defaults to 10.

Search by person

People filters use names read from Apple Photos face-recognition data. Type @ in the desktop search field to see matching people, or write a mention directly.

@Mira beach sunset
@"Samuel Meseret" conference
@Mira @Jordan dinner

The backend supports unquoted @name and quoted @"Full Name" forms. Multiple mentions require every named person to be present in the photo. The desktop autocomplete inserts quoted names and displays selected people as removable chips.

If the query contains only people mentions, the backend uses photo as the semantic portion of the query.

Names must match Photos

A person filter is matched case-insensitively against the names in Photos. Refresh people data or name the person in Photos if autocomplete or results are missing.

Understand result scores

The score badge is 1 - cosine distance, displayed as a percentage by the desktop and Raycast clients. A higher number means the item’s embedding is closer to the query embedding.

Scores are relative similarity signals, not a confidence guarantee. The current backend does not apply a minimum-score cutoff, so review the result itself—especially for broad queries or a small index.

Open and reveal results

Double-click a regular file to open it with macOS. Right-click for Open File, Show in Finder, Copy Path, or Copy Summary. Photos results provide Open in Photos instead of Finder reveal.

Photos results use an internal photos:// identifier. Opening one asks the Photos app to activate and spotlight the corresponding media item.

Query tips

  1. Start with two or three concrete concepts: invoice design retainer.
  2. Add visual details for images: red bicycle beside brick wall.
  3. Add document intent for mixed indexes: PDF onboarding checklist.
  4. Use the modality filter when images overwhelm a document search.
  5. Use @person for Photos, then add an activity, place, or event.
  6. Re-index after changing a file that is not covered by automatic watching.
  7. Try a shorter query if an exact phrase over-constrains the meaning.
SourceContent used for its embedding
Text fileUp to the first 8,000 characters
Image fileA JPEG representation of the image, resized if necessary
PDFExtracted text up to 8,000 characters plus a rendered first page
Photos assetA JPEG representation downloaded through PhotoKit

Text summaries shown in results are metadata stored with the vector. For text and PDFs they are drawn from the beginning of the extracted text; they are not a separate Gemini-generated summary.

Empty or unexpected results

  • Confirm that Status shows indexed items for the expected modality.
  • Remove the type filter.
  • Remove or correct an @person filter.
  • Refresh people data after naming faces in Photos.
  • Check the Gemini key if the search reports a 403, missing model, or rate-limit error.
  • Re-index files that changed while automatic indexing was off.

See Troubleshooting for connection, API-key, and indexing failures.

On this page