gDown für KI

Ein KI-Assistent erwartet von einer Datenbank drei Dinge: ihr Modell zu verstehen, zu finden, was er sucht, nach Bedeutung ebenso wie nach Wörtern, und zu schreiben, ohne etwas kaputt machen zu können. gDown hat alle drei, in derselben Engine und mit denselben Rechten wie jeder andere Client.

MCP-Server

POST /mcp spricht das Model Context Protocol: Claude oder jeder MCP-Client liest das Schema (JSON, Mermaid, Cypher, JSON Schema, GraphQL), führt lesende Abfragen aus, fragt den Plan einer Abfrage ab, ohne sie auszuführen, und schreibt. Er handelt mit der Identität seines Tokens oder Kontos, also mit seinen Rollen und Rechten; ein Werkzeug, das er nicht benutzen darf, wird nicht einmal aufgelistet. Gespeicherte Abfragen (My APIs) sind ebenfalls Werkzeuge.

Vektorsuche

CREATE VECTOR INDEX auf einer Embedding-Eigenschaft, dann liefert db.index.vector.queryNodes die k nächsten Nachbarn nach Kosinus- oder euklidischer Ähnlichkeit. Exakte Suche bis 2 000 Vektoren, danach ein angenäherter HNSW-Graph (gemessener Recall von mindestens 0,9), der Änderungen folgt.

Volltextsuche

CREATE FULLTEXT INDEX über mehrere Labels und Eigenschaften, mit Analyzern (standard, simple, english, keyword...) und Abfragen mit Begriffen, +Pflicht, -Ausschluss, "genaue Wendung", Präfix*, unscharf~ und Eigenschaft:Begriff, nach tf-idf bewertet.

Beide Suchen sind Abfragen wie jede andere und lassen sich in einer einzigen Anweisung mit dem Graphen verbinden: Man findet die Passagen, die einer Frage inhaltlich am nächsten sind, folgt den Beziehungen zu Quelle, Autor oder Produkt und gibt diesen Kontext an den Assistenten. Das ist die Grundlage der erweiterten Suche (RAG) auf verknüpften Daten.

Schreiben, ohne etwas kaputt zu machen

  • Probelauf: Ein Schreibvorgang läuft in einer zurückgerollten Transaktion, und der Agent sieht die Änderungen, die er bewirken würde.
  • Direkt oder per Freigabe: Standardmäßig wird das Schreiben sofort angewendet, im Rahmen der Rechte des Agenten; im Modus „staged“ wird es zu einem Vorschlag, in einer replizierten Datenbank gespeichert, den ein Prüfer freigibt oder ablehnt.
  • Eigene Rechte: Geben Sie dem Agenten eine Rolle, die auf die Datenbanken und Labels beschränkt ist, die er braucht, nicht die eingebaute Schreibrolle; dann erreicht er die Vorschlagsdatenbank nicht.
  • Grenzen und Spur: Zurückgegebene Zeilen, Anweisungsgröße und Schreibvorgänge pro Minute sind begrenzt; Schreibvorgänge erscheinen im Audit-Protokoll (Protokoll mcp) und tragen $_agent, $_at und $_source.

gDown AIM: Gedächtnis für Ihren KI-Assistenten

gDown merkt sich auch ein Projekt für Claude Code oder jeden MCP-Client: Schicken Sie seine Markdown-Dateien und Commits, und der Assistent befragt das Gedächtnis über die Werkzeuge memory_*, innerhalb eines Token-Budgets, mit der Quelle jeder Antwort.

  • Ein Paket pro Repository: die von Git verfolgten Markdown-Dateien und die Commits der letzten Tage, geschickt von einem Python-Skript ohne Abhängigkeit (oder mit curl); gDown zieht daraus typisierte Fakten (Regeln, Entscheidungen, Fallstricke, Planpunkte, Eigenschaften, Routen, Grenzen) und ersetzt den vorherigen Stand atomar.
  • Hybride Suche: Konzepte, Volltext und Vektoren; die Embeddings berechnet gDown selbst, im eigenen Prozess (integriertes Modell, Standard) oder über Ihr eigenes Ollama oder Ihre OpenAI-kompatible API.
  • Fünf Werkzeuge: memory_ask (eine Frage, ein Repository, ein Budget), memory_context (was für eine Aufgabe gilt), memory_about (ein Konzept), memory_status und memory_note; jede Antwort nennt ihre Quelle (Datei und Zeile, Commit oder Notiz).
  • Ein widerrufbares API-Token, gebunden an ein lokales Konto, das auf eine Datenbank beschränkt ist: Der Assistent liest und darf nur Notizen anlegen (memory_note ist sein einziger Schreibzugriff); DROP API TOKEN kappt seinen Zugang sofort.

