Ich habe einen Code-Q&A-Bot mit RAG gebaut: Was funktioniert hat und was nicht
Unsere Entwickler verbrachten Tage damit, in Slack und alten Dokumentationen zu suchen, um unsere Microservices zu verstehen. Ich entschied mich, einen Chatbot zu bauen, der diese Fragen mithilfe von RAG beantwortet.
Ich habe auf diesem Weg viele Fehler gemacht. Hier ist das, was ich gelernt habe.
Die Misserfolge
- Ich habe versucht, alle Dokumente in einen einzigen Prompt zu packen. Das führte zu Token-Limits, verursachte Halluzinationen und kostete zu viel Geld.
- Ich habe einen einfachen TF-IDF-Index verwendet. Er versagte, wenn Nutzer Synonyme oder andere Begriffe verwendeten.
- Ich habe es mit einfachen 500-Zeichen-Chunks versucht. Die Ergebnisse waren zufällig, da die Chunks oft mitten im Satz abgeschnitten wurden.
Die Lösung
Ich habe aufgehört, das LLM wie eine Suchmaschine zu behandeln. Ich habe es stattdessen in eine „Lese-Engine“ für einen dedizierten Suchindex verwandelt.
Hier ist die Pipeline, die funktioniert hat:
- Dokumente in 300-Token-Chunks mit einer Überlappung von 50 Token aufteilen.
- Jeden Chunk in einen Vektor einbetten.
- Vektoren in einem Ähnlichkeitssuchindex speichern.
- Zum Zeitpunkt der Abfrage die 5 ähnlichsten Chunks finden.
- Nur diese Chunks in das LLM einspeisen, um eine Antwort zu generieren.
Diese Änderung reduzierte Halluzinationen um 80 % und senkte die Kosten auf unter 0,01 $ pro Abfrage.
Wichtigste Erkenntnisse
- Die Chunk-Größe ist entscheidend. 150 Token bieten zu wenig Kontext. 1000 Token verursachen zu viel Rauschen. 300 Token sind der Sweet Spot.
- Überlappung ist zwingend erforderlich. Sie verhindert, dass Kontext zwischen den Chunks verloren geht.
- Nutzen Sie kleine Modelle für mehr Geschwindigkeit. Ein kleines Embedding-Modell hat für unsere internen Anforderungen gut funktioniert.
- Testen Sie Ihr Retrieval. Verlassen Sie sich nicht auf manuelle Prüfungen. Erstellen Sie einen Testdatensatz, um die Genauigkeit zu messen.
RAG ist keine Magie. Es ist ein technisches Rätsel. Wenn Ihre Chunks schlecht sind, ist Ihr Retrieval schlecht. Wenn Ihr Retrieval schlecht ist, sind Ihre Antworten schlecht.
Wir beantworten nun 80 % der Onboarding-Fragen korrekt. Das geht viel schneller, als auf eine Antwort eines Menschen in Slack zu warten.
Wie bauen Sie KI-Assistenten für Ihre Dokumentation?
Optional learning community: https://t.me/GyaanSetuAi