No description
Find a file
2026-07-03 22:35:01 +09:00
.claude/skills ci(release): sync beta asset manifest version to tag, auto-mark prerelease 2026-06-18 08:54:31 +09:00
.github ci(release): sync beta asset manifest version to tag, auto-mark prerelease 2026-06-18 08:54:31 +09:00
docs fix: warn about built-in model memory crashes on mobile 2026-06-29 23:35:36 +09:00
images docs: update README and manifest for OpenAI support 2026-01-31 19:07:44 +09:00
scripts ci: do not create release immediately 2025-06-21 22:52:42 +09:00
src fix: report actual provider model in environment info 2026-07-03 09:31:19 +09:00
.eslintrc.json chore: relax max-lines rule for test files 2026-05-27 23:17:13 +09:00
.gitignore chore: ignore .superpowers/ artifacts directory 2026-05-30 15:19:47 +09:00
CHANGELOG.md chore: bump version to 1.6.0 2026-07-03 22:35:01 +09:00
CLAUDE.md docs: correct obsidian mock location in CLAUDE.md 2026-07-03 10:11:36 +09:00
esbuild.config.mjs refactor: separate OramaWorker into dedicated class file 2025-10-24 10:12:40 +09:00
LICENSE Add License 2025-06-15 21:40:52 +09:00
manifest.json chore: bump version to 1.6.0 2026-07-03 22:35:01 +09:00
package-lock.json chore: update obsidian package to 1.11.4 for SettingGroup API 2026-01-31 16:36:37 +09:00
package.json chore: bump version to 1.6.0 2026-07-03 22:35:01 +09:00
README.md docs: add OpenRouter setup and ZDR privacy note to README 2026-07-03 09:31:52 +09:00
styles.css fix: warn about built-in model memory crashes on mobile 2026-06-29 23:35:36 +09:00
tsconfig.json fix: resolve ESLint errors and improve type safety 2025-12-19 22:53:45 +09:00
vitest.config.ts Rewrite the unit test for OramaNoteChunkRepository 2025-04-30 19:36:17 +09:00

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