Ohne Embeddings (provider none, oder ein Ollama, das nicht antwortet) gelingt das Schicken, und die Suche bleibt lexikalisch, bis der Rückstand eingebettet ist. Ollama (ollama pull bge-m3; unter Linux muss es auf der Docker-Schnittstelle lauschen) ist optional: das integrierte Modell braucht keines.

RAG: Retrieval-Augmented Generation in gDown

gDown betreibt Retrieval-Augmented Generation (RAG): Es findet die Passagen, die eine Frage beantworten, nach Bedeutung und nach Wörtern, samt dem Graphen um sie herum, damit ein Sprachmodell aus Ihren Daten antwortet und sie zitiert. gDown ruft ab; das Modell, das die Antwort schreibt, ist Ihres.

Für Assistenten: gDown AIM

  • Aufnahme: die Markdown-Dateien und die Commits eines Repositorys werden zu typisierten Fakten und Abschnitten von 1 000 Zeichen mit einer Überlappung von 100.
  • Hybride Suche: der Konzeptgraph, der Volltext und die Vektoren (nach Repository vorgefiltert) werden kombiniert, dann gerankt und auf ein Token-Budget gekürzt.
  • Jede Antwort nennt ihre Quelle (Datei und Zeile, Commit oder Notiz).
  • Bereitgestellt über die MCP-Werkzeuge memory_ask, memory_context, memory_about und memory_note; das eigene Modell des Assistenten erzeugt die Antwort.

Für Ihre Anwendungen

  • Ein Vektorindex auf einer beliebigen Eigenschaft: exakte Suche bis 2 000 Vektoren, danach ein HNSW-Graph mit einem gemessenen Recall von mindestens 0,9.
  • Vorgefilterte Suche (Labels, Eigenschaftswerte): die k Ergebnisse werden nach dem Filter gezählt.
  • Vektorsuche, Cypher-Graphabfragen und Volltext liegen in derselben Datenbank und derselben Anweisung: die nächsten Passagen finden, dann den Beziehungen bis zu ihrer Quelle folgen.

Embeddings: integriert oder extern

  • Integriert (Standard, provider=onnx): das Modell multilingual-e5-small, int8-quantisiert, 384 Dimensionen, läuft im gDown-Prozess über ONNX Runtime. Die Modelldateien sind per SHA-256 festgelegt, werden einmal heruntergeladen oder aus einem Ordner gelesen, und das Modell wird im Leerlauf entladen. Kein Text verlässt den Server.
  • Extern (provider=http): Ollama (empfohlen bge-m3, 1 024 Dimensionen) oder eine OpenAI-kompatible API. Das API-Token wird nur an diese API gesendet und nie protokolliert, und die Hosts, die der Anbieter aufrufen darf, sind auf eine Positivliste beschränkt (standardmäßig Loopback).
  • Keiner (provider=none): die Suche nutzt nur den Graphen und den Volltext.
  • Modellwechsel: die von einem anderen Modell eingebetteten Abschnitte werden als veraltet markiert und bei Bedarf neu eingebettet.

Gemessene Qualität

gDown AIM wurde mit drei Fragensätzen am echten Arbeitsbereich (32 Repositorys) bewertet, ohne und mit Vektoren (bge-m3 über Ollama). Die Tabelle zeigt den Recall, den Anteil der gefundenen erwarteten Fakten, und die Größe der Antworten. Diese Tabelle enthält nicht das integrierte ONNX-Modell.

Recall und Größe der Antworten in Tokens. Die Vektoren änderten den Recall nur bei Satz 3 (+11,1 Punkte) und verkürzten die Antworten der Sätze 2 und 3.

Grenzen: Die Vektor- und Volltextindizes liegen im Speicher und werden beim Öffnen der Datenbank neu aufgebaut; kein Strom vom Server zum Client, kein MCP-eigenes OAuth (Token oder Konto, wie die übrigen Routen); Gedächtnis: ohne Embeddings (provider none, oder ein Ollama, das nicht antwortet) bleibt die Suche lexikalisch, bis der Rückstand eingebettet ist. Ein Benchmark der Vektorsuche oder von MCP ist noch nicht veröffentlicht: Die Zahlen dieser Seite decken sie nicht ab.