Lokale KI: Wo kleine Modelle die großen ablösen und wo nicht
17. September 2026, 11 Min. Lesezeit
Privacy by Design für LLM-Anwendungen: PII-Minimierung, Pseudonymisierung, Data Residency. Architektur-Patterns für DSGVO-konforme RAG-Systeme.
Die Frage "Ist unser KI-System DSGVO-konform?" lässt sich nicht mit einer Checkbox beantworten. Sie lässt sich mit einer Architektur beantworten.
Privacy nachträglich in ein KI-System einzubauen funktioniert selten. Die Data Flows sind bereits definiert, die Speicherorte gewählt, die Provider-Verträge unterschrieben. Wer Privacy nicht von Anfang an mitdenkt, baut technische Schulden auf, die später teuer werden.
Bevor Sie über Maßnahmen nachdenken, brauchen Sie Sichtbarkeit. Für jeden KI-Touchpoint in Ihrem System:
Bei jedem Schritt: Welche Daten werden verarbeitet, gespeichert oder geloggt?
| Touchpoint | Fragen | Typische Risiken |
|---|---|---|
| User Input | Enthält es PII? Wird es geloggt? | Unkontrolliertes Logging von Kundendaten |
| Preprocessing | Wird PII erkannt und redaktiert? | PII fließt unbemerkt zum LLM |
| LLM/Model | Wo wird verarbeitet? Was speichert der Provider? | Drittland-Transfer, Provider-Training |
| Storage | Prompts? Responses? Embeddings? Wie lange? | Unbegrenzte Retention, fehlende Löschkonzepte |
| RAG/Retrieval | Enthält die Knowledge Base PII? Access Control? | Unberechtigter Zugriff auf sensitive Dokumente |
Das Ziel: Eine dokumentierte Übersicht, die Sie bei der nächsten Audit-Anfrage vorlegen können.
Nicht jedes System braucht alle Patterns. Die Auswahl hängt von Ihrer Datenklassifizierung und Risikobereitschaft ab.
Prinzip: Nur die Daten verarbeiten, die das LLM wirklich braucht.
# Vorher: Alle verfügbaren Informationen
prompt = f"""
Der Kunde Max Müller ([email protected], Tel: 0171-1234567)
hat am 15.03.2024 Produkt XYZ bestellt (Bestellung #12345).
Er wohnt in der Musterstraße 42, 80331 München.
Was ist der Status seiner Bestellung?
"""
# Nachher: Nur das Nötige
prompt = f"""
Ein Kunde hat am 15.03.2024 Produkt XYZ bestellt (Bestellung #12345).
Was ist der Status dieser Bestellung?
"""
Quick Check:
Aufwand: Gering | Impact: Hoch | Empfehlung: Immer implementieren
Prinzip: PII durch Platzhalter ersetzen, Original-Mapping lokal behalten.
Key: PII verlässt nie Ihre Infrastruktur. Das LLM sieht nur Platzhalter.
Implementierungs-Approach:
Code-Skeleton:
class Pseudonymizer:
def pseudonymize(self, text: str, pii_entities: list) -> str:
"""Ersetzt PII durch Platzhalter, speichert Mapping lokal."""
for entity in pii_entities:
pseudonym = f"[{entity.type}_{hash(entity.text)[:8]}]"
text = text.replace(entity.text, pseudonym)
self.store_mapping(pseudonym, entity.text)
return text
def restore(self, text: str) -> str:
"""Stellt Original-PII aus lokalem Mapping wieder her."""
for pseudonym, original in self.get_mappings():
text = text.replace(pseudonym, original)
return text
Aufwand: Mittel | Impact: Hoch | Empfehlung: Bei sensiblen Daten
Minimum-Standard für alle KI-bezogenen Daten:
| Komponente | Encryption | Key Management |
|---|---|---|
| Vector DB | AES-256 | HashiCorp Vault / AWS KMS |
| Logs | AES-256, 90d Key Rotation | Managed |
| Model Weights | Disk-level (LUKS) | — |
| API Calls | TLS 1.3, mTLS für Service-to-Service | Certificate Manager |
Aufwand: Gering (meist Infrastruktur-Config) | Impact: Mittel | Empfehlung: Immer
Prinzip: Daten bleiben in der gewünschten Region. Wichtig für DSGVO und Branchenregulierung.
| Requirement | Optionen |
|---|---|
| EU-only | Azure OpenAI (EU West), AWS Bedrock (Frankfurt), Anthropic (EU) |
| Deutschland-only | On-Prem, Deutsche Cloud-Provider (IONOS, Hetzner) |
| On-Prem only | Llama 3, Mistral, Qwen (Self-hosted) |
Routing-Logik:
class RegionAwareRouter:
async def route(self, request, data_classification: str):
if data_classification == "CONFIDENTIAL":
return await self.onprem_client.chat(...) # Bleibt intern
elif data_classification == "INTERNAL":
return await self.eu_client.chat(...) # EU-Cloud OK
else:
return await self.cloud_client.chat(...) # Überall OK
Aufwand: Mittel | Impact: Hoch für Compliance | Empfehlung: Bei personenbezogenen/vertraulichen Daten
Prinzip: Prompts nicht persistent speichern, nur Metadaten für Debugging.
Was loggen:
Was NICHT loggen:
async def process(self, prompt: str) -> str:
response = await llm.complete(prompt)
# Nur Metadaten loggen
await log({
"timestamp": now(),
"prompt_hash": sha256(prompt), # Für Debugging, nicht Rekonstruktion
"prompt_length": len(prompt),
"user_id": user.id,
"model": "gpt-4",
"latency_ms": elapsed
})
return response
# Prompt und Response werden nicht gespeichert
Aufwand: Gering | Impact: Mittel | Empfehlung: Default für Production
Wann relevant: Fine-Tuning auf Kundendaten, Custom-Embeddings mit sensiblen Dokumenten.
Prinzip: Noise so hinzufügen, dass aggregierte Patterns gelernt werden, aber einzelne Datenpunkte nicht extrahierbar sind.
Klassisches Training:
Model lernt: "Max Müller kaufte am 15.3. Produkt X"
→ Risiko: Model könnte "Max Müller" reproduzieren
Differential Privacy:
Noise hinzufügen, sodass:
→ "Kunden kaufen Produkt X häufig im März" gelernt wird
→ Einzelne Personen nicht identifizierbar
Tools: TensorFlow Privacy, Opacus (PyTorch), PySyft
Aufwand: Hoch | Impact: Hoch für Training-Szenarien | Empfehlung: Bei Fine-Tuning auf PII
Prinzip: Daten bleiben lokal, nur Model-Updates werden geteilt.
Model Updates kombinieren
(keine Rohdaten!)
Wann sinnvoll:
Aufwand: Sehr hoch | Impact: Hoch | Empfehlung: Nur bei spezifischen Anforderungen
RAG (Retrieval-Augmented Generation) hat spezielle Privacy-Herausforderungen, die oft übersehen werden.
Original: "Max Müller arbeitet in der IT-Abteilung"
↓
Embedding: [0.23, -0.45, 0.12, ...]
↓
Semantisch ähnlich zu: "Müller ist IT-Mitarbeiter"
Implikation: Embeddings enthalten die semantische Information des Originals. Wer Zugriff auf die Vector DB hat, kann Inhalte rekonstruieren.
Mitigation:
Ein häufiger Fehler: Alle Dokumente werden in eine Vector DB geladen, alle User können alles abfragen.
# Falsch: Keine Filterung
results = vector_db.query(embedding)
# Richtig: Row-Level Security
results = vector_db.query(
embedding,
filter={
"department": {"$in": user.departments},
"classification": {"$lte": user.clearance_level}
}
)
Ein Query über Produkte kann Kundendaten retrieven, wenn die Knowledge Base beides enthält.
Mitigation:
Mapping lokal speichern
| Datenklasse | Minimum | Empfohlen | Optional |
|---|---|---|---|
| Öffentlich | Encryption, Ephemeral Prompts | — | — |
| Intern | + PII-Minimierung | Data Residency (EU) | Pseudonymisierung |
| Vertraulich | + Pseudonymisierung, Data Residency | On-Prem Routing | Federated Learning |
| Streng vertraulich | Kein LLM oder On-Prem only | Differential Privacy | — |
RAG-Systeme ohne Access Control auf Dokumenten-Level.
Ein einziger Vektor-Query kann sensible Informationen zurückliefern, für die der User keine Berechtigung hat. Implementieren Sie Row-Level-Security von Anfang an. Nachträglich ist es deutlich aufwändiger.
17. September 2026, 11 Min. Lesezeit
30. November 2025, 14 Min. Lesezeit
23. November 2025, 15 Min. Lesezeit
Für Vorträge, Interviews und fachlichen Austausch erreichen Sie mich direkt. Projekte und Beratung laufen über meinen Arbeitgeber ADVISORI, den Kontakt stelle ich gern her.