- Published on
OpenWebUI + Azure: Maschinenbauer spart €42k/Jahr mit Doku-Chatbot [Case Study]
- Authors

- Name
- Phillip Pham
- @ddppham
Ausgangslage: Technische Dokumentation intelligent nutzbar machen
Die TechMach Solutions GmbH (Name geändert), ein innovativer Maschinenbauer mit 350 Mitarbeitern, hatte ein klassisches Problem: 40 Jahre gesammelte technische Dokumentation in verschiedensten Formaten - von PDF-Handbüchern bis hin zu handschriftlichen Notizen erfahrener Ingenieure.
Die Herausforderungen:
- 📚 15.000+ Dokumente in verschiedenen Formaten (PDF, Word, CAD-Kommentare)
- 🔍 Suche dauert Stunden - Experten-Wissen ist nicht auffindbar
- 👨🔧 Wissensverlust durch Rente erfahrener Mitarbeiter
- 🔒 Strenge Geheimhaltung - keine Daten dürfen das Unternehmen verlassen
- 💰 Hohe Entwicklungskosten durch redundante Problemlösungen
Besondere Anforderungen:
- On-Premise Deployment mandatory (Wettbewerbsvorteile schützen)
- Fine-tuning mit eigenen technischen Daten
- Multi-Language Support (Deutsch, Englisch, Technische Zeichnungen)
- Integration in bestehende CAD/ERP-Systeme
Lösungsansatz: OpenWebUI + Azure AI Studio
Nach einer 3-monatigen Evaluierung verschiedener Plattformen entschied sich das Unternehmen für eine Hybrid-Lösung aus OpenWebUI und Azure AI Studio.
Warum diese Kombination?
🎯 OpenWebUI Vorteile:
- Self-hosted - vollständige Kontrolle über die UI
- Model-agnostic - verschiedene KI-Models nutzbar
- Customizable - an Corporate Design anpassbar
- User Management - Rollen und Berechtigungen
- Chat History - lokal gespeichert, durchsuchbar
☁️ Azure AI Studio Vorteile:
- Fine-tuning Services für GPT-4
- Private Endpoints zu Azure OpenAI
- German Data Centers (Frankfurt)
- Enterprise Security (Zero Trust)
- Scalability bei steigenden Anfragen
Technische Architektur
graph TB
A[Mitarbeiter] --> B[OpenWebUI<br/>Self-Hosted]
B --> C[Load Balancer<br/>NGINX]
C --> D[Private Network<br/>VPN Tunnel]
D --> E[Azure AI Studio<br/>Deutschland West]
E --> F[Fine-tuned GPT-4<br/>Private Deployment]
B --> G[PostgreSQL<br/>Chat History]
B --> H[Document Store<br/>Vector DB]
H --> I[Embedded Documents<br/>15k+ Files]
J[Active Directory] --> B
K[Azure Monitor] --> E
L[Prometheus] --> B
style B fill:#e1f5fe
style F fill:#e8f5e8
style H fill:#fff3e0
style I fill:#fce4ec
Implementation: Detaillierte Umsetzung
Phase 1: Infrastructure Setup (6 Wochen)
OpenWebUI Self-Hosting:
# docker-compose.yml für OpenWebUI
version: '3.8'
services:
openwebui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
environment:
- OLLAMA_BASE_URL=http://ollama:11434
- WEBUI_SECRET_KEY=${WEBUI_SECRET_KEY}
- ENABLE_OAUTH=true
- OAUTH_PROVIDER=azure
- AZURE_CLIENT_ID=${AZURE_CLIENT_ID}
- AZURE_CLIENT_SECRET=${AZURE_CLIENT_SECRET}
ports:
- "3000:8080"
volumes:
- open-webui:/app/backend/data
networks:
- webui-network
restart: unless-stopped
postgres:
image: postgres:15-alpine
environment:
POSTGRES_DB: openwebui
POSTGRES_USER: ${DB_USER}
POSTGRES_PASSWORD: ${DB_PASSWORD}
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- webui-network
Azure AI Studio Konfiguration:
# Azure CLI Setup für Private Deployment
az cognitiveservices account create \
--name "techmach-openai-private" \
--resource-group "rg-techmach-ai" \
--kind "OpenAI" \
--sku "S0" \
--location "germanywest" \
--custom-domain "techmach-openai-private" \
--public-network-access Disabled
# Private Endpoint für sicheren Zugriff
az network private-endpoint create \
--resource-group "rg-techmach-ai" \
--name "pe-openai-techmach" \
--vnet-name "vnet-techmach" \
--subnet "subnet-ai" \
--private-connection-resource-id "/subscriptions/.../openai" \
--connection-name "openai-connection"
Phase 2: Document Processing Pipeline (8 Wochen)
Document Ingestion Workflow:
# Automatisierte Dokumentenverarbeitung
import PyPDF2
import docx2txt
from langchain.document_loaders import DirectoryLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import AzureOpenAIEmbeddings
from langchain.vectorstores import Chroma
class TechMachDocumentProcessor:
def __init__(self):
self.embeddings = AzureOpenAIEmbeddings(
azure_endpoint="https://techmach-openai-private.openai.azure.com/",
api_key=os.getenv("AZURE_OPENAI_KEY"),
azure_deployment="text-embedding-ada-002",
api_version="2024-02-01"
)
def process_technical_docs(self, directory_path):
# Lade verschiedene Dateiformate
loader = DirectoryLoader(
directory_path,
glob="**/*.{pdf,docx,txt,md}",
loader_cls_kwargs={'encoding': 'utf-8'}
)
documents = loader.load()
# Splitte für bessere Embedding-Performance
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=1000,
chunk_overlap=200,
separators=["\n\n", "\n", ".", "!", "?", ",", " ", ""]
)
chunks = text_splitter.split_documents(documents)
# Erstelle Vector Store
vectorstore = Chroma.from_documents(
documents=chunks,
embedding=self.embeddings,
persist_directory="./techmach_vectordb"
)
return vectorstore
RAG (Retrieval-Augmented Generation) Setup:
# RAG Pipeline für technische Anfragen
class TechMachRAG:
def __init__(self, vectorstore, azure_client):
self.vectorstore = vectorstore
self.azure_client = azure_client
def query_technical_knowledge(self, question, top_k=5):
# Suche relevante Dokumente
relevant_docs = self.vectorstore.similarity_search(
question,
k=top_k
)
# Erstelle Kontext aus gefundenen Dokumenten
context = "\n\n".join([doc.page_content for doc in relevant_docs])
# Prompt für technische Antworten
prompt = f"""
Du bist ein Experte für [Maschinenbau](/blog/ki-gestützter-maschinenbau-für-großunternehmen-optimierung-d) und technische Dokumentation.
Kontext aus Firmendokumentation:
{context}
Frage: {question}
Antworte präzise und technisch korrekt. Wenn die Information nicht im Kontext steht, sage das deutlich.
Gib immer die Quelle der Information an.
"""
response = self.azure_client.chat.completions.create(
model="gpt-4-techmach-finetuned",
messages=[
{"role": "system", "content": "Du bist ein technischer Assistent für Maschinenbau."},
{"role": "user", "content": prompt}
],
max_tokens=1000,
temperature=0.2
)
return response.choices[0].message.content
Phase 3: Fine-Tuning mit Firmendaten (4 Wochen)
Datenaufbereitung für Fine-Tuning:
# Erstelle Training-Dataset aus Firmendokumentationen
import json
class FineTuningDataPreparation:
def create_training_data(self):
training_examples = []
# Beispiel: FAQ aus Technik-Support
examples = [
{
"messages": [
{"role": "system", "content": "Du bist Experte für TechMach Maschinen."},
{"role": "user", "content": "Wie stelle ich die Hydraulikpumpe der Serie TM-500 ein?"},
{"role": "assistant", "content": "Die Hydraulikpumpe der TM-500 Serie wird über das Druckventil V3 eingestellt. Referenz: Handbuch TM-500-HYD-2023, Seite 47. Schritte: 1) Maschine in Wartungsposition, 2) Druck auf 150 bar einstellen..."}
]
},
# ... weitere 2000+ Beispiele
]
return training_examples
def upload_to_azure(self, training_data):
# Upload zu Azure OpenAI für Fine-Tuning
file_response = openai.File.create(
file=open("techmach_training.jsonl", "rb"),
purpose="fine-tune"
)
# Starte Fine-Tuning Job
fine_tune_response = openai.FineTuningJob.create(
training_file=file_response.id,
model="gpt-4-0613",
suffix="techmach-v1"
)
return fine_tune_response
Phase 4: Security Implementation (3 Wochen)
Zero-Trust Architektur:
# nginx.conf für Reverse Proxy mit Security
server {
listen 443 ssl http2;
server_name chat.techmach.internal;
# SSL Konfiguration
ssl_certificate /etc/ssl/certs/techmach.crt;
ssl_certificate_key /etc/ssl/private/techmach.key;
ssl_protocols TLSv1.2 TLSv1.3;
# Security Headers
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
# Rate Limiting
limit_req zone=api burst=10 nodelay;
location / {
# Client Certificate Verification
ssl_verify_client on;
ssl_client_certificate /etc/ssl/certs/ca.crt;
proxy_pass http://openwebui:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket Support für Real-time Chat
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Multi-Factor Authentication:
# Azure AD Integration für MFA
from azure.identity import DefaultAzureCredential
from msal import ConfidentialClientApplication
class TechMachAuth:
def __init__(self):
self.app = ConfidentialClientApplication(
client_id=os.getenv("AZURE_CLIENT_ID"),
client_credential=os.getenv("AZURE_CLIENT_SECRET"),
authority="https://login.microsoftonline.com/techmach-tenant-id"
)
def authenticate_user(self, username, password, mfa_code):
# Step 1: Username/Password
result = self.app.acquire_token_by_username_password(
username=username,
password=password,
scopes=["https://graph.microsoft.com/.default"]
)
if "access_token" not in result:
return False, "Invalid credentials"
# Step 2: MFA Verification
mfa_result = self.verify_mfa_token(mfa_code, result["access_token"])
return mfa_result, "Authentication successful"
Ergebnisse: Transformation der technischen Arbeit
📊 Quantitative Erfolge nach 9 Monaten:
| Metrik | Vorher | Nachher | Verbesserung |
|---|---|---|---|
| Zeit für Problemlösung | 4.5 Stunden | 45 Minuten | -83% |
| Dokumenten-Suchzeit | 2 Stunden | 3 Minuten | -97% |
| Redundante Entwicklungen | 15/Monat | 3/Monat | -80% |
| Wissensverfügbarkeit | 40% | 92% | +130% |
| Neue Mitarbeiter-Onboarding | 6 Wochen | 2 Wochen | -67% |
🎯 Qualitative Verbesserungen:
Für Ingenieure:
- ✅ Sofortiger Zugriff auf 40 Jahre Firmen-Know-how
- ✅ Intelligente Suche in technischen Zeichnungen
- ✅ Automatische Übersetzung alter deutscher Dokumente
- ✅ Verknüpfung ähnlicher Probleme aus der Vergangenheit
Für das Management:
- ✅ Schutz geistigen Eigentums (100% on-premise)
- ✅ Beschleunigte Innovation durch bessere Wissensnutzung
- ✅ Reduzierte Entwicklungskosten durch weniger Redundanz
- ✅ Wettbewerbsvorteile durch faster time-to-market
💰 ROI-Analyse (12 Monate):
Investition:
- OpenWebUI Setup + Hardware: 45.000€
- Azure AI Studio (Private): 180.000€
- Fine-Tuning Development: 120.000€
- Security Implementation: 60.000€
- Training & Change Management: 45.000€
- Gesamt: 450.000€
Einsparungen/Jahr:
- Reduzierte Entwicklungszeit: 480.000€
- Vermiedene Redundanzen: 240.000€
- Schnelleres Onboarding: 90.000€
- Effizienzgewinne Support: 120.000€
- Gesamt: 930.000€
ROI: 107% im ersten Jahr
Technische Herausforderungen und Lösungen
❌ Challenge: Embedding deutscher technischer Begriffe
💡 Lösung:
- Custom Embedding Model für Maschinenbau-Terminologie
- Glossar mit 5.000+ Fachbegriffen
- Synonym-Mapping für verschiedene Schreibweisen
- A/B Testing verschiedener Embedding-Strategien
❌ Challenge: CAD-Dateien und technische Zeichnungen
💡 Lösung:
# OCR + [Computer Vision](/blog/ki-qualitaetskontrolle-bilderkennung-produktion) für technische Zeichnungen
from azure.cognitiveservices.vision.computervision import ComputerVisionClient
import cv2
class TechnicalDrawingProcessor:
def extract_text_from_drawing(self, image_path):
# Preprocessing für bessere OCR
image = cv2.imread(image_path)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
enhanced = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2)
# Azure Computer Vision OCR
result = self.cv_client.read_in_stream(enhanced, raw=True)
# Extrahiere technische Annotationen
technical_text = self.parse_technical_annotations(result)
return technical_text
❌ Challenge: Performance bei 15.000+ Dokumenten
💡 Lösung:
- Distributed Vector Store (Weaviate Cluster)
- Caching Layer (Redis) für häufige Anfragen
- Async Processing für Document Updates
- Load Balancing zwischen mehreren OpenWebUI Instanzen
Advanced Features: Was darüber hinaus implementiert wurde
🔍 Intelligent Search:
# Multi-Modal Search in Text + Bildern
class MultiModalSearch:
def search_across_modalities(self, query):
# Text Search
text_results = self.vector_search(query)
# Image Search (technische Zeichnungen)
image_results = self.image_similarity_search(query)
# CAD-Metadaten Search
cad_results = self.cad_metadata_search(query)
# Kombiniere und ranke Ergebnisse
combined_results = self.rank_and_combine([
text_results, image_results, cad_results
])
return combined_results
📊 Analytics Dashboard:
// React Dashboard für Nutzungsstatistiken
const TechMachAnalytics = () => {
const [metrics, setMetrics] = useState({
dailyQueries: 0,
topSearchTerms: [],
userSatisfaction: 0,
documentCoverage: 0,
})
return (
<Dashboard>
<MetricCard
title="Tägliche Anfragen"
value={metrics.dailyQueries}
trend="+15% vs. letzte Woche"
/>
<SearchTermsChart data={metrics.topSearchTerms} />
<SatisfactionScore score={metrics.userSatisfaction} />
<DocumentCoverageMap coverage={metrics.documentCoverage} />
</Dashboard>
)
}
🤖 Smart Suggestions:
- Auto-Complete für technische Begriffe
- Related Questions basierend auf Firmenhistorie
- Proactive Hints bei häufigen Problemen
- Context-Aware Responses basierend auf Abteilung/Rolle
Lessons Learned: Kritische Erfolgsfaktoren
✅ Was besonders gut funktioniert hat:
- Iterative Implementierung: Start mit 500 Dokumenten, dann schrittweise Erweiterung
- User Champion Program: Frühe Adopter als Multiplikatoren
- Domain-specific Fine-tuning: GPT-4 mit Maschinenbau-Daten deutlich besser
- Hybrid Architecture: OpenWebUI + Azure AI beste Balance aus Kontrolle und Performance
🔄 Was wir anders machen würden:
- More extensive Testing Phase: 8 statt 4 Wochen für Performance Testing
- Earlier Security Integration: Security von Tag 1, nicht nachträglich
- Better Change Management: Mehr Zeit für User Training und Adoption
- Automated Monitoring: Umfassenderes Monitoring von Anfang an
⚠️ Critical Pitfalls vermieden:
- Vendor Lock-in: OpenWebUI als Interface macht uns unabhängig von einem LLM-Anbieter
- Data Leakage: Strikte On-Premise Policy verhindert ungewollte Datenübertragung
- Over-Engineering: Start simple, dann iterativ komplexere Features
- User Resistance: Frühe Einbindung und transparente Kommunikation
Zukunfts-Roadmap: Geplante Erweiterungen
Q2 2025: Multimodal Expansion
- 3D-CAD Integration: Direkte Suche in SolidWorks/AutoCAD-Dateien
- Video Tutorials: Automatische Transkription und Indexierung
- AR Integration: HoloLens für kontextuelle Informationen vor Ort
Q3 2025: Predictive Analytics
- Maintenance Predictions: KI vorhersagt Wartungsbedarfe
- Failure Pattern Recognition: Automatische Mustererkennung in Fehlerdaten
- Optimization Suggestions: KI schlägt Verbesserungen vor
Q4 2025: Cross-Company Knowledge
- Supplier Integration: Sichere Wissensaustausch mit Zulieferern
- Industry Benchmarking: Anonymisierte Vergleiche mit Konkurrenten
- Standardization Support: Automatische Compliance-Checks
Weiterführende Artikel
- Enterprise Ki Chatbot Dsgvo Compliance
- Ollama Ubuntu Private Ki Konfiguration
- Azure Ki Deutschland 5 Schritte Zu Mehr Umsatz In
Fazit: Private KI als Wettbewerbsvorteil
Zentrale Erkenntnisse:
🎯 Technische Machbarkeit: OpenWebUI + Azure AI ermöglicht enterprise-grade private KI-Lösungen ohne Vendor Lock-in.
💼 Business Impact: 107% ROI zeigt klaren wirtschaftlichen Nutzen bei vollständiger Datenkontrolle.
🔒 Security first: Zero-Trust Architektur mit Private Deployment bietet maximale Sicherheit.
🚀 Competitive Advantage: 40 Jahre Firmenwissen intelligent nutzbar = nachhaltiger Wettbewerbsvorteil.
Empfehlungen für ähnliche Projekte:
- Hybrid Strategy: Kombination aus Open Source (OpenWebUI) und Enterprise Cloud (Azure AI)
- Domain-specific fine-tuning: Investment in Custom Models zahlt sich aus
- Security by Design: Private Deployment von Tag 1, nicht als Nachgedanke
- Change Management: Technologie ist nur 30%, Menschen sind 70% des Erfolgs
- Iterative Approach: Start small, learn fast, scale systematically
Die Zukunft gehört Unternehmen, die ihr geistiges Eigentum intelligent und sicher nutzbar machen.
FAQ
Was ist OpenWebUI und warum ist es besser als ChatGPT für Unternehmen?
OpenWebUI ist eine Open-Source Chat-Oberfläche für selbst gehostete LLMs. Vorteile: 100% Datenkontrolle, keine API-Kosten bei hohem Volumen, Integration eigener Dokumente (RAG), Anpassung an Corporate Design.
Kann ich OpenWebUI mit Azure OpenAI verbinden?
Ja, OpenWebUI unterstützt Azure OpenAI als Backend. So kombinieren Sie die ChatGPT-Qualität mit Azure's EU-Datenresidenz und Enterprise-Security. Konfiguration über Environment Variables in 5 Minuten.
Wie integriere ich meine SharePoint-Dokumente in einen privaten Chatbot?
RAG-Pipeline: SharePoint → Unstructured.io (Parsing) → Embedding-Modell → Vektor-DB (Qdrant/Chroma) → OpenWebUI. Bei 40 Jahren Firmenwissen: ~4-6 Wochen für robuste Implementation.
Was kostet ein privater KI-Chatbot im Vergleich zu ChatGPT Enterprise?
ChatGPT Enterprise: ~€25/Nutzer/Monat (bei 100 Nutzern: €30k/Jahr). Private Lösung: Hardware €15-30k einmalig + €1.500/Jahr Betrieb. Break-Even bei 50+ Nutzern nach 12-18 Monaten, danach deutlich günstiger.
Brauche ich eigene ML-Expertise für OpenWebUI?
Für Basis-Setup: Nein, Docker-Compose genügt. Für RAG mit eigenen Dokumenten: Grundverständnis von Embeddings/Vector-DBs hilfreich. Für Fine-Tuning: ML-Expertise oder Partner empfohlen. Wir unterstützen bei allen Stufen.
Planen Sie eine ähnliche private KI-Implementation? Kontaktieren Sie uns für eine technische Beratung zu OpenWebUI, Azure AI Fine-tuning und Enterprise Security Architekturen.
📖 Verwandte Artikel
Weitere interessante Beiträge zu ähnlichen Themen
Private KI Chatbot Eigene Dokumente RAG 2026 Kundenservice: Praktischer Leitfaden für deutsche IT-Manager
Eigener privater KI Chatbot mit RAG für Dokumente: Ein umfassender Leitfaden 2026 für deutsche IT-Manager. Lernen Sie, wie Sie Kundenservice revolutionieren, DSGVO-konform und 100% lokal.
ChatGPT Alternative Kostenlos Lokal 2026 Kundenservice: Praktischer Leitfaden für deutsche IT-Manager
ChatGPT Alternative Kostenlos Lokal 2026 Kundenservice für deutsche Unternehmen: Umfassender Leitfaden mit Implementierungsplan, **ROI**-Berechnung und Best Practices für IT-Verantwortliche. DSGVO- und AI-Act-konform.
Energie Kundenservice KI: Stadtwerk automatisiert 72% Anfragen - spart €280k/Jahr
Energieversorger implementiert KI-Chatbot: 72% Automatisierung, Rechnungsklärung in 2 Min, Tarifwechsel self-service. €280k Einsparung, CSAT 4,6/5. NLP + Voice für deutsche Stadtwerke - DSGVO & Energiewirtschaft konform.