TL;DR
Исследователи проверили как LLM работают в роли оценщиков релевантности — могут ли заменить людей в оценке "отвечает ли документ на запрос". Но не просто бинарно (да/нет), а с конкретикой: "выдели все части документа, которые отвечают на вопрос". Использовали Wikipedia-коллекции INEX 2009/2010, где люди уже разметили все релевантные пассажи в 10+ тысячах документов. Промпт включал 6 примеров формата "запрос → документ → выделенные релевантные куски", потом тестовую пару для оценки.
Главная боль: когда в большом документе релевантен только маленький кусок (абзац из статьи на 50 КБ), LLM не может точно его найти и выделяет слишком много текста вокруг. Это "микроигла в стоге" — модель видит что-то про тему, но теряет точность. Второй сюрприз: большая модель GPT-4.1-mini оказалась хуже маленькой Llama-3.1-8B на релевантных документах (61% vs 90% точности) — переуверенность вредит. На нерелевантных документах обе модели проваливаются: Llama выдаёт 70% ложных срабатываний на топовых результатах поиска.
Extractable principle для работы: Когда LLM даёт оценку/вывод — проси выделить конкретные цитаты/факты, на которых основан вывод. Общий вердикт "релевантно" или "качественно" без подтверждения конкретными кусками текста — ненадёжен. Проверяемость = точность. Применимо везде: от анализа отзывов до оценки статей.
Схема метода
ПРОМПТ (few-shot):
├─ Инструкция: "Выдели все части документа, которые отвечают на запрос"
├─ Пример 1: {запрос} + {описание запроса} + {документ} → {выделенные релевантные части}
├─ Пример 2-6: аналогично
└─ Тест: {запрос} + {описание} + {документ} → LLM выдаёт выделенные части
ОЦЕНКА:
Сравнить LLM-выделенное с человеческой разметкой:
→ Precision (сколько выделенного действительно релевантно)
→ Recall (сколько релевантного LLM нашла)
Выполняется в одном промпте. Temperature=0 для GPT (детерминированность), temperature=1.0 для Llama.
Пример применения
⚠️ Ограничение метода: LLM плохо работает когда релевантная часть — маленький кусок в большом документе. Не давайте задачу "найди одно предложение в лонгриде". Сильная зона: выделить ВСЕ части документа, относящиеся к критерию.
Задача: Анализируешь отзывы на Wildberries для своего магазина косметики. Нужно выделить конкретные фразы, где клиенты пишут про упаковку — чтобы понять что исправить.
Промпт:
Вот примеры как выделять релевантные части из отзывов:
###
Пример 1:
Запрос: упаковка товара
Описание запроса: Мне нужно найти все упоминания про упаковку — качество, повреждения, удобство, внешний вид. Это поможет понять что клиенты думают об упаковке.
Отзыв: Крем отличный, быстро впитывается и не оставляет жирного блеска. Заказывала уже третий раз. Единственное — в этот раз пришла помятая коробка, хорошо что сам тюбик целый. Рекомендую!
Выделенные части: "в этот раз пришла помятая коробка, хорошо что сам тюбик целый"
###
Пример 2:
Запрос: упаковка товара
Описание запроса: Мне нужно найти все упоминания про упаковку — качество, повреждения, удобство, внешний вид.
Отзыв: Давно искала такой тональник! Ложится ровно, не забивает поры. Упаковка очень красивая, можно дарить. Внутри был приятный бонус — пробник крема. Буду заказывать ещё.
Выделенные части: "Упаковка очень красивая, можно дарить"
###
[добавь ещё 2-4 примера по той же схеме]
###
Теперь твоя очередь:
Запрос: упаковка товара
Описание запроса: Мне нужно найти все упоминания про упаковку — качество, повреждения, удобство, внешний вид.
Отзыв: [вставь реальный отзыв клиента]
Выделенные части:
Результат: LLM выдаст только те фразы из отзыва, где упоминается упаковка — без пересказа, без додумывания. Если упаковка не упоминается — вернёт пустой результат или напишет "нет релевантных частей". Формат точно как в примерах: цитаты из исходного текста.
Почему это работает
Слабость LLM: Модели переуверены в общих выводах. Спроси "релевантен ли документ?" — LLM скажет "да" даже когда связь натянутая. Это overconfidence: модель видит пару слов про тему и делает широкий вывод. Исследование показало: GPT-4.1-mini ошиблась в 39% случаев на документах, которые люди разметили как релевантные — сказала "релевантно" там где на самом деле нет, или наоборот.
Сильная сторона LLM: Модели отлично копируют структуру из примеров. Покажи 5-6 раз как выглядит "запрос → текст → выделенные цитаты" — LLM точно повторит формат. Она умеет находить похожие по смыслу куски текста, если задача сформулирована конкретно (не "оцени", а "выдели").
Как метод использует это: Вместо абстрактного "да/нет" даём конкретную задачу поиска в тексте. Few-shot примеры показывают формат вывода — только цитаты, без додумывания. Это якорь: LLM не может сказать "в целом релевантно" без подтверждения конкретными кусками. Если не может найти точные места — вынуждена признать это. Проверяемость снижает overconfidence: читатель видит НА ЧЁМ основан вывод, не верит на слово.
Рычаги управления:
- Количество примеров (k=6) — для простых задач хватит 2-3, экономия токенов. Для сложных (медицина, юриспруденция) увеличь до 8-10.
- Детальность описания запроса — чем точнее объяснишь ЧТО искать, тем меньше LLM додумает лишнего.
- Temperature=0 — максимальная детерминированность, минимум "творчества". Для креативных задач (найди необычные инсайты) подними до 0.7-1.0.
- "Если не нашёл — так и скажи" — добавь в инструкцию, чтобы LLM не выдумывала "релевантность" из воздуха.
Шаблон промпта
Вот примеры как выделять релевантные части из текстов:
###
Пример 1:
Запрос: {критерий_поиска_1}
Описание запроса: {подробно что именно ищем и зачем}
Текст: {исходный_текст_1}
Выделенные части: {конкретные цитаты из текста которые отвечают критерию}
###
Пример 2:
Запрос: {критерий_поиска_2}
Описание запроса: {подробно что именно ищем и зачем}
Текст: {исходный_текст_2}
Выделенные части: {конкретные цитаты}
###
[добавь ещё 2-4 примера]
###
Теперь твоя очередь:
Запрос: {твой_критерий}
Описание запроса: {что ищешь}
Текст: {текст для анализа}
Выделенные части:
Что подставлять:
- {критерий_поиска} — тема/аспект который ищешь: "цена", "качество", "сроки", "упаковка"
- {описание запроса} — детально объясни ЧТО считать релевантным. Пример: "Мне нужны все упоминания про скорость доставки — сколько дней ждал, был ли товар вовремя, опоздания"
- {исходный_текст} — документ/отзыв/статья для анализа
- {конкретные цитаты} — в примерах покажи точные фразы из текста, не пересказ
Важно для примеров: Бери разные случаи — где релевантная часть явная, где неявная, где её вообще нет. LLM научится не додумывать.
🚀 Быстрый старт — вставь в чат:
Вот шаблон для выделения релевантных частей текста. Адаптируй под мою задачу: [опиши задачу — например "найти в отзывах упоминания про доставку"].
Задай вопросы чтобы создать 3-4 хороших примера для промпта.
[вставить шаблон выше]
LLM спросит какие тексты анализируешь, какой критерий важен, какие примеры релевантных/нерелевантных упоминаний можешь привести. Она возьмёт структуру из шаблона и создаст рабочий промпт с примерами под твою задачу.
Ограничения
⚠️ Микроиглы в стогах: Когда в документе 50 КБ текста, а релевантен только абзац — LLM выделяет слишком много текста вокруг. Не может точно локализовать маленький кусок. Метод лучше работает когда релевантных частей несколько или они составляют заметную долю документа.
⚠️ Ложные срабатывания: LLM переоценивает релевантность нерелевантных документов. В исследовании на документах из топ-100 поисковой выдачи (но нерелевантных по человеческой оценке) Llama выдала 70% false positives — сказала "релевантно" там где нет. Используй метод для уточнения оценки, не как единственный фильтр.
⚠️ Размер не гарантия: Большая модель GPT-4.1-mini показала на 30% хуже точность чем маленькая Llama-3.1-8B на релевантных документах (61% vs 90%). Проблема: overconfidence крупных моделей. Не думай что дорогая модель автоматически лучше для таких задач — проверяй.
⚠️ Не заменяет человека: Исследователи честно пишут — LLM promising, но не могут полностью заменить людей как оценщиков. Используй для первичной фильтрации или помощи, финальную проверку оставь человеку.
Как исследовали
Исследователи взяли Wikipedia-based коллекцию INEX 2009/2010 — 2.6 млн статей и 120 запросов (68+52 с полными оценками). В отличие от TREC-коллекций с новостями и госдокументами, это ближе к реальным пользовательским запросам: обычные темы, статьи Wikipedia. Люди-асессоры получили задачу: выделить ВСЕ релевантные части в каждом документе — не просто "релевантно/нет", а "вот эти 3 абзаца + вот этот список + вот это предложение". Разметили ~10,000 документов с точными байтовыми смещениями выделенных кусков.
Дизайн теста: Few-shot промптинг с k=6 примерами, подобранными по длине документа (короткие/средние/длинные — чтобы LLM видела разные случаи). LLM генерирует текст (temperature=0 для детерминированности), потом алгоритм поиска подпоследовательностей находит какие куски исходного документа она выделила. Сравнили с человеческой разметкой через precision/recall: сколько выделенного LLM действительно релевантно (precision) и сколько релевантного она нашла (recall).
Сюрпризы:
GPT-4.1-mini провалилась на релевантных документах (61% accuracy против 90% у Llama-3.1-8B) — противоречит ожиданиям "больше = лучше". Вывод: большие модели переуверены в оценках, додумывают связи.
Обе модели плохи на нерелевантных документах из топ-100 поиска: Llama дала 70% false positives. Модели видят пару общих слов с запросом и кричат "релевантно!". Это критично — нельзя использовать как единственный фильтр.
69% релевантных документов в INEX 2009 содержат только один выделенный пассаж — классический случай "микроигла в стоге", где LLM проваливаются.
Инсайт для практики: Метод "выдели конкретные части" работает лучше чем просто "релевантно/нет", но далёк от человеческой точности. Используй как first-pass фильтр с человеческой проверкой на финальной стадии. Или как инструмент проверки своих LLM-оценок: попроси модель подтвердить вывод цитатами — если не может — вывод ненадёжен.
Адаптации и экстраполяции
🔧 Техника: добавь "объясни почему" → видишь логику модели
Исследование показало что LLM выделяет, но не почему. Добавь в промпт:
Выделенные части: {цитаты}
Почему релевантно: {1-2 предложения — связь между цитатой и запросом}
В примерах покажи формат. Например:
Выделенные части: "Упаковка очень красивая, можно дарить"
Почему релевантно: Клиент явно упоминает упаковку и оценивает её внешний вид как подарочный. Это прямой ответ на запрос про качество упаковки.
Польза: видишь натяжки в рассуждениях LLM. Если объяснение слабое ("в тексте есть слово 'коробка'") — значит precision низкая, проверь вручную.
🔧 Техника: "двойная проверка" → разные модели для надёжности
Исследование показало: GPT-4.1-mini хуже Llama-3.1-8B, хотя больше. Модели ошибаются по-разному. Схема:
1. Прогони текст через модель А → получишь выделения А
2. Прогони через модель Б → получишь выделения Б
3. Пересечение А ∩ Б → высокая уверенность (обе согласны)
4. Разница А \ Б или Б \ А → сомнительные места (проверь вручную)
Для практики: Llama-3.1-8B (бесплатная на HuggingFace) + GPT-4.1-mini (дешёвая через API). Где согласны — скорее всего правильно. Где расходятся — нужен человек.
🔧 Техника: "негативные примеры" → меньше ложных срабатываний
Проблема из исследования: 70% false positives на нерелевантных документах. LLM видит пару слов и кричит "релевантно!". Решение: добавь в примеры случаи где НЕТ релевантных частей.
###
Пример 3:
Запрос: упаковка товара
Описание запроса: Мне нужны упоминания про упаковку — качество, повреждения, удобство.
Отзыв: Крем отличный, быстро впитывается. Заказывала уже третий раз. Состав натуральный, без парабенов. Рекомендую!
Выделенные части: [НЕТ релевантных частей — упаковка не упоминается]
###
LLM научится не додумывать релевантность из воздуха. Баланс: 50% примеров с выделениями, 50% с пустым результатом.
Ресурсы
Fine Grained Evaluation of LLMs-as-Judges Авторы: Sourav Saha, Mandar Mitra (Indian Statistical Institute, Kolkata, India)
Коллекция INEX (Initiative for the Evaluation of XML Retrieval): https://www.mpi-inf.mpg.de/departments/databases-and-information-systems/software/inex/
Использованные модели: Llama 3.1 8B-Instruct (https://ai.meta.com/blog/meta-llama-3-1/), GPT-4.1-mini (https://platform.openai.com/docs/models/gpt-4.1-mini)
Код исследования (заявлен для публикации): https://anonymous.4open.science/r/llm-eval-2396/
