- BrainTools - https://www.braintools.ru -
Чек-лист для тестирования поисковых и RAG-систем — от базовой работоспособности поискового движка до качества генерации, агентных сценариев и поведения [1] на неполных данных. Шесть уровней проверок, сводная таблица с инструментами для каждого уровня и глоссарий из 50+ терминов. Проверку стоит организовывать по порядку, нет смысла гонять RAG-метрики, если система не проходит Уровень 0, то проблема может быть в том, что поиск не находит документ из-за опечатки в запросе, а не в качестве генерации.
По каким полям/источникам поиск должен работать, по каким — нет
Поиск по включению или полному соответствию?
Регистрозависимый ли поиск?
Есть ли верхняя граница длины запроса? Что происходит при превышении?
Как ведет себя система при пустом запросе?
Если система гибридная (retrieval + LLM) — на каком этапе подключается LLM: переформулировка запроса, ранжирование, генерация ответа, все сразу?
Какой формат ожидаемого ответа: список документов / сгенерированный текст / то и другое с цитированием?
Базовая работоспособность поискового движка.
|
Название теста |
Результат тестирования |
|---|---|
|
Поиск находит по всем полям, указанным в ТЗ |
|
|
Поиск не находит по полям, не указанным в ТЗ |
|
|
Регистронезависимость (платье = Платье = ПЛАТЬЕ) |
|
|
Два слова из одного поля в разном порядке |
|
|
Два слова из разных полей одновременно |
|
|
Исправление опечаток (1–2 символа) |
|
|
Исправление неправильной раскладки клавиатуры |
|
|
Поддержка нескольких языков, смешанный запрос |
|
|
Спецсимволы не ломают поиск |
|
|
Эмодзи не ломают систему |
|
|
Trim ведущих/конечных пробелов |
|
|
Пустое поле и поле из одних пробелов |
|
|
Нижняя граница длины запроса |
|
|
Верхняя произвольная граница (по ТЗ) |
|
|
Технологическая граница (очень длинный текст) |
|
|
Учет контекста поиска (весь индекс vs раздел/проект) |
|
|
Название теста |
Результат тестирования |
|---|---|
|
Собран golden query set с экспертной разметкой релевантности |
|
|
Precision@k на golden set |
|
|
Recall@k на golden set |
|
|
NDCG@k |
|
|
MRR (Mean Reciprocal Rank) |
|
|
MAP (Mean Average Precision) |
|
|
Название теста |
Результат тестирования |
|---|---|
|
Contextual Precision — нет нерелевантного шума в контексте |
|
|
Contextual Recall — достаточно контекста для полного ответа |
|
|
Контекст не превышает окно модели, важное не обрезано |
|
|
Конфликтующие источники оба попадают в контекст, а не теряется один |
|
|
Название теста |
Результат тестирования |
|---|---|
|
Faithfulness/Groundedness |
|
|
Hallucination rate на заведомо неполном контексте |
|
|
Answer Relevance |
|
|
Completeness |
|
|
Citation/attribution accuracy |
|
|
G-Eval по кастомной рубрике домена |
|
|
Summarization: alignment score + coverage score |
|
|
Название теста |
Результат тестирования |
|---|---|
|
Multi-hop вопросы решаются корректно |
|
|
Tool/Source correctness — обращение к правильным источникам в правильном порядке |
|
|
Task completion — задача решена целиком |
|
|
Plan adherence — путь навигации логичен, без лишних прыжков |
|
|
Точность fact extraction (precision/recall против ground truth) |
|
|
Disambiguation похожих, но разных сущностей |
|
Ключевой риск для гибридных систем: на «чистых» тестовых данных эти проблемы не видны.
|
Название теста |
Результат тестирования |
|---|---|
|
Честное «не знаю» при отсутствии данных для ответа |
|
|
Явное обозначение частичной информации (не достраивается как факт) |
|
|
Слабосвязанные сущности не объединяются в один ответ |
|
|
Отсутствующие звенья графа явно отмечаются, а не угадываются |
|
|
Конфликт [2] устаревших и актуальных данных обрабатывается явно |
|
|
Калибровка уверенности соответствует реальной полноте данных |
|
|
Тест на переэкстраполяцию (контекст покрывает вопрос на 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 |
Намеренное «атакующее» тестирование системы для поиска уязвимостей и небезопасного поведения [3]. |
|
Prompt injection |
Атака, при которой во входные данные (в том числе в индексируемые документы) внедряется текст, пытающийся изменить поведение модели. |
|
CI/CD (Continuous Integration / Continuous Deployment) |
Практика автоматического прогона тестов и развертывания изменений при каждом обновлении кода. |
|
Property-based testing |
Подход к тестированию, при котором тестовые данные генерируются автоматически по заданным правилам, а не перечисляются вручную, чтобы найти неочевидные edge-кейсы. |
Автор: podluzny
Источник [4]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/32875
URLs in this post:
[1] поведения: http://www.braintools.ru/article/9372
[2] Конфликт: http://www.braintools.ru/article/7708
[3] поведения: http://www.braintools.ru/article/5593
[4] Источник: https://habr.com/ru/articles/1057356/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1057356
Нажмите здесь для печати.