Чому мій RAG-додаток галюцинував і як я це виправив
Одного разу я демонстрував свого RAG-бота підтримки колезі.
Бот сказав їй, що наша політика повернення коштів становить 30 днів.
Насправді наша політика становить 14 днів.
Бот не сказав, що він не впевнений. Він вигадав відповідь із повною впевненістю.
RAG має запобігати галюцинаціям. Моя конфігурація лише перемістила їх в інше місце.
Я виправив це, виконавши п'ять кроків.
- Виправте свою стратегію чанкування
Раніше я розділяв документи за кількістю символів. Це було помилкою.
Один чанк часто змішував різні теми, як-от доставку та повернення. Модель поєднувала їх у неправильні відповіді.
Рішення: Я перейшов на семантичне чанкування. Тепер я розділяю текст за заголовками та абзацами.
- Перестаньте покладатися лише на показники схожості
Мій ретривер вибирав три найкращі чанки на основі косинусної схожості.
Схожість — це не те саме, що релевантність. Чанк може бути схожим на запитання, але не містити відповіді.
Рішення: Я додав етап переранжування (reranking) за допомогою cross-encoder. Це допомогло мені бачити, коли в системі немає реальних даних.
- Дайте моделі право на помилку
Мій старий промпт лише казав: Використовуй контекст, щоб відповісти на запитання.
Якщо в контексті не було відповіді, модель заповнювала прогалини здогадками.
Рішення: Я додав пряму інструкцію. Якщо відповіді немає в контексті, скажи, що ти не знаєш. Це саме по собі зупинило більшість галюцинацій.
- Встановіть поріг пошуку
Іноді модель використовувала загальні знання, коли пошук не вдався. Я сподівався, що промпт спрацює, але сподівання — це не стратегія.
Рішення: Я додав поріг оцінки (score cutoff). Якщо показник пошуку занадто низький, система повертає резервну відповідь (fallback response). Немає контексту — немає відповіді.
- Тестуйте на помилки, а не на успіх
Раніше я тестував лише прості запитання. Я ігнорував неоднозначні запити та відсутність інформації.
Рішення: Я створив набір оцінювальних запитань-пасток. Це випадки, коли відповідь відсутня. Регулярне проведення таких тестів показує, де саме ваша система дає збій.
RAG не усуває галюцинації. Він робить їх керованими.
Мій бот усе ще не знає кожної деталі. Але тепер він визнає, коли не впевнений. Це робить його придатним для використання.
Джерело: https://dev.to/pallavi_sharma_10c1a6f1da/why-my-rag-app-kept-hallucinating-and-how-i-fixed-it-3i10
Додаткова спільнота для навчання: https://t.me/GyaanSetuAi