README file from
GithubSmart Linker
An Obsidian plugin that automatically finds and inserts semantically related notes using AI-powered embeddings. It reads pre-computed vector embeddings and uses cosine similarity to discover connections between your notes.
Features
- 🔗 Automatic Related Links — Finds semantically similar notes based on content meaning, not just keywords
- 📝 Managed Block — Inserts related links in a dedicated block at the end of your note
- ⚡ Fast Local Search — Uses pre-computed embeddings for instant similarity search
- 🎯 Deduplication — Automatically removes duplicate suggestions (handles chunked embeddings)
- ⚙️ Configurable — Adjust number of links, similarity threshold, excluded folders, and display format
- 🔄 Non-Destructive — Only modifies the managed block, never touches your note content
Prerequisites
This plugin requires Vector Search plugin to generate embeddings for your notes.
Setting up Vector Search
- Install Ollama for your platform
- Pull the embedding model:
ollama pull nomic-embed-text - Install the Vector Search plugin in Obsidian
- Let it build the embeddings index for your vault
Once Vector Search has processed your vault, Smart Linker can use those embeddings to find related notes.
Installation
From Community Plugins (Recommended)
- Open Obsidian Settings → Community Plugins
- Search for "Smart Linker"
- Click Install, then Enable
Manual Installation
- Download the latest release from GitHub
- Extract to your vault's
.obsidian/plugins/smart-linker/folder - Enable the plugin in Obsidian settings
Usage
Update Related Links for Current Note
- Open any note in your vault
- Run command:
Smart Linker: Update related links for current note(viaCmd/Ctrl+P) - The plugin will insert a block at the end of your note:
<!-- auto-related:start -->
## Related
- [[Note A]]
- [[Note B]]
- [[Note C]]
<!-- auto-related:end -->
Reload Embeddings Index
If you've added new notes or regenerated embeddings:
- Run command:
Smart Linker: Reload embeddings index - Wait for the "Loaded N embeddings" notification
Configuration
Open Settings → Smart Linker to configure:
| Setting | Description | Default |
|---|---|---|
| Embeddings JSON path | Path to Vector Search embeddings file | .obsidian/plugins/vector-search/data.json |
| Top K results | Maximum number of related notes to show | 5 |
| Similarity threshold | Minimum cosine similarity (0.0-1.0) | 0.75 |
| Excluded folders | Folders to exclude from results | .obsidian, Templates, Daily |
| Block heading | Heading text for the related links section | ## Related |
| Use full path in links | Show full path or just note name | true |
| Show similarity score | Display similarity score next to links | false |
JSON Format Support
Smart Linker automatically detects the Vector Search JSON format. It also supports:
- Array of objects:
[{ "path": "...", "embedding": [...] }, ...] - Map format:
{ "path/to/note": [...], ... }
For custom formats, use Manual Mapping mode in settings.
How It Works
- Reads Embeddings — Loads pre-computed vector embeddings from Vector Search plugin
- Normalizes Vectors — Pre-normalizes all vectors for fast cosine similarity calculation
- Finds Similar Notes — Computes similarity between current note and all others
- Deduplicates Results — Keeps only the best match per file (handles chunked notes)
- Updates Block — Inserts or updates the managed block with wiki-links
Supported Embedding Sources
Currently tested with:
- Vector Search plugin (recommended)
The parser architecture is modular, so support for other embedding sources can be added.
Performance
- Handles vaults with 10,000+ notes
- Embeddings are cached in memory after first load
- Search is O(N) but fast due to pre-normalized vectors
- Typical search time: <100ms for 5000 notes
Troubleshooting
"Embeddings file not found"
- Check the embeddings path in settings
- Ensure Vector Search has completed indexing
"No embedding found for current note"
- The note might be new — run Vector Search to index it
- Check if the note is in an excluded folder
Links are duplicated
- This was fixed in v0.1.0 — update to latest version
License
MIT License — see LICENSE file.
Credits
- Uses embeddings from Vector Search by @ashwin271
- Built for Obsidian
Support
- 🐛 Report bugs
- 💡 Request features
- ⭐ Star on GitHub if you find it useful!