Oscar Campo11k downloadsLocal Graph RAG powered by LightRAG. Chat with your notes using deep knowledge graph connections.
Graph-based AI chat for your Obsidian vault.
Chat with your vault using a Knowledge Graph, not just keyword search. Neural Composer runs a local LightRAG server, builds a graph of your notes, and lets you ask questions that trace connections across your entire vault.
Requirements: Python 3.10+ · pip install "lightrag-hku[api]" · Obsidian 1.7.2+
| ⚡ Automated Server | Starts and stops the LightRAG Python process automatically. No terminal needed. |
| 🧠 Graph + Vector Search | Combines entity-relationship traversal with semantic vector search for deep, contextual answers. |
| 📂 Vault Sync | Set a watched folder — notes are re-indexed on save. Status dots in the file explorer show each note's graph state: 🟢 processed · 🟡 processing · 🔴 failed · 🔵 removed. |
| 📊 Knowledge Graph View | Explore your graph visually in 2D or 3D. Overview mode renders all nodes; Explore mode does a BFS walk from any entity. |
| 🌐 Remote Server | Connect to a LightRAG instance on a NAS, VPS, or Docker container. |
| 🤖 MCP Tools | Expose your graph to any MCP-compatible client (Claude Desktop, etc.). |
| 🔍 Source Transparency | Every answer includes citations [1] linked to the exact notes and text chunks that were used. |
| 🔒 Local & Private | Use Ollama for a fully offline setup, or any hosted provider you prefer. |
md txt docx pdf pptx xlsx rtf odt epub html htm xml json yaml yml csv tex log conf ini properties sql bat sh c cpp py java js ts swift go rb php css scss less
Standard vector search finds similar text. Graph RAG finds connected ideas.
| Standard Vector Search | Neural Composer (Graph RAG) | |
|---|---|---|
| How it works | Finds chunks that match your query semantically | Traverses relationships between entities in your notes |
| Best for | "What is X?" | "How does X influence Y across my research?" |
| Context quality | Often fragmented | Holistic — sees the whole picture |
| Multi-hop reasoning | ✗ | ✓ |
📖 Full documentation on the Wiki
# Recommended: use a virtual environment
python -m venv .venv && source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install "lightrag-hku[api]"
Then find the path to the installed executable (you'll need it in Step 3):
which lightrag-server # macOS / Linux
where.exe lightrag-server # Windows
Search for "Neural Composer" in Settings → Community Plugins → Browse and enable it.
Open Settings → Neural Composer. The panel has a sidebar with seven tabs:
lightrag-server path, choose a data directory, and optionally configure a Watched Folder for auto-syncA green dot in the status bar confirms the server is running. Right-click any folder in your vault to ingest notes and start chatting.
| Feature | Where to configure |
|---|---|
| Watched Folder | Settings → Graph & Vault → Watched folder |
| Remote Server | Settings → Graph & Vault → Use remote server |
| Custom Ontology | Settings → Graph & Vault → Ontology section — teach the graph domain-specific entity types (e.g. "Experiment", "Theorem") |
| Reranking | Settings → Graph & Vault → Reranking — Jina AI, Cohere, or a custom local endpoint |
| MCP Servers | Settings → Tools (MCP) |
| Graph Visualization | Settings → Graph & Vault → Graph rendering engine — 2D (fast) or 3D (immersive) |
| Performance Tuning | Settings → Advanced — chunk size, overlap, async workers |
Custom .env overrides |
Settings → Advanced — raw .env editor with full LightRAG configuration access |
Neural Composer is designed with privacy as a core principle.
| Destination | When | Why |
|---|---|---|
| Your AI provider (OpenAI, Anthropic, Gemini, Groq, etc.) | Every chat message or ingestion | To generate responses and embeddings. Only notes you explicitly ingest or attach are sent. |
Your local LightRAG server (localhost) |
Every query and ingestion | The plugin talks to a Python process on your own machine. No data leaves. |
| Your remote LightRAG server | Only if you configure a remote URL | Off by default. Opt-in only. |
Using Ollama + local LightRAG = zero data leaves your machine.
github.com or any external domain at runtime. Links in the UI are navigation-only — never fetched programmatically.data.json in your local vault.| Capability | Reason |
|---|---|
fs (filesystem) |
Writes the LightRAG .env config file to your chosen work directory, which may be outside the vault. |
child_process (shell) |
Starts and stops the local LightRAG Python server. The command is always the exact path you configure — no user input is interpolated into shell arguments. |
| Vault enumeration | Lists file paths for ingestion and the search index. File content is only read when you explicitly ingest a file. |
| Clipboard | Inherited from the Lexical rich-text editor in the chat input. Standard paste operations only. |
atob/btoa (Base64) |
Used by bundled deps: @modelcontextprotocol/sdk decodes JWT tokens for MCP OAuth; sigma/three-forcegraph encode WebGL shader data. No sensitive data is encoded this way. |
new Function |
Used by two bundled libraries: ngraph.forcelayout (3D physics) and ajv (JSON schema validation via MCP SDK). Neither executes user-provided code. |
lightRagUseRemote is forced on, local-server management settings are hidden, and the bundle ships an events polyfill plus a require shim so node-only deps don't abort module evaluation on a non-Electron webview./graphs HTTP endpoints. A right-anchored sidebar slides in/out via a new toolbar button and an x next to the "Node manager" title. Node sizes shrunk for narrow viewports. Newer LightRAG versions (≥1.4) now use the file_path property sent on each node, so the local kv_store_*.json reads aren't needed for citation filenames on either platform.AbstractJsonRepository.ensureDirectory() was fire-and-forget — on Android adapter.list() raced ahead of mkdir and crashed the template list. Every public method now awaits a shared directory-ready promise.!important CSS declarations — replaced with higher-specificity selectors to comply with the Obsidian plugin linter..md files..env editor.Built on the shoulders of giants: