# 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).
