Первый RAG-демо всегда работает.
Вы загружаете чистый PDF. Задаёте очевидный вопрос. Модель находит очевидный абзац и отвечает тоном хорошо оплаченного консультанта.
Затем пользователь задаёт вопрос с неправильной аббревиатурой, политика изменилась три недели назад, ответ разбросан по двум документам, а система цитирует абзац, который звучит релевантно, но на самом деле не подтверждает утверждение.
Вот когда начинается работа над продуктом.
Поиск — первое продуктовое решение
Качество RAG определяется ещё до того, как модель увидит данные.
Слой поиска решает, что модели позволено знать. Если вернулись не те фрагменты, ответ уже скомпрометирован. Удачный промпт может скрыть проблему, но не исправит её.
Я оцениваю поиск с помощью скучных вопросов:
- Появился ли нужный документ в топе результатов?
- Появился ли нужный раздел, а не просто нужный файл?
- Оказался ли новый материал выше старого?
- Сработал ли запрос, сформулированный как у реального пользователя?
- Вернула ли система пустой результат, когда честный ответ — ничего?
Последнее важно. Система поиска, которая всегда что-то возвращает, учит модель всегда что-то говорить.
Достоверность цитирования важнее уверенности в ответе
Ответ — это не всё.
Для любой системы знаний я хочу знать, действительно ли цитируемый источник подтверждает утверждение в предложении.
Это означает оценку на уровне утверждений, а не только на уровне ответов. Если в ответе четыре утверждения и только два подтверждены, ответ не «почти правильный». Он опасен, причём в отполированном виде.
Простая рубрика работает:
- Подтверждено: цитата напрямую доказывает утверждение.
- Частично: цитата связана, но не доказывает полностью.
- Не подтверждено: цитата не доказывает утверждение.
- Противоречит: цитата говорит об обратном.
Вам не нужен сложный бенчмарк для начала. Вам нужно 30 реальных вопросов и дисциплина честно отмечать промахи.
Отказ — это функция
RAG-системы должны знать, когда не отвечать.
Это означает тестирование вопросов, на которые в корпусе нет ответа. А также вопросов, где ответ конфиденциален, устарел или зависит от контекста, который пользователь не предоставил.
Хороший отказ звучит так:
«Я не вижу этого в доступных источниках. Ближайший связанный документ — X, но он не отвечает на вопрос напрямую.»
Плохой отказ звучит так:
«На основе доступной информации, похоже, что...»
Эта фраза — момент, когда галлюцинации надевают пиджак.
Полезная система показателей
Для внутренней RAG-системы я предпочту отслеживать пять приземлённых метрик, а не один впечатляющий бенчмарк:
- Коэффициент попадания при поиске: появился ли нужный источник?
- Достоверность цитирования: подтвердил ли источник ответ?
- Точность отказов: отклонила ли система неподдерживаемые вопросы?
- Полезность ответа: может ли пользователь сделать следующий шаг?
- Расстояние редактирования: сколько человеку пришлось изменить?
Последняя метрика — самая честная. Если пользователи постоянно переписывают ответ, система не экономит их время. Она создаёт вежливый черновик, который нужно контролировать.
Начинайте с малого, чтобы можно было измерять
Правильная первая RAG-система — это обычно не «мозг компании».
Это один корпус, один рабочий процесс, один тип пользователя и одно чёткое действие после ответа. Макросы поддержки. Активация продаж. Поиск политик. Внутренняя инженерная документация. Поиск пунктов контрактов.
Узкий охват делает оценку возможной.
Оценка делает возможным доверие.
Доверие делает возможным расширение.
Этот порядок важен.
