LokalLLM: ChatGPT-Niveau auf eigener Hardware — ohne Cloud, ohne Kosten

Lokale KI-Chat-Oberfläche mit RAG, Multi-Modell-Support und voller Datenkontrolle

Python Ollama RAG ChromaDB

🚀 Ihre eigene KI-Chat-Oberfläche. DSGVO-konform. Offline. Open Source.

📞 02406 803 7603 ✉️ info@computerkumpel.de

💰 Warum sich lokale LLMs für Unternehmen sofort rechnen

Cloud-basierte LLMs wie ChatGPT, Claude oder Gemini erfordern die Übertragung sensibler Daten an externe Server. Für vertrauliche Dokumente, interne Unternehmensdaten oder personenbezogene Informationen ist das ein No-Go. Zudem entstehen laufende Kosten, es gibt Rate-Limits, und man ist von Preisänderungen der Anbieter abhängig.

🔒
Volle Datenkontrolle
Keine Daten verlassen den Rechner. Keine API-Kosten, keine Rate-Limits. Vollständige Souveränität über Ihre KI-Infrastruktur.
🔄
Multi-Modell-Support
Schneller Wechsel zwischen Llama 3, Mistral, CodeLlama und allen Ollama-kompatiblen Modellen. GGUF direkt von HuggingFace.
📚
RAG-System
Chat mit eigenen Dokumenten (PDF, TXT, DOCX). ChromaDB + Sentence-Transformers für semantische Dokumentsuche.
🎨
Desktop-GUI
tkinter/CustomTkinter mit Dark Mode, Chat-Historie, Prompt-Templates und mehrsprachiger Oberfläche.

💻 Code-Einblicke

Ein Blick unter die Haube — so ist das Projekt technisch umgesetzt:

🐍 LLM-Kommunikation mit Ollama-API und RAG-Integration

Der Kern des Systems: Die get_llm_response()-Methode verbindet Ollama mit ChromaDB-basiertem RAG-Kontext:


def get_llm_response(self, message):
    """Angepasste LLM-Anfrage mit aktuellem Server und RAG-Kontext"""
    model = self.settings.get("model", "llama2:latest")
    
    # Hole relevanten Kontext aus der Wissensbasis
    relevant_context = ""
    if self.rag_handler.is_active:
        relevant_context = self.rag_handler.get_relevant_context(message)
    
    # Erstelle den Prompt mit Kontext
    if relevant_context and len(relevant_context.strip()) > 0:
        rag_prompt = self.get_prompt("rag.query_enhancement")
        enhanced_prompt = rag_prompt.format(
            context=relevant_context,
            query=message
        )
    else:
        enhanced_prompt = message

    # Füge Rollen-Prompt hinzu, wenn vorhanden
    if self.current_role_prompt:
        enhanced_prompt = f"{self.current_role_prompt}\n\n{enhanced_prompt}"

    # Sende Anfrage an den Ollama-Server
    server_url = self.current_server['address']
    final_url = f"http://{server_url}:{self.current_server['port']}"
    
    client = Client(host=final_url, timeout=30.0)
    response = client.chat(
        model=model,
        messages=[{"role": "user", "content": enhanced_prompt}],
        stream=False
    )
    return response.message.content

🔍 Vektor-basierte Dokumentensuche mit ChromaDB

Das RAG-System indiziert Dokumente und findet semantisch relevante Textpassagen:


class RAGHandler:
    def __init__(self):
        self.embeddings = HuggingFaceEmbeddings(
            model_name="sentence-transformers/all-MiniLM-L6-v2"
        )
        self.vector_store = None
        self.is_active = False

    def index_documents(self):
        """Indexiert alle Dokumente im knowledge_base Verzeichnis"""
        loader = DirectoryLoader(
            self.docs_dir,
            glob="**/*.txt",
            loader_cls=TextLoader
        )
        documents = loader.load()

        # Teile Dokumente in Chunks mit Überlappung
        text_splitter = RecursiveCharacterTextSplitter(
            chunk_size=1000,
            chunk_overlap=200
        )
        chunks = text_splitter.split_documents(documents)

        # Erstelle Vektordatenbank mit Embeddings
        self.vector_store = Chroma.from_documents(
            documents=chunks,
            embedding=self.embeddings,
            persist_directory=self.db_dir
        )
        self.vector_store.persist()
        return True

🌍 Mehrsprachige UI-Unterstützung

Sprachdateien als JSON, dynamisch umschaltbar ohne Neustart:


