Новий RAG-асистент (retrieval-augmented generation) на базі WhatsApp перестав галюцинувати, вимагаючи, щоб кожна відповідь підтверджувалася цитуванням у форматі JSON. Коли модель не могла вказати на конкретний фрагмент (chunk), вона видавала: «У мене недостатньо інформації, щоб відповісти на це», перетворивши впевненого брехуна на надійну систему, яка вміє казати «я не знаю».
Чому довіра має значення в RAG
Більшість туторіалів з RAG зосереджені на пошуку (retrieval) — виборі ембедінгів (embeddings), розбитті документів на фрагменти (chunks) та переранжуванні результатів. Вони ігнорують те, що відбувається після знаходження релевантного тексту. Користувачі втрачають довіру, коли асистент надає остаточну відповідь, яку знайдений контекст насправді не підтверджує.
Розрив між впевненістю та точністю
У прототипі, побудованому на PostgreSQL з розширенням pgvector, конвеєр пошуку був простим. Справжній виклик з'явився під час експлуатації (production): мовна модель звучала впевнено навіть тоді, коли у знайденому уривку бракувало необхідної інформації. Демонстрація могла приховувати проблему, але реальні користувачі виявили розрив між впевненим тоном і фактичною правильністю.
Примусове цитування за допомогою JSON
Замість того, щоб намагатися вмовити модель промптами на кшталт «відповідай лише за наявності контексту», автор змінив формат виводу. Тепер система вимагає JSON-об'єкт, де кожне твердження містить посилання на конкретний фрагмент, який його підтверджує. Якщо модель не може додати цитування, відповідь відхиляється, і користувач бачить чітке повідомлення «Я не знаю».
Контроль перейшов від інструкцій природною мовою до валідації схеми. Модель все ще генерує текст, але допоміжний код перевіряє, чи відповідає JSON необхідній структурі, перш ніж він потрапить до користувача.
Що змінилося
- Розбиття на фрагменти стало консервативнішим. Нечіткі або занадто широкі фрагменти тепер генерують твердження без цитувань, що запускає резервний варіант «я не знаю».
- Системний промпт скоротився. Замість громіздкого промпту, який намагався контролювати поведінку моделі, з'явився короткий набір інструкцій, що дозволило схемі взяти на себе основне навантаження.
- Помилки стали помітними. Коли пошук повертає нерелевантний матеріал, асистент більше не маскує помилку впевненою, але неправильною відповіддю; він відкрито визнає невпевненість.
Висновок: Для RAG-асистентів гарантування того, що кожне твердження можна простежити до знайденого джерела, будує довіру користувачів надійніше, ніж просто вдосконалення етапу пошуку. Перетворюючи відсутність цитувань на видиме «я не знаю», розробники дозволяють системі визнавати свої обмеження замість того, щоб вигадувати відповіді.
