# 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): ```yaml 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 bash build.sh ``` Erzeugt `bin/ingest`, `bin/ingest.exe`, `bin/ask`, `bin/ask.exe`. ## Nutzung ```bash # 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)