,

Lokale KI in Obsidian integrieren

Das Tool meiner Wahl für Notizen sowie Wissens- und Dokumentenmanagement ist seit Jahren Obsidian.

Wer ganz neu bei Obsidian ist und Grundlageninformationen benötigt, dem sei die offizielle Projektwebsite https://obsidian.md/ ans Herz gelegt.

Obsidian bringt von Haus aus sehr viele Funktionen mit, zudem gibt es eine Bibliothek von tausenden an Plugins, die Obsidian um nahezu jede vorstellbare Funktion erweitern.

Was Obsidian von Haus aus nicht mitbringt: die Möglichkeit, die eigenen Notizen und Dokumente mit einer KI durchsuchbar zu machen oder gar mit den eigenen Notizen zu chatten.
Genau das wollte ich erreichen und im Nachfolgenden skizziere ich meinen Weg dorthin.

Meine Voraussetzungen

Meinen Obsidian-Vault (der Speicherplatz für Notizen und Dokumente) befülle ich seit Jahren mit Texten, PDF-Dokumenten und Bildern.
Zudem verfüge ich über ein ChatGPT-Plus-Abo. Die naheliegende Idee wäre nun, Obsidian per API mit ChatGPT zu verbinden (das Plus-Abo braucht es dazu noch nicht mal).
Diese Lösung hat aber zwei Nachteile: zum einen fallen Kosten für die API-Nutzung an (wenngleich diese bei moderater Nutzung gering sein dürften), zum anderen verschafft man so der Firma Open AI Zugang zum eigenen Obsidian-Vault und damit zu sämtlichen seit Jahren angesammelten, oft persönlichen, Notizen.

Schnell war für mich klar: ich möchte eine lokale KI aufsetzen, die meine Informationen auf dem Notebook verarbeitet und nicht ins Internet schaufelt.

Eine weitere wichtige Voraussetzung:
Als Arbeitsgerät für das Projekt habe ich mein Macbook Air mit M3-Prozessor und 16GB RAM verwendet.
Dieses Gerät hat genug Wumms, um die Anfragen an die KI lokal durchzuführen.
Spoiler: an der Wärmeentwicklung und am Akkuverbrauch merkt man dann auch schnell, dass die Hardware hier wirklich stark gefordert wird. Auf einem durchschnittlichen Windows-Computer dürfte mein Setup zwar auch laufen, man sollte sich aber auf Wartezeiten bei den Anfragen gefasst machen.

Die verwendeten Komponenten

Das Projekt ließe sich mit einer Vielzahl von Komponenten und Kombinationsmöglichkeiten lösen.
An dieser Stelle stelle ich beispielhaft mein Setup vor, welches für mich gut funktioniert.

  • Obsidian – das zugrunde liegende Tool für Notizen und Dokumente
  • Copilot Plugin – ein Plugin für Obsidian von Logan Yang. Ich nutze die kostenlose Version – es gibt auch eine kostenpflichtige Plus-Version
  • Ollama – eine Server-Software, mit der man KI-Modelle lokal auf dem Rechner ausführen kann
  • Mistral – ein Open-Source-Sprachmodell aus Frankreich, das lokal eingesetzt werden kann
  • nomic-embed-text – ein Modell zur Umwandlung von Text in Vektoren für semantische Suche

Die Einrichtung

Die Einrichtung der Komponenten war mit viel Trial and Error verbunden. Im Folgenden schreibe ich, wie es für mich funktioniert hat und erwähne auch, wo ich ggf. Probleme hatte.

Ollama

Zunächst habe ich versucht, Ollama über Homebrew zu installieren. Homebrew ist vergleichbar mit WinGet auf Windows-Systemen oder APT unter Linux. Den Server bekam ich so aber nicht zum Laufen. Die Ursachen habe ich nicht weiter untersucht.

Stattdessen habe ich Ollama schließlich von der Website geladen und installiert: https://ollama.com/

Hier habe ich die Version für Mac heruntergeladen und wie üblich installiert. Es gibt auch Versionen für Windows und Linux. Auf dem Mac hat man nach erfolgter Installation ein freundliches Icon in Form eines Lamas, über das man den Server stoppen kann. Weitere Optionen gibt es hier nicht.

Update von Ollama:
Da bei mir die Installation via Homebrew nicht funktioniert hat, klappt natürlich auch ein Update mit „brew upgrade ollama“ nicht. Man muss also von Zeit zu Zeit die Ollama-Website besuchen und bei Bedarf eine aktualisierte Version herunterladen und installieren.

Mistral

Sobald Ollama installiert ist, lässt sich das Mistral-Modell ganz leicht über einen Befehl im Terminal laden:

ollama pull mistral

