Тестовый кейс — это единица данных, содержащая всю необходимую информацию для модульного тестирования вашей LLM-системы. Вот основные параметры, которые входят в тестовый кейс для LLM:
- Входные данные — входные данные для вашей системы LLM.
- Фактические выходные данные — текстовый ответ, сгенерированный вашей системой LLM.
- Ожидаемые выходные данные — идеальный ответ для заданных входных данных для вашей системы LLM.
- Контекст извлечения — текстовые фрагменты/документы, извлеченные в конвейере RAG/системе извлечения.
- Контекст — идеальные текстовые фрагменты/документы, из которых выводятся ожидаемые выходные данные.
Вот в чем подвох: разные метрики требуют заполнения разных параметров в тестовом кейсе LLM. Например, метрика релевантности ответа без эталона (reference-less answer relevancy metric, о которой вы узнаете позже) требует только входных данных и фактического вывода. В то же время метрика релевантности ответа с эталоном (reference-based answer relevancy metric) потребует входных данных, фактического вывода и ожидаемого результата.
Другой пример вы можете найти в исходной метрике контекстной полноты, использованной ранее в примере Text-to-SQL. Поскольку контекстная полнота оценивает, способна ли ваша система извлечения извлекать все соответствующие фрагменты текста для ответа на определенный запрос, вам понадобятся входные данные (т. е. запрос) и контекст извлечения (т. е. соответствующие фрагменты текста, которые были извлечены).
Вот несколько правил, которым необходимо следовать при подготовке набора данных оценки:
- Начните с 50–100 тестовых кейсов. Вы можете либо сформировать их с нуля, либо использовать данные из продакшена (если ваша LLM-система уже развернута). На практике это количество оптимально: оно достаточно для выявления слабых мест в вашей системе и не слишком велико для начальной работы.
- Подбирайте тестовые кейсы которые наиболее вероятно могут не соответствовать критериям, выбранным для оценки вашей LLM-системы.
- Фактические выходные данные не обязательно вычислять заранее, особенно если вы планируете тестировать вашу систему после каждого изменения.
- Заполните тестовые кейсы ожидаемыми выходными данными. Как было объяснено в разделе о метриках LLM, метрики с использованием эталонных данных (reference-based metrics) обеспечивают гораздо более точные результаты. Поэтому важно заранее определить ожидаемые выходные данные.
Подготовить тестовые кейсы с ожидаемыми выходными данными - это определенно непростая задача, особенно для 50–100 тестовых кейсов. В настоящее время существует два основных способа создания наборов данных для оценки для бенчмаркинга вашей системы LLM:
- Человеческая аннотация — это просто: наймите кого-нибудь, чтобы он подготовил 100 тестовых кейсов. Можно также использовать данные из производственной среды, если ваша система уже развернута.
- Генерация синтетических данных. Этот метод немного сложнее: использовать LLM для генерации 100 тестовых кейсов.
Генерация синтетических данных с помощью LLM включает предоставление LLM контекста (того же контекста в тестовом кейсе LLM, как описано выше) и генерацию соответствующих входных данных и ожидаемых выходных данных на основе заданного контекста.
Например, в случае использования Text-to-SQL хороший генератор синтетических данных будет:
- Случайным образом (для разнообразия набора данных) выбирать разные таблицы в вашей базе данных и использовать их как контекст тестового кейса.
- Генерировать пользовательский запрос в качестве входных данных для вашего тестового кейса.
- Генерировать ожидаемые выходные данные на основе контекста и входных данных вашего тестового кейса.
- Повторять эти шаги до тех пор, пока не будет создан разумный объем данных для оценки.
Однако необходимо развивать ввод тестовых кейсов, чтобы сделать его более реалистичным и неотличимым от данных, подготовленных вручную. Этот процесс называется эволюцией, и он был изначально представлен в
статье Evol-Instruct от Microsoft.
Вот быстрый способ сгенерировать синтетические данные с использованием LLM через
DeepEval: