Цель
Проверять качество RAG на наборе заранее определённых вопросов, а не судить по одному удачному демо.
Эталонный набор
Файл evals/rag_cases.json содержит шесть сценариев:
- стоимость и сроки доставки;
- срок возврата товара и денег;
- работа поддержки в выходные;
- вопрос о гарантии, ответа на который в документах нет.
Каждый положительный сценарий задаёт ожидаемый источник и обязательные фрагменты ответа. Отрицательный сценарий требует отказа от ответа без источников.
Запуск
Сначала должен быть построен RAG-индекс:
uv run python -m agent_lab.rag indexЗатем запустите evaluation:
uv run python -m agent_lab.evaluationКоманда возвращает код 0, только если прошли все сценарии. Отчёты сохраняются в:
artifacts/evals/rag-eval.json— данные для автоматической обработки;artifacts/evals/rag-eval.md— краткий отчёт для человека.
Метрики
pass_rate— доля полностью успешных сценариев;retrieval_hit_rate— доля положительных вопросов, где ожидаемый источник попал в top-3;source_pass— модель сослалась на ожидаемый источник;answer_pass— ответ содержит обязательные контрольные фрагменты;average_latency_seconds— среднее время полного запроса.
Что эти тесты не доказывают
Проверка ключевых фрагментов не понимает весь смысл ответа. Она может пропустить убедительно написанную ошибку или отклонить правильную переформулировку. Для клиентского проекта набор расширяют реальными обезличенными вопросами и периодически проверяют ответы вручную.
Модульные тесты
uv run pytestОни не вызывают модель и быстро проверяют саму логику подсчёта PASS/FAIL и метрик.