Das komplette Sprachmodell wird damit heruntergeladen – Stand heute sind das etwa 4 GB an Daten.
Will man Mistral später updaten, kann man genau den gleichen Befehl ausführen. Ist keine neue Version vorhanden, wird die vorhandene Version nicht angetastet. Gibt es eine neue Version, wird diese vollständig heruntergeladen und die vorhandene Version ersetzt.

nomic-embed-text

Hier geht es um einen Prozess, der Ähnlichkeit mit einem RAG-System hat (Retrieval-Augmented Generation) – es ist aber kein vollständiges RAG.
Was hier passiert: Es werden sog. Embeddings erzeugt, diese werden als Vektoren lokal gespeichert und indexiert. Bei einer Frage an die KI werden die relevanten Vektoren abgerufen und die Antwort mit Ollama generiert.
Für die Nutzung des Systems ist das Verständnis hierfür später nicht erforderlich (ich verstehe es auch nicht so ganz…).

Installation:

ollama pull nomic-embed-text

Mit genau diesem Befehl kann man später auch ein Update durchführen.

Copilot

Um es gleich zu sagen: mit dem omnipräsenten Copilot von Microsoft hat das Plugin nichts zu tun!
Ich frage mich, wann Microsoft wohl juristisch gegen diesen Namen vorgeht… das soll aber nicht unser Problem sein.
Das Plugin Copilot for Obsidian wird von Logan Yang entwickelt.
Es gibt auch eine kostenpflichtige Plus-Version, mit der auch Bilder und PDF-Dateien indexiert werden können. Das ist mit der kostenlosen Version (leider) nicht möglich.
Die Kosten liegen bei ca. 12 Euro im Monat bei jährlicher Subscription. Es gibt auch eine „Believer“ genannte Lifetime-Subscription für ca. 300 Euro.
Ich habe die kommerzielle Version angetestet (indem ich das Abo für einen Monat abgeschlossen habe) und sie hat mich nicht überzeugt. Allerdings befindet sich die Software noch in einer Beta-Phase und reift sicher noch deutlich aus.

Installation:
Wie bei Obsidian üblich wird das Plugin direkt über Obsidian im Bereich Community plugins installiert und muss danach aktiviert werden.

Einstellungen

Im Einstellungs-Dialog müssen nun einige sehr wichtige Parameter gesetzt werden:

Im Reiter „Model“ habe ich zunächst sämtliche Modelle abgewählt, in dem ich das Häkchen bei „Enable“ entfernt habe. Das mache ich sowohl bei „Chat Models“ als auch bei „Embedding Models“. Schließlich wollen wir ja ein eigenes, lokales Modell verwenden.

Ein eigenes Chat Model erzeigen wir, in dem wir auf „+ Add Custom Model“ klicken.

Hier habe ich folgende Einstellungen vorgenommen:

Die Einstellungen des lokalen Chat-Models

Ganz wichtig ist hier: der Model Name MUSS mistral lauten. Der Display-Name dagegen kann frei festgelegt werden. Als Provider wählen wir Ollama und Base URL kann leer bleiben (sofern wir z.B. den Port in Ollama nicht anders festgelegt haben). Einen AP-Key benötigen wir nicht, da dies ja unser eigenes Modell ist.

Ein eigenes Embedding Model erzeugen wir, in dem wir auf „+ Add Custom Model“ klicken.

Hier sind meine Einstellungen für das eigene Embedding-Model:

Die Einstellungen des lokalen Embedding-Models

Ganz wichtig ist hier, exakt „nomic-embed-text“ beim Model-Name einzutragen.
Der Display-Name ist wieder frei wählbar.
Als Provider geben wir „Ollama“ an.
Die Base URL kann wieder leer bleiben, sofern wir Ollama nicht anders konfiguriert haben.
Einen API-Key brauchen wir wieder nicht.

Die Einstellungen im Reiter „Basic“

Jetzt erst, da wir unsere eigenen Modelle angelegt haben, können wir die notwendigen Einstellungen im Reiter Basic vornehmen.

Die Plugin-Einstellungen im Reiter Basic

Hier müssen nun noch wichtige Einstellungen vorgenommen werden, dann kann es losgehen!

Einen API Key müssen wir wie erwähnt nicht setzen, da wir eine eigene KI nutzen.

Ganz wichtig sind hier nun die Einstellungen bei „Default Chat Model“ und bei „Embedding Model“: hier wählen wir in den Comboboxen unsere jeweils vorher definierten Modelle aus. Diese sollten mit den von uns frei angegebenen Namen dort vorhanden sein.

Da wir hauptsächlich mit unserem Vault chatten wollen, stellen wir bei „Default Mode“ „Vault QS (Basic)“ ein.
Dann habe ich noch eingestellt, dass die Chats in der Sidebar laufen sollen und Chats im Standardordner „copilot-conversations“ gepeichert werden soll. Mit diesen Einstellungen kann man experimentieren – entscheidend für das grundsätzliche Funktionieren sind nur die beiden Modelle.

