Чек-лист для тестирования поисковых и RAG-систем — от базовой работоспособности поискового движка до качества генерации, агентных сценариев и поведения на неполных данных. Шесть уровней проверок, сводная таблица с инструментами для каждого уровня и глоссарий из 50+ терминов. Проверку стоит организовывать по порядку, нет смысла гонять RAG-метрики, если система не проходит Уровень 0, то проблема может быть в том, что поиск не находит документ из-за опечатки в запросе, а не в качестве генерации.
Перед тестированием
-
По каким полям/источникам поиск должен работать, по каким — нет
-
Поиск по включению или полному соответствию?
-
Регистрозависимый ли поиск?
-
Есть ли верхняя граница длины запроса? Что происходит при превышении?
-
Как ведет себя система при пустом запросе?
-
Если система гибридная (retrieval + LLM) — на каком этапе подключается LLM: переформулировка запроса, ранжирование, генерация ответа, все сразу?
-
Какой формат ожидаемого ответа: список документов / сгенерированный текст / то и другое с цитированием?
Уровень 0 — Функциональный (engine sanity)
Базовая работоспособность поискового движка.
|
Название теста |
Результат тестирования |
|---|---|
|
Поиск находит по всем полям, указанным в ТЗ |
|
|
Поиск не находит по полям, не указанным в ТЗ |
|
|
Регистронезависимость (платье = Платье = ПЛАТЬЕ) |
|
|
Два слова из одного поля в разном порядке |
|
|
Два слова из разных полей одновременно |
|
|
Исправление опечаток (1–2 символа) |
|
|
Исправление неправильной раскладки клавиатуры |
|
|
Поддержка нескольких языков, смешанный запрос |
|
|
Спецсимволы не ломают поиск |
|
|
Эмодзи не ломают систему |
|
|
Trim ведущих/конечных пробелов |
|
|
Пустое поле и поле из одних пробелов |
|
|
Нижняя граница длины запроса |
|
|
Верхняя произвольная граница (по ТЗ) |
|
|
Технологическая граница (очень длинный текст) |
|
|
Учет контекста поиска (весь индекс vs раздел/проект) |
|
Уровень 1 — Классический Information Retrieval / качество ранжирования
|
Название теста |
Результат тестирования |
|---|---|
|
Собран golden query set с экспертной разметкой релевантности |
|
|
Precision@k на golden set |
|
|
Recall@k на golden set |
|
|
NDCG@k |
|
|
MRR (Mean Reciprocal Rank) |
|
|
MAP (Mean Average Precision) |
|
Уровень 2 — RAG: качество найденного контекста
|
Название теста |
Результат тестирования |
|---|---|
|
Contextual Precision — нет нерелевантного шума в контексте |
|
|
Contextual Recall — достаточно контекста для полного ответа |
|
|
Контекст не превышает окно модели, важное не обрезано |
|
|
Конфликтующие источники оба попадают в контекст, а не теряется один |
|
Уровень 3 — RAG: качество сгенерированного ответа
|
Название теста |
Результат тестирования |
|---|---|
|
Faithfulness/Groundedness |
|
|
Hallucination rate на заведомо неполном контексте |
|
|
Answer Relevance |
|
|
Completeness |
|
|
Citation/attribution accuracy |
|
|
G-Eval по кастомной рубрике домена |
|
|
Summarization: alignment score + coverage score |
|
Уровень 4 — Агентность и навигация по графу знаний
|
Название теста |
Результат тестирования |
|---|---|
|
Multi-hop вопросы решаются корректно |
|
|
Tool/Source correctness — обращение к правильным источникам в правильном порядке |
|
|
Task completion — задача решена целиком |
|
|
Plan adherence — путь навигации логичен, без лишних прыжков |
|
|
Точность fact extraction (precision/recall против ground truth) |
|
|
Disambiguation похожих, но разных сущностей |
|
Уровень 5 — Неполные и слабосвязанные данные
Ключевой риск для гибридных систем: на «чистых» тестовых данных эти проблемы не видны.
|
Название теста |
Результат тестирования |
|---|---|
|
Честное «не знаю» при отсутствии данных для ответа |
|
|
Явное обозначение частичной информации (не достраивается как факт) |
|
|
Слабосвязанные сущности не объединяются в один ответ |
|
|
Отсутствующие звенья графа явно отмечаются, а не угадываются |
|
|
Конфликт устаревших и актуальных данных обрабатывается явно |
|
|
Калибровка уверенности соответствует реальной полноте данных |
|
|
Тест на переэкстраполяцию (контекст покрывает вопрос на 60–70%) |
|
|
Adversarial/edge-case набор с экспертной разметкой |
|
|
Деградация recall по мере роста графа на старых, но валидных связях |
|
Сводная таблица по уровням
|
Уровень |
Что проверяем |
Инструменты |
|---|---|---|
|
0 — Функциональный |
Поля, регистр, опечатки, границы |
pytest, Hypothesis, Postman, k6 |
|
1 — Классический IR |
Precision/Recall/NDCG/MRR на golden set |
ranx, trec_eval, свои скрипты |
|
2 — Контекст RAG |
Релевантность и полнота найденного |
deepeval, RAGAS |
|
3 — Генерация RAG |
Faithfulness, hallucination, relevance |
deepeval, RAGAS, TruLens |
|
4 — Агентность/граф |
Multi-hop, fact extraction, task completion |
deepeval (trace, agent metrics) |
|
5 — Неполные данные |
Abstention, переэкстраполяция, конфликты |
кастомный G-Eval + экспертная разметка |
Чек-лист стоит читать сверху вниз по приоритету: нет смысла гонять RAG-метрики, если не пройден Уровень 0 — система может «отвечать неполно» просто потому, что не нашла документ из-за опечатки в запросе, а не из-за проблем с генерацией.
Термины и определения
|
Термин |
Определение |
|---|---|
|
RAG (Retrieval-Augmented Generation) |
Архитектура, в которой языковая модель генерирует ответ не только на основе своих внутренних знаний, а с опорой на документы, найденные поисковым/retrieval-слоем в реальном времени. |
|
LLM (Large Language Model) |
Большая языковая модель — отвечает за генерацию текста ответа в RAG-системе. |
|
Retrieval |
Этап поиска релевантных документов/фрагментов в базе перед передачей их модели для генерации ответа. |
|
Эмбеддинг (embedding) |
Числовое векторное представление текста, отражающее его смысл; используется для поиска похожих по смыслу фрагментов. |
|
Векторный поиск (vector search) |
Поиск документов по близости эмбеддингов, а не по точному совпадению слов. |
|
BM25 |
Классический алгоритм полнотекстового поиска по совпадению ключевых слов с учетом их частоты и длины документа. |
|
Гибридный retrieval (hybrid retrieval) |
Комбинация классического (BM25) и векторного поиска для повышения полноты и точности выдачи. |
|
Ранжирование (ranking) |
Упорядочивание найденных документов по релевантности запросу. |
|
Golden query set |
Набор запросов с заранее экспертно размеченными правильными/релевантными ответами, используемый как эталон для измерения качества. |
|
Precision@k |
Доля релевантных документов среди первых k результатов выдачи. |
|
Recall@k |
Доля всех существующих релевантных документов, которая попала в первые k результатов. |
|
NDCG (Normalized Discounted Cumulative Gain) |
Метрика ранжирования, учитывающая не только наличие релевантного документа в выдаче, но и его позицию — выше позиция важнее. |
|
MRR (Mean Reciprocal Rank) |
Средняя обратная позиция первого правильного ответа по набору запросов. |
|
MAP (Mean Average Precision) |
Усредненная точность по всем релевантным документам и по всем запросам в наборе. |
|
Contextual Precision |
Метрика RAG: насколько найденный для генерации контекст не содержит нерелевантного «шума». |
|
Contextual Recall |
Метрика RAG: достаточно ли найденного контекста, чтобы полностью ответить на вопрос. |
|
Faithfulness / Groundedness |
Соответствие сгенерированного ответа фактам, действительно присутствующим в найденном контексте. |
|
Галлюцинация (hallucination) |
Утверждение в ответе модели, не подтвержденное исходными данными — модель «придумывает» факт. |
|
Answer Relevance |
Соответствие сгенерированного ответа смыслу заданного вопроса. |
|
Completeness |
Полнота ответа: присутствует ли вся нужная информация, доступная в контексте. |
|
Citation/attribution accuracy |
Точность ссылок на источники, которые модель указывает в ответе. |
|
LLM-as-judge |
Подход к оценке качества, при котором сама языковая модель используется как «эксперт», оценивающий ответ другой модели по заданным критериям. |
|
G-Eval |
Метод оценки качества текста через LLM-as-judge с явно описанной текстовой рубрикой/критериями оценки. |
|
Alignment score / coverage score |
Метрики качества суммаризации: alignment — отсутствие искажений и противоречий исходному тексту, coverage — полнота передачи ключевой информации. |
|
Агент (agent, agentic system) |
Система на основе LLM, способная самостоятельно планировать последовательность действий (например, обращений к разным источникам) для решения задачи. |
|
Tool correctness |
Метрика, оценивающая, вызвал ли агент нужные инструменты/источники в правильном порядке. |
|
Task completion |
Метрика, оценивающая, решена ли задача целиком, а не только похож ли финальный ответ на правдоподобный. |
|
Plan adherence |
Соответствие действий агента заранее построенному или заявленному плану решения задачи. |
|
Multi-hop (multi-hop reasoning) |
Необходимость связать информацию из нескольких источников/шагов для получения ответа. |
|
Граф знаний (knowledge graph) |
Структура данных, представляющая сущности (тикеты, документы, людей) и связи между ними, по которой можно «навигировать» для ответа на сложные вопросы. |
|
Fact extraction |
Автоматическое извлечение фактов (сущностей и связей между ними) из неструктурированного текста. |
|
Disambiguation |
Определение, какая из нескольких похожих по названию сущностей имеется в виду в конкретном случае. |
|
Adversarial dataset |
Набор специально подобранных «сложных» тестовых случаев, призванных выявить слабые места системы. |
|
Abstention |
Способность системы признать нехватку данных для ответа, вместо того чтобы генерировать неподтвержденный ответ. |
|
Переэкстраполяция (over-extrapolation) |
Ситуация, когда модель домысливает недостающую часть ответа из общих знаний, выдавая это за специфичный факт из системы. |
|
Дрифт (drift) |
Постепенная деградация качества системы во времени из-за изменения данных или их объема. |
|
CTR (Click-Through Rate) |
Доля пользователей, кликнувших на результат поиска, относительно всех, кто его увидел. |
|
Dwell time |
Время, которое пользователь провел на найденном результате — косвенный сигнал релевантности. |
|
Abandonment rate |
Доля поисковых сессий, завершившихся без клика по результату. |
|
Red-teaming |
Намеренное «атакующее» тестирование системы для поиска уязвимостей и небезопасного поведения. |
|
Prompt injection |
Атака, при которой во входные данные (в том числе в индексируемые документы) внедряется текст, пытающийся изменить поведение модели. |
|
CI/CD (Continuous Integration / Continuous Deployment) |
Практика автоматического прогона тестов и развертывания изменений при каждом обновлении кода. |
|
Property-based testing |
Подход к тестированию, при котором тестовые данные генерируются автоматически по заданным правилам, а не перечисляются вручную, чтобы найти неочевидные edge-кейсы. |
Автор: podluzny


