Nowy asystent RAG (retrieval-augmented generation) oparty na WhatsAppie przestał halucynować dzięki wymogowi, aby każda odpowiedź była poparta cytatem zakodowanym w formacie JSON. Gdy model nie mógł wskazać konkretnego fragmentu (chunk), zwracał komunikat „Nie mam wystarczających informacji, aby na to odpowiedzieć”, zmieniając pewnego siebie kłamcę w godny zaufania system typu „nie wiem”.
Dlaczego zaufanie ma znaczenie w RAG
Większość samouczków dotyczących RAG skupia się obsesyjnie na procesie wyszukiwania (retrieval) — wyborze osadzeń (embeddings), dzieleniu dokumentów na fragmenty (chunks) czy ponownym rankingu wyników. Pomijają jednak to, co dzieje się po znalezieniu odpowiedniego tekstu. Użytkownicy tracą zaufanie, gdy asystent udziela kategorycznej odpowiedzi, której odnaleziony kontekst w rzeczywistości nie potwierdza.
Luka pewności siebie
W prototypie zbudowanym przy użyciu PostgreSQL i rozszerzenia pgvector potok wyszukiwania (retrieval pipeline) był prosty. Prawdziwe wyzwanie pojawiło się na produkcji: model językowy brzmiał pewnie nawet wtedy, gdy pobrany fragment nie zawierał potrzebnych informacji. Demo mogło ukryć problem, ale prawdziwi użytkownicy obnażyli lukę między brzmieniem pewnym siebie a byciem poprawnym.
Wymuszanie cytowań za pomocą JSON
Zamiast namawiać model za pomocą promptów typu „odpowiadaj tylko, jeśli masz kontekst”, autor zmienił format wyjściowy. System wymaga teraz obiektu JSON, w którym każde twierdzenie zawiera odniesienie do dokładnego fragmentu (chunk), który je wspiera. Jeśli model nie może dołączyć cytowania, odpowiedź jest odrzucana, a użytkownik widzi jasny komunikat „Nie wiem”.
Wymuszanie przeniosło się z instrukcji w języku naturalnym na walidację schematu. Model nadal generuje tekst, ale otaczający go kod sprawdza, czy JSON jest zgodny z wymaganą strukturą, zanim trafi on do użytkownika.
Co się zmieniło
- Dzielenie na fragmenty stało się bardziej zachowawcze. Niejasne lub zbyt szerokie fragmenty (chunks) generują teraz twierdzenia bez cytowań, co uruchamia mechanizm awaryjny „Nie wiem”.
- Prompt systemowy uległ skróceniu. Ciężki prompt, który próbował kontrolować zachowanie modelu, został zastąpiony krótkim zestawem instrukcji, pozwalając schematowi wykonać najtrudniejszą pracę.
- Błędy są widoczne. Gdy wyszukiwanie zwraca nieistotny materiał, asystent nie maskuje już błędu pewną, lecz błędną odpowiedzią; otwarcie przyznaje się do niepewności.
Wniosek: W przypadku asystentów RAG gwarantowanie, że każde twierdzenie można powiązać z odnalezionym źródłem, buduje zaufanie użytkowników znacznie skuteczniej niż samo dopracowanie etapu wyszukiwania. Zamieniając brakujące cytowania w widoczne „Nie wiem”, programiści pozwalają systemowi przyznać się do swoich ograniczeń, zamiast fabrykować odpowiedzi.
