RAG-Pilot für interne Knowledge Search in B2B-SaaS: 14-Tage-Plan

Warum ein 14-Tage-Pilot für interne Knowledge Search in B2B-SaaS

Ihr Support-Team in einem B2B-SaaS-Unternehmen mit 800 Mitarbeitern beantwortet täglich 40 bis 60 Fragen zu internen Prozessen, Produkt-Features und Compliance-Vorgaben. Die Antworten liegen verstreut in Confluence, SharePoint und E-Mail-Archiven. Neue Mitarbeiter brauchen 3 bis 4 Wochen, um sich zurechtzufinden. Die Compliance-Abteilung fordert nachvollziehbare Antworten, weil einige Fragen betreffen, wie Kundendaten verarbeitet werden. Ein RAG-System über die interne Dokumentation reduziert die Antwortzeit von 4 Stunden auf 15 Minuten und liefert zitierte Quellen. Der Pilot muss in 14 Tagen laufen, weil das Q3-Budget Ende des Monats freigegeben wird. Die technische Herausforderung: LangGraph muss mit den bestehenden APIs von Confluence und SharePoint sprechen, ohne dass die IT-Abteilung neue Infrastruktur aufbaut. Die Compliance-Herausforderung: Keine Kundendaten dürfen in den Vektorindex wandern, und jede Antwort muss auditierbar sein.

Voraussetzungen vor dem ersten Tag

  • Datenzugang: API-Keys für Confluence und SharePoint mit Lesezugriff auf die relevanten Spaces. Die IT-Abteilung muss diese vor Tag 1 freigeben.
  • Datenklassifizierung: Eine Liste der Dokumenttypen, die indiziert werden dürfen (z. B. „Prozessdokumente“, „Produkt-Handbücher“) und die, die ausgeschlossen sind (z. B. „Kundenverträge“, „HR-Daten“). Die Compliance-Abteilung muss diese Liste signieren.
  • Infrastruktur: Ein AWS- oder Azure-Account mit Zugriff auf S3/Blob-Storage für den Vektorindex und eine PostgreSQL-Instanz für die LangGraph-State-Logs. Alternativ: On-Premise-Server, wenn die IT-Abteilung Cloud-Nutzung verbietet.
  • Slack-Integration: Ein Slack-Workspace mit Admin-Rechten, um einen Bot zu erstellen und die API-Keys für die Webhooks zu generieren.
  • Team: 2 Entwickler (Backend/ML), 1 Product Owner aus dem Fachbereich, 1 Compliance-Beauftragter für Freigaben, 5 bis 10 Power-User aus dem Support für die Testphase.
  • Modell-APIs: Zugänge zu OpenAI (gpt-4o, text-embedding-3-large) oder Anthropic (claude-3-5-sonnet, embedding-v3). Für EU-Compliance: Verifizieren, dass die Daten in Frankfurt oder Dublin verarbeitet werden.

Schritt 1 bis 5: Von der Datenanbindung zum Slack-Bot

  1. Datenquellen anbinden: Schreiben Sie einen Python-Skript, das über die Confluence-API (REST, Endpoint /api/v2/spaces/{spaceKey}/pages) und die SharePoint-Graph-API (/sites/{siteId}/drive/root/children) die relevanten Dokumente lädt. Speichern Sie die Rohdaten in einer lokalen JSON-Datei. Konfiguration: CHUNK_SIZE = 512, CHUNK_OVERLAP = 64. Filtern Sie Dokumente anhand der Compliance-Liste: Wenn das Metadatum classification auf „confidential“ steht, überspringen Sie das Dokument.

  2. Embeddings generieren und Vektorindex aufbauen: Nutzen Sie text-embedding-3-large von OpenAI (1536 Dimensionen). Laden Sie die JSON-Datei, generieren Sie Embeddings für jedes Chunk und speichern Sie sie in Qdrant (lokal, Port 6333). Code-Snippet: client.upsert(collection_name="knowledge", points=[PointStruct(id=i, vector=embedding, payload={"text": chunk, "source": url, "classification": "internal"})]). Verifizieren: client.count(collection_name="knowledge") muss die Anzahl der Chunks liefern.

  3. LangGraph-Agent konfigurieren: Definieren Sie den State in langgraph.graph.StateGraph. Nodes: retrieve (RAG-Suche), generate (LLM-Antwort), validate (Compliance-Check). Kanten: retrieve → generate → validate → END. In validate: Wenn die Konfidenz-Score unter 0.7 liegt, leiten Sie die Anfrage an einen menschlichen Agenten weiter. Speichern Sie den State in PostgreSQL: checkpointer = PostgresSaver(conn_string). Code: graph = builder.compile(checkpointer=checkpointer).

  4. Slack-Bot integrieren: Erstellen Sie einen Slack-App mit den Scopes chat:write, channels:join, reactions:write. Implementieren Sie einen Webhook-Handler, der Slack-Nachrichten empfängt, den Text an den LangGraph-Agenten übergibt und die Antwort in den Channel postet. Konfiguration: SLACK_BOT_TOKEN, SLACK_SIGNING_SECRET. Test: Senden Sie eine Nachricht in den Test-Channel, der Bot muss innerhalb von 5 Sekunden antworten.

  5. Compliance-Filter und Audit-Logs aktivieren: In jedem Node des LangGraph-Graphen: Loggen Sie die Eingabe, die abgerufenen Chunk-IDs und die Konfidenz-Score in eine Tabelle audit_logs (Spalten: timestamp, user_id, query, chunk_ids, confidence, action). Implementieren Sie einen Filter in retrieve: Wenn ein Chunk die Metadaten classification: "confidential" hat, wird es nicht abgerufen. Test: Stellen Sie eine Frage, die auf ein „confidential“-Dokument verweist. Der Bot muss antworten: „Keine autorisierte Information gefunden.“

