Datenquellen
Datenquellen sind die Verbindung zwischen KIara und den Unternehmensdaten. Jede Datenquelle verbindet einen Konnektor (Dateisystem, SMB, WebDAV, E-Mail, SQL) mit konfigurierbaren Ingestion-Einstellungen (Chunking, DDU, VLM) und optionalen Zugriffsrechten (Gruppen/Benutzer).
Uebersicht & Tabelle
Der Datenquellen-Tab zeigt alle konfigurierten Quellen in einer zentralen Tabelle. Es gibt keine Sub-Tabs — alle Aktionen (Erstellen, Bearbeiten, Indexieren, Loeschen) sind direkt ueber die Tabelle erreichbar.
Tabellen-Spalten
| Spalte | Beschreibung | Hinweis |
|---|---|---|
| Name | Anzeigename der Datenquelle. Klick oeffnet das Bearbeiten-Modal. | Frei waehlbar, muss nicht eindeutig sein (die ID ist intern eindeutig). |
| Typ | Konnektor-Typ als farbiges Badge (z.B. »SMB-Freigabe«, »E-Mail (IMAP)«). | Wird beim Erstellen festgelegt und kann nachtraeglich nicht geaendert werden. |
| Quelle | Formatierte Zusammenfassung der Verbindungsdaten (z.B. server:/Share). |
Aus der Konnektor-Konfiguration generiert. |
| Chunk-Strategie | Aktive Chunk-Strategie (auto, prose, code, email, ...). | Siehe Chunk-Strategie. |
| Chunks | Anzahl der Chunks pro Embedding-Modell, inkl. letztem Indexierungszeitpunkt. | Wird nach jeder Indexierung aktualisiert. Mehrere Modelle moeglich. |
| Ingestion-Status | Aktueller Status: idle, running (gruen), paused (orange), error (rot). | Bei laufender Indexierung wird ein Fortschrittsbalken angezeigt. |
| Zugriff | Zugewiesene Gruppen und Benutzer als Tag-Liste. | Ohne Zuweisung: Alle Benutzer haben Zugriff. |
Aktionen pro Datenquelle
Das Drei-Punkte-Menue jeder Zeile bietet:
| Aktion | Beschreibung |
|---|---|
| Bearbeiten | Oeffnet das Edit-Modal mit allen Einstellungen. |
| Berechtigungen | Gruppen- und Benutzer-Zuweisung (siehe Zugriffsrechte). |
| Verbindung testen | Prueft Erreichbarkeit der Quelle (Server, Credentials, Pfad). |
| Status | Zeigt Ingestion-Details: Phase, Fortschritt, Fehler. |
| Indexieren | Inkrementelle Indexierung — nur neue/geaenderte Dateien. |
| Voll-Indexieren | Alle Dateien neu indexieren (File-Hashes werden zurueckgesetzt). |
| Pause / Abbrechen | Nur bei laufender Indexierung sichtbar. |
| Loeschen | Entfernt die Datenquelle und alle zugehoerigen Daten (irreversibel). |
Konnektor-Typen
Jeder Konnektor definiert sein eigenes Config-Schema. Die Felder werden im Create/Edit-Modal
dynamisch anhand des gewaehlten Typs gerendert. Passwort-Felder (secret: true)
werden AES-verschluesselt gespeichert und im UI maskiert angezeigt (••••••••).
Lokal
Liest Dateien aus einem lokalen Verzeichnis auf dem KIara-Server.
| Feld | Typ | Pflicht | Beschreibung | Empfehlung |
|---|---|---|---|---|
path |
Text | Nein | Absoluter Pfad zum Verzeichnis. Leer = globaler Pfad aus kiara.yaml. |
Immer einen expliziten Pfad angeben — so ist die Datenquelle unabhaengig von
der globalen Config. Beispiel: /data/dokumente/technik
|
kiara) braucht Leserechte
auf das Verzeichnis. Pruefen mit: sudo -u kiara ls /data/dokumente/technik
SMB-Freigabe
Verbindet sich mit Windows-Dateifreigaben (SMB/CIFS). Unterstuetzt Domain-Authentifizierung.
| Feld | Typ | Pflicht | Standard | Beschreibung | Empfehlung |
|---|---|---|---|---|---|
server |
Text | Ja | — | Hostname oder IP des Fileservers. | Hostname bevorzugen (fileserver.firma.local). |
share |
Text | Ja | — | Name der Freigabe (ohne fuehrenden Backslash). | Beispiel: Documents, Abteilungen$ |
username |
Text | Nein | — | Windows-Benutzername fuer die Authentifizierung. | Dedizierten Service-Account verwenden (z.B. svc-kiara-read). |
password |
Passwort | Nein | — | Passwort. Wird AES-verschluesselt gespeichert. | Leer lassen bei Edit = bestehendes Passwort beibehalten. |
domain |
Text | Nein | — | Windows-Domaene fuer die Authentifizierung. | Beispiel: FIRMA (NetBIOS-Name) oder firma.local (FQDN). |
sub_path |
Text + Browse | Nein | — | Unterverzeichnis innerhalb der Freigabe. Browse-Button verfuegbar. | Nuetzlich um nur einen Teilbereich einer grossen Freigabe zu indexieren. |
sub_path zeigt den
Verzeichnisinhalt der Freigabe live an. Dafuer muessen Server, Freigabe und Credentials
bereits eingetragen sein.
WebDAV
Verbindet sich mit WebDAV-Servern (z.B. Nextcloud, ownCloud, SharePoint).
| Feld | Typ | Pflicht | Standard | Beschreibung | Empfehlung |
|---|---|---|---|---|---|
url |
Text | Ja | — | Vollstaendige WebDAV-URL. |
Nextcloud: https://cloud.firma.de/remote.php/dav/files/USERNAME/Trailingslash beachten! |
username |
Text | Nein | — | WebDAV-Benutzername. | Bei Nextcloud: App-Passwort verwenden (Einstellungen → Sicherheit → App-Passwoerter). |
password |
Passwort | Nein | — | Passwort. Wird verschluesselt gespeichert. | — |
base_path |
Text + Browse | Nein | / |
Basispfad innerhalb der WebDAV-Struktur. Browse-Button verfuegbar. | Beispiel: /Dokumente/Projekte |
E-Mail (IMAP)
Indexiert E-Mails inkl. Anhaenge ueber IMAP. Unterstuetzt SSL und Ordner-Auswahl.
| Feld | Typ | Pflicht | Standard | Beschreibung | Empfehlung |
|---|---|---|---|---|---|
server |
Text | Ja | — | IMAP-Server (Hostname oder IP). | Beispiel: mail.firma.de |
port |
Zahl | Nein | 993 |
IMAP-Port. 993 = SSL (Standard), 143 = unverschluesselt. | 993 mit SSL empfohlen. |
ssl |
Checkbox | Nein | An | SSL/TLS-Verschluesselung aktivieren. | Immer aktiviert lassen. |
username |
Text | Nein | — | IMAP-Benutzername (oft die E-Mail-Adresse). | Beispiel: benutzer@firma.de |
password |
Passwort | Nein | — | IMAP-Passwort. Wird verschluesselt gespeichert. | Bei Microsoft 365: App-Passwort verwenden (MFA-kompatibel). |
folders |
Text / Ordner-Picker | Nein | INBOX |
Kommaseparierte Liste oder Auswahl ueber den Ordner-Picker-Button. Der Picker laedt die Ordner-Hierarchie vom Server. |
Beispiel: INBOX, Sent, Archive/2025Ordner-Picker empfohlen — zeigt die exakten Server-seitigen Namen. |
since_days |
Zahl | Nein | 90 |
Nur E-Mails der letzten N Tage indexieren. | 90-180 Tage fuer die meisten Faelle. Zu grosse Zeitraeume erhoehen Indexierungszeit und Speicherbedarf. |
download_attachments |
Checkbox | Nein | An | E-Mail-Anhaenge herunterladen und indexieren. | Aktiviert lassen — Anhaenge enthalten oft die relevantesten Informationen. |
max_attachment_mb |
Zahl | Nein | 25 |
Maximale Groesse einzelner Anhaenge in MB. | 25 MB reicht fuer die meisten Dokumente. Sehr grosse Anhaenge (CAD, Videos) sind selten nuetzlich fuer RAG. |
- Outlook/Exchange:
Sent Items,Deleted Items - Dovecot:
Sent,Trash - Gmail:
[Gmail]/Sent Mail,[Gmail]/Trash
Exchange Online (OAuth2)
Verbindet sich mit Microsoft 365 / Exchange Online ueber OAuth2 (App-Registrierung in Entra ID). Kein Benutzer-Passwort noetig — Authentifizierung laeuft ueber Client-ID und Client-Secret.
| Feld | Typ | Pflicht | Standard | Beschreibung | Empfehlung |
|---|---|---|---|---|---|
tenant_id |
Text | Ja | — | Azure AD / Entra ID Tenant-ID (UUID). | Zu finden in Entra Admin Center → Uebersicht → Tenant-ID. |
client_id |
Text | Ja | — | Anwendungs-ID der App-Registrierung (UUID). | Eigene App-Registrierung fuer KIara anlegen mit Mail.Read-Berechtigung (Application). |
client_secret |
Passwort | Ja | — | Client-Secret der App-Registrierung. Wird verschluesselt gespeichert. | Ablaufdatum beachten! Azure-Secrets haben ein maximales Alter von 2 Jahren. |
username |
Text | Ja | — | E-Mail-Adresse des Postfachs, das gelesen werden soll. | Beispiel: team-support@firma.de (Shared Mailbox moeglich). |
folders |
Text / Ordner-Picker | Nein | INBOX |
Kommasepariert oder per Ordner-Picker. | Beispiel: INBOX, Sent Items |
since_days |
Zahl | Nein | 90 |
Zeitraum in Tagen. | Siehe IMAP. |
download_attachments |
Checkbox | Nein | An | Anhaenge herunterladen und indexieren. | — |
max_attachment_mb |
Zahl | Nein | 25 |
Maximale Anhang-Groesse in MB. | — |
- Entra Admin Center → App-Registrierungen → Neue Registrierung
- Name:
KIara Mail Reader - API-Berechtigungen → Microsoft Graph → Anwendungsberechtigung →
Mail.Read - Admin-Zustimmung erteilen
- Zertifikate & Geheimnisse → Neues Client-Secret erstellen
- Tenant-ID, Client-ID und Secret in KIara eintragen
SQL-Datenbank
Indexiert Daten aus relationalen Datenbanken. Unterstuetzt PostgreSQL, MSSQL, MySQL und SQLite. Jede Zeile wird anhand eines konfigurierbaren Templates zu einem Text-Chunk.
| Feld | Typ | Pflicht | Standard | Beschreibung | Empfehlung |
|---|---|---|---|---|---|
dsn |
Passwort | Ja | — | Verbindungsstring (DSN). Wird verschluesselt gespeichert. |
Formate:postgresql://user:pass@host:5432/dbnamemssql+pyodbc://user:pass@host/db?driver=ODBC+Driver+18mysql://user:pass@host:3306/dbnamesqlite:///pfad/zur/datei.db
|
driver |
Dropdown | Nein | auto |
Datenbank-Treiber. |
Optionen: auto (aus DSN erkennen), postgresql,
mssql, mysql, sqlite.auto reicht in den meisten Faellen.
|
query |
Textarea | Nein | — | SQL-Abfrage, die die zu indexierenden Daten liefert. |
Beispiel: SELECT id, titel, beschreibung, kategorie FROM protokolleDie Query sollte die ID-Spalte und alle Text-relevanten Spalten enthalten. |
text_columns |
Text | Nein | — | Kommaseparierte Liste der Spalten, die als Text indexiert werden. | Beispiel: beschreibung, massnahme, kommentar |
id_column |
Text | Nein | id |
Primaerschluessel-Spalte fuer inkrementelle Updates. | Muss eindeutig sein. Standard id passt fuer die meisten Tabellen. |
timestamp_column |
Text | Nein | — | Zeitstempel-Spalte fuer inkrementelle Updates. |
Beispiel: updated_at.
Wenn gesetzt, werden nur Zeilen indexiert, die neuer sind als der letzte Lauf.
|
text_template |
Text | Nein | — | Template fuer die Textgenerierung aus Spalten. |
Beispiel: {titel}: {beschreibung} (Kategorie: {kategorie})Platzhalter sind Spaltennamen in geschweiften Klammern. Ohne Template werden alle Text-Spalten konkateniert. |
timestamp_column und id_column
werden nur geaenderte Zeilen neu indexiert — das spart bei grossen Tabellen erheblich Zeit.
Ingestion-Einstellungen
Die erweiterten Einstellungen im Create/Edit-Modal steuern, wie Dokumente verarbeitet und in Chunks zerlegt werden. Sie sind hinter einem »Erweiterte Einstellungen«-Aufklapper gruppiert.
Chunk-Strategie
Die Chunk-Strategie bestimmt, wie Dokumente in indexierbare Text-Abschnitte (Chunks) zerlegt werden. Jede Strategie hat eigene Defaults fuer Chunk-Groesse und Ueberlappung.
| Strategie | Chunk-Groesse | Ueberlappung | Einsatzgebiet |
|---|---|---|---|
| auto (empfohlen) | variabel | variabel | Erkennt automatisch: Prosa, tabellarisch, Code, Markdown, E-Mail. Beste Wahl fuer gemischte Datenquellen. |
| prose | 768 | 150 | Fliesstext, Berichte, Dokumentationen. |
| tabular | 256 | 0 | Tabellen, CSV, strukturierte Daten. Keine Ueberlappung, da Zeilen unabhaengig. |
| structured | 384 | 50 | XML, JSON, strukturierte Konfigurationsdateien. |
| code | 512 | 100 | Quellcode — chunked nach Funktionen/Klassen, nicht nach Zeichenzahl. |
| 640 | 100 | E-Mails — beruecksichtigt Header, Body und Signatur-Trennung. | |
| custom | frei (100–10.000) | frei (0–5.000) | Manuelle Konfiguration. Blendet Felder fuer Chunk Size und Overlap ein. |
auto ist die beste Wahl fuer die meisten Datenquellen.
custom nur verwenden, wenn die automatische Erkennung nachweislich
schlechte Ergebnisse liefert (z.B. bei sehr speziellen Dokumentformaten).
Document Understanding (DDU)
| Feld | Standard | Beschreibung |
|---|---|---|
DDU aktivieren |
Aus | Aktiviert Docling Document Understanding — konvertiert PDF, Office-Dokumente und Bilder ueber ein Deep-Learning-Modell zu Markdown. Deutlich bessere Ergebnisse bei komplexen Layouts (Tabellen, Spalten, Grafiken). |
DDU OCR fuer Bilder |
An | Nur wenn DDU aktiviert. Fuehrt OCR auf eingebetteten Bildern durch. Nuetzlich fuer gescannte PDFs. |
Vision Language Model (VLM)
| Feld | Standard | Beschreibung |
|---|---|---|
VLM aktivieren |
Aus | Aktiviert die Bildbeschreibung ueber ein Vision Language Model. Bilder (PNG, JPG, etc.) werden durch das VLM beschrieben und der resultierende Text wird indexiert. Unterstuetzt 20+ Bildformate. |
Dateityp-Filter & Ausschlussmuster
| Feld | Typ | Beschreibung | Beispiel |
|---|---|---|---|
Dateitypen |
Text (kommasepariert) | Nur diese Dateitypen indexieren. Leer = alle unterstuetzten Typen. | .pdf, .docx, .xlsx, .txt |
Ausschlussmuster |
Text (Glob-Syntax) | Dateien/Verzeichnisse ausschliessen. | */tmp/*, *.bak, */archiv/* |
Alle Textdateien akzeptieren |
Checkbox | Wenn aktiviert, werden auch Dateien ohne bekannte Endung indexiert, sofern sie als Text erkannt werden (Charset-Erkennung). | Nuetzlich fuer Logdateien, Config-Dateien ohne Endung. |
E-Mail-Anhaenge indexieren |
Checkbox (nur Mail) | Nur fuer IMAP/Exchange: Steuert ob Anhaenge indexiert werden. | Standard: An. |
Sync-Intervall
| Wert | Beschreibung |
|---|---|
global | Verwendet den Systemstandard aus kiara.yaml. |
manual | Keine automatische Synchronisierung — nur manuell ueber die UI oder API. |
daily | Taeglich (einmal pro 24h). |
weekly | Woechentlich. |
monthly | Monatlich. |
custom | Benutzerdefinierter Cron-Ausdruck. |
weekly oder monthly sinnvoll. Fuer E-Mail-Quellen
empfiehlt sich daily, damit neue Mails zeitnah verfuegbar sind.
Zugriffsrechte
Ueber das Berechtigungs-Modal koennen einer Datenquelle Gruppen und/oder einzelne Benutzer zugewiesen werden. Nur zugewiesene Benutzer (direkt oder ueber eine Gruppe) sehen Ergebnisse aus dieser Datenquelle in ihren Chat-Antworten.
| Regel | Beschreibung |
|---|---|
| Keine Zuweisung | Alle Benutzer haben Zugriff (Standard fuer neue Datenquellen). |
| Gruppen zugewiesen | Nur Mitglieder der zugewiesenen Gruppen haben Zugriff. |
| Benutzer zugewiesen | Nur die zugewiesenen Benutzer haben Zugriff. |
| Gruppen + Benutzer | Vereinigung: Gruppenmitglieder UND direkt zugewiesene Benutzer haben Zugriff. |
Indexierung steuern
Inkrementelle vs. Voll-Indexierung
| Modus | Beschreibung | Wann verwenden |
|---|---|---|
| Indexieren | Vergleicht File-Hashes (Pfad + Groesse + mtime). Nur neue oder geaenderte Dateien werden verarbeitet. Bestehende Chunks bleiben erhalten. | Standardfall — fuer regelmaessige Updates. |
| Voll-Indexieren | Setzt alle File-Hashes zurueck und verarbeitet jede Datei neu. Bestehende Chunks werden vorher geloescht. | Nach Aenderung der Chunk-Strategie, nach DDU-Aktivierung, bei Verdacht auf inkonsistente Daten. |
Pipeline-Phasen
Die Indexierung durchlaeuft folgende Phasen (sichtbar im Status-Dialog):
- Scanning — Dateien auflisten und Hashes berechnen
- Loading — Dateien laden und in Text konvertieren (ggf. via DDU/VLM)
- Chunking — Text in Chunks zerlegen
- Embedding — Chunks vektorisieren und in Qdrant speichern
Pause und Abbruch
- Pause — Unterbricht die Pipeline nach dem aktuellen Batch. Kann fortgesetzt werden.
- Abbrechen — Bricht die Pipeline ab. Bereits verarbeitete Dateien behalten ihren Hash — ein erneuter »Indexieren«-Lauf setzt an der Stelle fort.
API-Endpunkte
Die vollstaendige API-Referenz fuer Datenquellen wird dynamisch aus der Admin-Registry generiert und ist im API-Katalog verfuegbar:
- Datenquellen-API — CRUD, Verbindungstest, Gruppen-/Benutzer-Zuweisung, Ingestion-Status
Troubleshooting
| Problem | Moegliche Ursache | Loesung |
|---|---|---|
| Verbindungstest SMB schlaegt fehl | Firewall, falscher Share-Name, fehlende Credentials |
Vom KIara-Server testen: smbclient //server/share -U user%pass.
Domain-Format pruefen: DOMAIN\user oder user@domain.
|
| WebDAV »401 Unauthorized« | Falsches Passwort oder App-Passwort noetig | Bei Nextcloud mit 2FA: App-Passwort generieren unter Einstellungen → Sicherheit → Geraete & Sitzungen. |
| IMAP-Ordner werden nicht gefunden | Falsche Ordnernamen, Server-spezifische Konvention | Ordner-Picker verwenden statt manueller Eingabe. |
| Exchange: »Token-Fehler« | Client-Secret abgelaufen, fehlende Admin-Zustimmung | Entra Admin Center: App → Zertifikate & Geheimnisse pruefen. API-Berechtigungen: Admin-Zustimmung erteilt? |
| SQL: »Treiber nicht gefunden« | Fehlende System-Bibliothek |
MSSQL: apt install unixodbc-dev + ODBC-Treiber installieren.MySQL: pip install pymysql im KIara-venv.
|
| Indexierung bricht nach 10 Dateien ab | Circuit-Breaker ausgeloest (10 aufeinanderfolgende Fehler) | Ursache im Ingestion-Status pruefen (Fehlermeldung pro Datei). Haeufig: DDU-Timeout, Dateiberechtigungen, korrupte Dateien. |
| Chunks sind 0 nach Indexierung | Keine unterstuetzten Dateitypen, Dateityp-Filter zu restriktiv |
Dateityp-Filter pruefen. Alle Textdateien akzeptieren
aktivieren fuer Dateien ohne Endung.
|
| DDU-Fehler: »Timeout« | Docling-Proxy nicht erreichbar oder ueberlastet |
Status pruefen: systemctl status docling-proxy auf dem
Ollama-Server (10.0.12.16). VRAM-Auslastung pruefen: nvidia-smi.
|