Bau einer RAG-Pipeline von Grund auf

Ich wollte SmartQueue um einen KI-Assistenten erweitern.

SmartQueue ist eine Task-Queue, die ich in Go für IT-Support-Tickets entwickelt habe. Ich wollte keine generische KI. Ein generisches Modell kennt weder Ihre spezifischen Regeln für die Passwortrücksetzung noch Ihre Runbooks für Ausfälle.

Ich benötigte Retrieval-Augmented Generation (RAG). Dabei werden zuerst Fakten aus Ihren Dokumenten abgerufen. Diese Fakten werden dem Modell dann als Kontext übergeben.

Hier ist das, was ich beim Bau dieser Pipeline gelernt habe.

Das Scheitern beim Deployment

Meine erste Version nutzte ChromaDB für die Vektorsuche. Lokal funktionierte es. Beim Deployment schlug es fehl.

Ich habe alles in einem einzigen Container auf Hugging Face Spaces laufen lassen. Das beinhaltete Redis, eine Go-API, Worker, einen FastAPI-Service und ChromaDB. Fünf Prozesse konkurrierten um begrenzten Arbeitsspeicher und CPU. ChromaDB verursachte Race Conditions beim Start und stille Fehler.

Ich habe eine Entscheidung getroffen. Ich habe die Vektordatenbank entfernt und durch eine einfache BM25-Suche ersetzt.

Die einfache Lösung

Der neue Ersatz besteht aus 50 Zeilen Python. Er benötigt keinen externen Prozess. Er macht keine Netzwerkaufrufe. Er nutzt die Okapi-BM25-Formel, um Schlüsselwörter im Arbeitsspeicher abzugleichen.

Der Kompromiss ist eindeutig:

Tuning des Systems

Ich habe mehrere Einstellungen optimiert, um das System stabil zu halten: • Abgerufene Dokumente (k): 4. Dies bietet genügend Kontext, ohne die Token-Limits zu überschreiten. • Bot-Temperatur: 0,2. Fehlerbehebung erfordert wörtliche Antworten, keine Kreativität. • Classifier-Temperatur: 0,1. Dies stellt sicher, dass die JSON-Ausgabe vorhersagbar bleibt. • Sitzungsverlauf: Letzte 10 Interaktionen. Dies sorgt für Kontinuität, ohne zu viel Arbeitsspeicher zu verbrauchen. • Rate-Limits: 30 Anfragen pro Minute. Dies schützt mein API-Kontingent.

Das beste Design ist ein Design mit kontrolliertem Funktionsabbau

Ich habe jeden Endpunkt mit einem Non-AI-Fallback ausgestattet. Wenn der KI-Dienst ausfällt, nutzt das System Keyword-Matching oder regelbasierte Logik. Das System baut seine Funktionen kontrolliert ab, anstatt komplett auszufallen.

Dies ist kein komplexes RAG-Setup. Es verfügt über kein Re-Ranking oder Hybrid-Suche. Es ist ein kleines, intelligentes Werkzeug, das für eine spezifische Skalierung entwickelt wurde.

Erkenntnisse:

Quelle: https://dev.to/ambarish_0221/building-a-rag-pipeline-from-scratch-what-smartqueue-taught-me-about-retrieval-4gdb

Optionale Lern-Community: https://t.me/GyaanSetuAi