Files
ai-agent/README.md
2026-03-10 21:07:23 +01:00

2.8 KiB
Executable File

my-brain-importer

Persönlicher Wissens-Agent für den AI_Brain. Importiert Markdown-Notizen und Bildbeschreibungen in eine Qdrant-Vektordatenbank und beantwortet Fragen darüber mit einem lokalen LLM.

Architektur

AI_Brain/
  *.md Dateien
      │
      ▼
  bin/ingest          Embeddings via LocalAI
      │
      ▼
  Qdrant (NAS)  ◄──── bin/ask ──► LM Studio (Chat)
  • Embeddings: LocalAI unter embedding.url (Modell konfigurierbar)
  • Vektordatenbank: Qdrant auf dem NAS
  • Chat-Completion: LocalAI unter chat.url (Modell konfigurierbar)

Projektstruktur

AI-Agent/
  cmd/
    ingest/main.go        Entry Point für ingest-Binary
    ask/main.go           Entry Point für ask-Binary
  internal/
    config/config.go      Config-Struct, Clients, Verbindungen
    brain/
      ingest.go           Markdown-Import, Chunking
      ingest_json.go      JSON-Import (Bildbeschreibungen)
      ask.go              Suche + LLM-Antwort
  bin/                    Kompilierte Binaries (von build.sh erzeugt)
  config.yml              Alle Einstellungen
  build.sh                Baut beide Binaries

Konfiguration

Alle Einstellungen in config.yml (muss im Arbeitsverzeichnis liegen):

qdrant:
  host: "192.168.1.4"
  port: "6334"
  api_key: "..."
  collection: "jacek-brain"

embedding:
  url: "http://192.168.1.118:8080/v1"
  model: "qwen3-embedding-4b"
  dimensions: 2560          # muss zum Modell passen

chat:
  url: "http://192.168.1.118:8080/v1"
  model: "qwen3.5-4b-claude-4.6-opus-reasoning-distilled"

brain_root: "/mnt/c/Users/jacek/AI_Brain"
top_k: 3

Wichtig: Wenn du embedding.model oder dimensions änderst, muss die Qdrant-Collection neu erstellt werden (im Dashboard löschen, dann ingest erneut ausführen).

Build

bash build.sh

Erzeugt bin/ingest, bin/ingest.exe, bin/ask, bin/ask.exe.

Nutzung

# Markdown-Dateien aus brain_root importieren
./bin/ingest

# Alternatives Verzeichnis angeben
./bin/ingest /pfad/zum/verzeichnis

# Bildbeschreibungen aus JSON importieren
./bin/ingest image_descriptions.json

# Frage stellen
./bin/ask "Was sind meine Reisepläne für Norwegen?"
./bin/ask "Erzähl mir über Veronica Bellmore"

Brain aktualisieren

Kein Löschen der Datenbank nötig — einfach ./bin/ingest erneut ausführen:

  • Bestehende Chunks → gleiche SHA256-ID → Qdrant überschreibt
  • Neue Dateien → neue IDs → werden hinzugefügt

Voraussetzungen

  • Go 1.22+
  • LocalAI läuft auf embedding.url mit dem konfigurierten Embedding-Modell geladen
  • LocalAI läuft auf chat.url mit dem konfigurierten Chat-Modell geladen
  • Qdrant läuft auf dem NAS (Port 6334 gRPC, Port 6333 Dashboard)