Schritt 6 und 7: Pilotbetrieb und Go/No-Go

  1. Pilot mit Power-Usern starten: Aktivieren Sie den Bot in einem dedizierten Slack-Channel mit 5 bis 10 Support-Mitarbeitern. Sie stellen täglich 5 bis 10 reale Fragen. Sie bewerten jede Antwort: „Korrekt“, „Teilweise korrekt“, „Falsch“, „Keine Antwort“. Die Bewertungen fließen in ein Google-Sheet, das der Product Owner täglich prüft.

  2. Metriken messen und iterieren: Nach 5 Tagen: Analysieren Sie die Audit-Logs. Welche Fragen wurden nicht beantwortet? Welche Chunk-IDs wurden häufig abgerufen, aber die Antwort war falsch? Passen Sie die CHUNK_SIZE an (z. B. von 512 auf 256, wenn die Antworten zu generisch sind). Aktualisieren Sie den Vektorindex, wenn neue Dokumente in Confluence veröffentlicht wurden. Code: client.delete(collection_name="knowledge", filter=Filter.must([FieldCondition(key="source", match=MatchAny(any=[old_url]))])).

  3. Compliance-Review durchführen: Die Compliance-Abteilung prüft die Audit-Logs: Wurden keine „confidential“-Dokumente abgerufen? Sind die Logs vollständig? Sie signiert den Pilot-Report. Wenn es Abweichungen gibt: Passen Sie die Filter an und wiederholen Sie den Test.

  4. Go/No-Go-Entscheidung: Am Tag 14: Präsentieren Sie die Metriken an die Geschäftsführung: Antwortzeit (Ziel: < 20 Sekunden), Genauigkeit (Ziel: > 85 % „Korrekt“), Compliance-Verstöße (Ziel: 0). Wenn die Ziele erreicht sind: Freigabe für die Produktivphase. Wenn nicht: Identifizieren Sie die Ursachen (z. B. schlechte Chunking-Strategie, unvollständige Daten) und planen Sie einen zweiten Pilot mit erweitertem Scope.

Häufige Stolperfallen und wie Sie sie erkennen

  • Chunking-Strategie zu grob: Wenn CHUNK_SIZE = 1024 ist, enthält ein Chunk oft mehrere Themen. Die RAG-Suche findet das relevante Chunk, aber das LLM generiert eine Antwort, die auch irrelevante Informationen enthält. Erkennen: Die Power-User bewerten die Antwort als „Teilweise korrekt“. Lösung: Reduzieren Sie CHUNK_SIZE auf 256 und testen Sie erneut.
  • Compliance-Filter nicht aktiv: Wenn die Metadaten classification in den Dokumenten fehlen oder falsch gesetzt sind, werden „confidential“-Dokumente indiziert. Erkennen: Die Compliance-Abteilung findet in den Audit-Logs Chunk-IDs, die auf „confidential“-Dokumente verweisen. Lösung: Validieren Sie die Metadaten vor dem Indexing. Wenn classification fehlt, setzen Sie den Default auf „confidential“.
  • Slack-Latenz zu hoch: Wenn die Antwortzeit > 30 Sekunden beträgt, sind die Power-User frustriert. Ursache: Die Embedding-Generierung dauert zu lange oder die Qdrant-Suche ist langsam. Erkennen: Messen Sie die Latenz pro Node in den Audit-Logs. Lösung: Cachen Sie die Embeddings in Redis, wenn sich die Dokumente nicht ändern. Optimieren Sie die Qdrant-Indizes (HNSW-Parameter).
  • Daten nicht aktuell: Wenn neue Dokumente in Confluence veröffentlicht werden, sind sie nicht im Vektorindex. Erkennen: Die Power-User stellen Fragen zu neuen Features, die der Bot nicht kennt. Lösung: Implementieren Sie einen Cron-Job, der täglich die Confluence-API abfragt und neue/aktualisierte Dokumente in den Index aufnimmt.

Nächster Schritt nach dem Piloten

Der 14-Tage-Pilot liefert die Metriken, die Sie für die Go/No-Go-Entscheidung benötigen. Wenn die Ziele erreicht sind, ist der nächste Schritt die Produktivphase: Erweitern Sie den Bot auf alle Support-Teams, integrieren Sie weitere Datenquellen (z. B. Jira, Salesforce) und automatisieren Sie die Dokument-Aktualisierung. Wenn die Ziele nicht erreicht sind, identifizieren Sie die Ursachen und planen Sie einen zweiten Pilot mit erweitertem Scope. Die technische Architektur (LangGraph, Qdrant, Slack-Integration) bleibt gleich; nur der Datenbestand und die Filter werden angepasst. Die Compliance-Abteilung muss die Produktivphase separat freigeben, weil die Datenmenge und die Nutzerzahl steigen. Planen Sie für die Produktivphase 4 bis 6 Wochen ein, inklusive Schulung und Prozessanpassung.

Kommentare

Leave a Reply

Your email address will not be published. Required fields are marked *