class LanguageManager:
    def __init__(self):
        self.current_language = "de"
        self.available_languages = {
            "de": "Deutsch",
            "en": "English"
        }

    def load_language(self, lang_code=None):
        """Lädt die Sprachdatei für den angegebenen Sprachcode"""
        if lang_code:
            self.current_language = lang_code
        lang_file = resource_path(f"languages/{self.current_language}.json")
        with open(lang_file, "r", encoding="utf-8") as f:
            self.translations = json.load(f)

    def get_text(self, key_path):
        """Holt den übersetzten Text — z.B. 'menu.settings'"""
        keys = key_path.split('.')
        value = self.translations
        for key in keys:
            value = value[key]
        return value

⚙️ So funktioniert's

Von der Installation bis zum ersten KI-Chat in unter 10 Minuten.

🦙
1. Ollama installieren
Einmalig Ollama installieren und ein Modell laden: ollama pull llama3.1:8b — das war's.
🚀
2. LokalLLM starten
python main.py — die GUI öffnet sich. Ollama-Server auswählen, Modell wählen, loschatten.
💬
3. Chatten & Dokumente nutzen
Fragen stellen, Dokumente per RAG durchsuchen, Prompts speichern. Alles lokal, alles privat.
📤
4. Exportieren & Teilen
Chats als Markdown oder JSON exportieren. Prompt-Templates mit Kollegen teilen.

🔧 Technische Umsetzung

LokalLLM kombiniert bewährte Open-Source-Tools zu einer nahtlosen Benutzererfahrung — eine vollständig lokale Alternative zu ChatGPT mit Desktop-GUI.

🏗️ Architektur

# Kern-Komponenten
chat_logic.py        # LLM-Kommunikation, Prompt-Handling, Chat-Historie
chat_ui.py           # Haupt-GUI mit tkinter/CustomTkinter
chat_ui_component.py # Wiederverwendbare UI-Komponenten
rag_handler.py       # RAG: Dokumente laden, Vektoren, Retrieval
rag_manager.py       # RAG-Konfiguration und Session-Management
language_manager.py  # Mehrsprachige UI-Unterstützung

🛠️ Tech Stack

🐍 Python 3.10+
Hauptsprache für GUI, Logik und API-Integration.
🎨 tkinter/CustomTkinter
Native Desktop-GUI mit modernem Look. Plattformunabhängig.
🦙 Ollama
Lokaler LLM-Server für Modell-Management. REST-API.
📦 GGUF-Modelle
Quantisierte Modelle von HuggingFace. 75% weniger VRAM.
🔍 ChromaDB
Vektor-Datenbank für RAG und Dokumentensuche.
🧠 Sentence-Transformers
Embeddings für semantische Text-Suche.

⚡ Features & Funktionen

Multi-Modell-Support
Schneller Wechsel zwischen verschiedenen LLMs — Llama 3, Mistral, CodeLlama und viele mehr.
Chat-Historie
Persistente Speicherung aller Konversationen. Nichts geht verloren.
Prompt-Templates
Vordefinierte und benutzerdefinierte Prompts für wiederkehrende Aufgaben.
Mehrsprachig
UI in Deutsch, Englisch und weiteren Sprachen umschaltbar.
Dark Mode
Augenschonendes Interface für lange KI-Sessions.
Export
Chats als Markdown oder JSON speichern — ideal für Dokumentation.
Offline-Modus
Voll funktionsfähig ohne Internet. Keine Telemetrie, keine Cloud.
Streaming-Responses
Token-für-Token-Ausgabe statt Warten auf komplette Antwort. Fühlt sich schneller an.

📚 RAG in Aktion

Das RAG-System erweitert das LLM mit Ihrem eigenen Wissen:

# Beispiel: Dokumente laden und abfragen
1. Ordner mit PDFs/TXTs auswählen
2. Dokumente werden in ChromaDB indiziert
3. Bei Frage: Relevante Text-Snippets werden abgerufen
4. LLM beantwortet Frage basierend auf Dokument-Kontext

# Typische Anwendungsfälle
• Firmen-Wissensdatenbank (Handbücher, Protokolle)
• Juristische Dokumentenanalyse
• Wissenschaftliche Paper-Recherche
• Persönliche Notizen durchsuchen

⚡ In 5–7 Tagen zu Ihrer maßgeschneiderten lokalen KI-Oberfläche.

📞 02406 803 7603 ✉️ info@computerkumpel.de

🚀 Gebaut mit Vibecoding — in 5–7 Tagen statt 8–13 Wochen