An diese Stelle empfiehlt es sich, Obsidian zu beenden und neu zu starten: die Indexierung sollte beim Neustart von alleine starten und je nach Größe des Vault in einigen Sekunden oder Minuten beendet sein.

(Anmerkung: später lässt sich der Index neu erzeugen, indem man im Chat ganz rechts unten auf das …-Menü klickt und dann „Refresh Vault Index“ klickt. Außerdem habe ich in den Einstellungen auf dem Reiter „QA“ den Schalter „Auto-Index Strategy“ auf „ON STARTUP“ gestellt. Das scheint mir aber nicht so richtig zuverlässig zu funktionieren.)

Die Verwendung der KI

Wenn alles sauber konfiguriert ist, kann man den Chat direkt in der Obsidian-Oberfläche starten:
In der Seitenleiste ganz links findet sich der neue Button „Open Copilot Chat“ – der Chat startet dann rechts in der Seitenleiste.

Hier kann man nun Fragen stellen wie „In welchen meiner Dokumente geht es um Power BI“ oder „Wann habe ich mein Balkonkraftwerk in Betrieb genommen“ oder was immer einem einfällt.

Was mir besonders gut gefallen hat: ich gebe seit Jahren immer mal wieder Geld für ein Projekt „XY“ aus. Die Informationen hierzu finden sich in ganz unterschiedlichen Notizen.
Meine Frage: „Wie viel Geld habe ich insgesamt für Projekt XY ausgegeben?“ hat mir die KI beantwortet, in dem sie alle relevanten Notizen aufgelistet hat, die Geldbeträge einzeln erwähnt und sogar die Gesamtsumme korrekt berechnet hat! Das fand ich beeindruckend.

Feature: Relevant Notes

Mit dem Feature Relevant Notes listet die KI bei einer geöffneten Notiz alle weiteren Notizen auf, die sie für relevant hält.
Das funktioniert mal mehr, meistens allerdings weniger. Das Feature lässt sich abschalten und das werde ich vermutlich auch tun. Bei einer Notiz über eine beim Hautarzt entfernte Warze wurde mir die Rechnung für die letzte Wartung der Gastherme als relevant angezeigt – das finde ich weniger intelligent.

Einschränkungen

Wir haben nun schon ein sehr leistungsfähiges und nützliches System.
Dennoch gibt es Grenzen und Einschränkungen:

  • ich nutze Obsidian an mehreren Computern. Die KI lässt sich momentan aber nur an meinem MacBook nutzen, da mein Windows-Computer keinen Zugriff auf die KI hat. Das könnte man zwar in den Ollama-Einstellungen ändern, dann müsste mein MacBook aber laufen, wenn ich vom Windows-PC darauf zugreifen will
  • PDF-Dateien werden nicht indexiert. Das ist ein Manko, welches wie oben erwähnt die Bezahl-Variante Copilot Plus (da fällt mir gerade auf: schon wieder Konfliktpotential mit Microsoft) lösen möchte, was bei mir nicht so richtig funktioniert hat.
    Für die Zukunft habe ich mir bereits überlegt: eventuell lassen sich PDF-Dateien automatisiert über das Plugin „Text Extractor“ in Markdown-Notizen umwandeln und dann indexieren… man braucht ja noch Verbesserungspotential für die Zukunft
  • die KI (und das liegt vermutlich hauptsächlich an Mistral) antwortet sehr oft auf englisch, auch wenn man auf deutsch fragt. Besonders ärgerlich ist das, wenn man z.B. nach allen Notizen mit dem Tag „Rechnung“ sucht, die KI „Rechnung“ aber in „Invoice“ umwandelt und daher 0 Ergebnisse liefert. Hier kann und muss man die Anweisung geben, exakt nach dem Tag „Rechnung“ zu suchen

Alternativen

Zum Schluss möchte ich noch einige mögliche Alternativen zu den von mir genutzten Komponenten erwähnen.

  • LM Studio statt Ollama
    Von mir nicht getestet, aber in einschlägigen Blogs und YouTube-Kanälen oft erwähnt
  • Statt Mistral lassen sich jede Menge weitere Modelle verwenden: Gemma, OpenChat, TinyLlama… getestet habe ich nichts davon
  • Smart Connections statt Copilot – Smart Connections verfolgt einen ähnlichen Ansatz wie Copilot und hat über eine halbe Million Installationen, ist also extrem weit verbreitet. Ich habe Smart Connections allerdings in Stunden des Experimentierens nicht dazu gebracht, mit meinen lokalen Modellen zu sprechen und habe schließlich aufgegeben

Das war mein erster Ausflug in die Welt selbst gehosteter KI.
Wenn ihr Anregungen oder Fragen habt, schreibt mir gerne!

0 Kommentare

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert