Similar Notes

by Young Lee
5
4
3
2
1
Score: 57/100

Description

The Similar Notes plugin finds and recommends notes that are semantically related to what you're currently writing, using language models for real-time analysis. It displays up to five similar notes at the bottom of your note, making it easier to spot hidden connections in your ideas without relying on exact keyword matches. The plugin is self-contained with its own vector database and gives you the choice between built in Hugging Face models or connecting to Ollama for custom embeddings. No external cloud API is needed, and it smartly ignores notes already linked from your current document.

Reviews

No reviews yet.

Stats

107
stars
14,246
downloads
10
forks
421
days
12
days
12
days
6
total PRs
0
open PRs
2
closed PRs
4
merged PRs
49
total issues
7
open issues
42
closed issues
227
commits

RequirementsExperimental

  • Internet connection for initial model download

  • Local Ollama installation for custom embedding models (optional)

Latest Version

12 days ago

Changelog

Added

  • Hover preview on similar-note results (#55): Hover a note in the Similar notes bottom panel, the sidebar view, or the ;; link-suggestion popup while holding Ctrl (Cmd on macOS) to get Obsidian's native page preview, just like hovering a regular link. The Page Preview core plugin gains a "Similar Notes" toggle controlling whether the modifier key is required.
  • Frontmatter-based note exclusion (#42): Notes can now opt out of indexing from inside the note. Settings → Exclude files from index gains a Frontmatter properties input (one rule per line): key excludes notes where the property exists, key: value excludes notes where the property equals the value or the list contains it, so tags: noindex, categories: [[Private]], and embed: false all work. The excluded-files preview badges each file with what excluded it, and Apply Rules syncs the index against both path patterns and frontmatter rules.

Changed

  • "Folder patterns" setting renamed to "Path patterns": the glob patterns have always matched full file paths (e.g. Private/secret.md, **/drafts/*), not just folders. The stored value is unchanged.

Improved

  • Unchanged indexable notes no longer regenerate embeddings (#51): writes that only touch excluded frontmatter or regex-filtered content now advance indexing state without rerunning local or API embeddings, cutting unnecessary CPU use and provider calls.
  • RegExp exclusion tester matches indexing exactly: an invalid pattern no longer blanks the whole preview. It is skipped with a note and the remaining patterns still apply, exactly as indexing treats them.

README file from

Github

Similar Notes for Obsidian

"Buy Me A Coffee"

Find semantically similar notes using AI. Choose local models for privacy or cloud APIs for flexibility.

Similar Notes View

As you write, similar notes appear at the bottom of your current note.

Similar Notes Demo

Press Cmd+Shift+O (or Ctrl+Shift+O) to search your vault by meaning, not just keywords.

Semantic Search Demo

Features

  • Flexible Options: Run locally (100% private) or use cloud APIs like OpenAI
  • Mobile & Desktop: Built-in models work on iOS, Android, and all desktop platforms
  • OpenAI Support: Use OpenAI embedding models or any OpenAI-compatible API
  • Ollama Support: Connect to custom models via Ollama (desktop only)
  • No Setup Required: Built-in models work out of the box, no API keys needed

Getting Started

  1. Install the plugin
  2. The default model will download automatically (one-time, ~30MB)
  3. Your notes will be indexed in the background
  4. Similar notes will appear at the bottom of your current note

Progress appears in the status bar.

Model Options

Built-in Models (Mobile & Desktop)

Supports any Sentence Transformer model from Hugging Face that ships ONNX weights. Local processing, no API keys required.

Recommended:

  • all-MiniLM-L6-v2 (English, default)
  • paraphrase-multilingual-MiniLM-L12-v2 (multilingual)

Custom models: The plugin uses Transformers.js, which requires ONNX weights. Many Hugging Face repos only ship PyTorch / safetensors and will fail to load. For other models, look for an ONNX-converted version under the onnx-community organization, or use the Ollama / OpenAI providers instead.

Mobile note: Large models may cause crashes due to memory limits. Consider using the default model or OpenAI API on mobile.

OpenAI / Compatible API

Supports any OpenAI-compatible embedding API.

Recommended:

  • text-embedding-3-small

Note for CJK users: For Chinese, Japanese, and Korean text, multilingual models like bge-m3 (via Ollama) often outperform OpenAI models in both quality and token efficiency.

Using OpenRouter

OpenRouter offers embedding models from multiple vendors through one OpenAI-compatible API, often at very low cost (a whole vault typically indexes for well under a dollar). Configure it through the OpenAI provider:

  1. Model provider: OpenAI API
  2. Server URL: https://openrouter.ai/api/v1
  3. API Key: your OpenRouter key (sk-or-...)
  4. Model: Custom model..., then enter the model ID from OpenRouter (e.g. perplexity/pplx-embed-v1-0.6b, qwen/qwen3-embedding-8b, or openai/text-embedding-3-small)
  5. Use Test connection to verify before Load & Apply.

Privacy note: OpenRouter routes your note content to the model vendor, and each vendor has its own data retention policy. OpenRouter accounts have a Zero Data Retention (ZDR) option that restricts routing to providers who confirmed they do not store your data; requests that would hit a non-ZDR endpoint fail with an error instead of going through silently. If your vault contains sensitive material, enable it once at openrouter.ai/settings/privacy (Data Policies, Zero Data Retention) before indexing. It applies account-wide, so no plugin configuration is needed. (Thanks to David Torrens for testing OpenRouter and researching the ZDR setting.)

Ollama (Desktop Only)

Supports any Ollama embedding model.

Recommended:

  • nomic-embed-text (English)
  • bge-m3 (multilingual)

Agent Usage

The active note's similar-notes results can be exported to a JSON file, so an external coding agent can reuse the plugin's similarity search without understanding embeddings or plugin internals:

  1. Open a note in Obsidian.
  2. Run the command Similar Notes: Export similar notes for active note.
  3. Read the results from .obsidian/plugins/similar-notes/similar-notes-export.json.

Output format (success):

{
  "version": 1,
  "ok": true,
  "sourcePath": "Projects/My Note.md",
  "generatedAt": "2026-06-09T12:34:56.000Z",
  "results": [
    {
      "path": "Knowledge/Related Note.md",
      "title": "Related Note",
      "score": 0.82,
      "excerpt": "similar content..."
    }
  ]
}

On error (e.g. no active markdown file, search failure), the same file is written with { "version": 1, "ok": false, "code": "...", "error": "..." }, where code is NO_ACTIVE_FILE or SEARCH_FAILED.

For driving the command from an agent (CLI flow, validation tips, drop-in skill snippet), see docs/agent-export.md.

Technical Details

  • Transformers.js: Runs Hugging Face models directly in Obsidian
  • WebGPU: GPU acceleration on desktop, automatic CPU fallback
  • Orama: Built-in vector database for fast search
  • Web Workers: All processing runs in background threads

Multi-Device Usage

This plugin stores all data locally in IndexedDB, which is device-specific storage that does not sync across devices.

What this means:

  • Each device maintains its own independent index
  • Obsidian Sync, iCloud, Syncthing, or any other file sync tool will not sync the plugin's data
  • When you open your vault on a new device, the plugin will automatically index your notes from scratch

This is by design - IndexedDB provides fast, reliable local storage that doesn't interfere with vault syncing.

License

MIT

Similar Plugins

info
• Similar plugins are suggested based on the common tags between the plugins.