👴 Klassische Entwicklung
  • 📋 2–3 Wochen Requirements Engineering
  • 🏗️ 2–3 Wochen Architektur & Design
  • 💻 3–4 Wochen Implementierung
  • 🧪 1–2 Wochen Testing
  • 🚢 1 Woche Deployment
  • ⏱️ Gesamt: 8–13 Wochen
🤖 Vibecoding-Ansatz
  • 🗣️ 0.5 Tage Prompt-Engineering
  • ⚡ 2–3 Tage iterative Generierung
  • 🔧 1–2 Tage Refinement & Debugging
  • ✅ 1 Tag Integration & Testing
  • 🚀 0.5 Tage Deployment
  • ⏱️ Gesamt: 5–7 Tage

🗣️ Der System-Prompt hinter diesem Projekt

Du bist ein Python-Experte für Desktop-Anwendungen mit lokalen LLMs.

Aufgabe: Erstelle eine vollständige Desktop-GUI (Chat-Interface) für 
lokale Large Language Models via Ollama.

Technische Anforderungen:
- Python 3.10+, tkinter/CustomTkinter für die GUI
- Ollama REST-API als LLM-Backend
- RAG-System mit ChromaDB + Sentence-Transformers
- Unterstützung für PDF, TXT, DOCX via RAG
- Multi-Modell-Support (Llama 3, Mistral, CodeLlama, etc.)
- GGUF-Modelle von HuggingFace direkt laden

GUI-Features:
- Chat-Fenster mit Streaming-Responses (Token-für-Token)
- Modell-Auswahl (Dropdown)
- Prompt-Template-Manager
- Chat-Historie (SQLite)
- Dark Mode / Light Mode Toggle
- Mehrsprachigkeit (DE/EN)
- Export als Markdown/JSON
- System-Prompt konfigurierbar

RAG-Workflow:
1. Dokumente laden (Drag & Drop oder Ordner-Auswahl)
2. Text-Chunking (konfigurierbare Chunk-Größe)
3. Embedding via Sentence-Transformers (all-MiniLM-L6-v2)
4. ChromaDB als Vektor-Speicher
5. Bei Anfrage: Top-k Chunks retrieven + LLM-Kontext erweitern

🎯 Strategische Erkenntnisse aus diesem Projekt

Lokale LLMs sind die unterschätzte Revolution. Diese Einsichten helfen bei jeder KI-Entscheidung.

📏
Modell-Größe ≠ Qualität
Ein gut trainiertes 7B-Modell (Mistral, Llama 3) schlägt oft ein schlecht trainiertes 30B-Modell. Fokus auf aktuelle, community-getestete Modelle legen — nicht auf Parameterzahlen.
✂️
Chunking ist RAG-kritisch
Zu große Chunks → Kontext wird überschrieben. Zu kleine Chunks → Kontext verloren. Experimentieren mit 500–1000 Tokens, Overlap von 10–20%. One-Size-Fits-All funktioniert nicht.
🧪
System Prompts sind der „Geheimsauce"
Ein gut formuliertes System-Prompt kann die Qualität mehr steigern als ein größeres Modell. Rollen definieren, Constraints setzen, Output-Format vorgeben.
GGUF-Quantisierung: Game-Changer
Q4_K_M bietet das beste Preis-Leistungs-Verhältnis. Q5_K_M für höchste Qualität. 4-Bit-Quantisierung reduziert VRAM um 75% bei nahezu gleicher Qualität.
💨
Streaming-Responses > UX
Token-für-Token-Ausgabe statt Warten auf komplette Antwort. Nutzer empfinden die App als „schneller", obwohl die Gesamtzeit identisch ist. Psychologie schlägt Physik.

Bereit für echte KI-Souveränität?

Lokale LLMs sind keine Zukunftsmusik mehr — sie sind produktiv einsetzbar, heute. Lassen Sie uns gemeinsam Ihre KI-Infrastruktur aufbauen.

🔍
KI-Readiness-Assessment
Wir prüfen Ihre Infrastruktur, identifizieren die besten lokalen Modelle für Ihre Use Cases und skizzieren den Weg.
🧪
Proof-of-Concept
In 5–7 Tagen eine funktionierende lokal-LLM-Lösung mit Ihren Daten. Sie testen Qualität und Performance, bevor Sie investieren.
🤝
Rollout & Betrieb
Von der GPU-Auswahl über Modell-Fine-Tuning bis zum unternehmensweiten Rollout — alles aus einer Hand.
📞 02406 803 7603 ✉️ info@computerkumpel.de