Валидная информация – не всегда нужная информация.
У вас 1000 единиц информации, прошедших верификацию
Допустим, механическая верификация сработала.
Формат корректен, обязательные поля присутствуют, идентификаторы валидны, типы соответствуют, ссылочная целостность соблюдена – осталось 1000 утверждений.
Все они – валидная информация. Соответствуют спецификации. Нет оснований их отклонять.
Но контекстное окно вмещает только 300.
Какие 300 вы поместите?
Это проблема фильтрации.
Верификация и фильтрация задают разные вопросы
Верификация спрашивает: «Валидна ли эта информация?» Фильтрация спрашивает: «Нужна ли эта информация прямо сейчас?»
Верификация смотрит на свойства самой информации. Корректен ли формат? Присутствуют ли поля? Валидны ли ссылки? Ей безразлично, о чём эта информация и какой цели она послужит.
Фильтрация смотрит на отношение между информацией и ситуацией. Релевантна ли она для данного конкретного вывода прямо сейчас? Можно ли этой информации доверять? Достаточно ли она свежа?
Верификация возможна без контекста. Нужна только спецификация. Фильтрация невозможна без контекста. Нужно знать, «что требуется прямо сейчас».
Верификация детерминирована. Валидно или невалидно. Фильтрация – это суждение. Релевантность имеет степени, достоверность имеет пороги, свежесть зависит от контекста.
Верификация дешёвая. Фильтрация относительно дорогая.
Поэтому верификация идёт первой, а фильтрация – после. Если верификация отфильтрует сначала, фильтрация оценивает меньший набор. Стоимость дорогой оценки снижается.
Три критерия фильтрации
Фильтрация оценивает три вещи.
Релевантность: нужна ли она для данного вывода?
Пользователь спросил об «операционной прибыли Samsung Electronics за Q3 2024».
Среди валидных утверждений, прошедших верификацию:
- Операционная прибыль Samsung Electronics за Q3 2024 составила 9,18 трлн вон.
- Выручка Samsung Electronics за Q3 2024 составила 79 трлн вон.
- Операционная прибыль Samsung Electronics за Q3 2023 составила 2,43 трлн вон.
- План капитальных затрат Samsung Electronics на полупроводники – 53 трлн вон по состоянию на 2025 год.
- Штаб-квартира Samsung Electronics расположена в Сувоне.
Все валидны. Все о Samsung Electronics. Вы поместите все в контекст?
Местоположение штаб-квартиры нерелевантно. План капитальных затрат имеет низкую релевантность. Операционная прибыль за 2023 год может быть полезна для сравнения. Выручка тесно связана с операционной прибылью.
В RAG на естественном языке это суждение делегируется эмбеддинг-сходству. Ранжирование по векторному расстоянию от «операционная прибыль Samsung Electronics». Но, как уже обсуждалось, похожее – не значит релевантное.
В структурированном представлении вводные данные для оценки релевантности другие. На какую сущность указывает утверждение? Samsung Electronics. Какое свойство? Операционная прибыль. Какое время? Q3 2024.
Если сущность, свойство и время существуют как поля, можно точно найти «та же сущность, то же свойство, то же время». И можно намеренно включить или исключить «та же сущность, то же свойство, другое время». Сопоставление полей, а не векторное расстояние.
Релевантность по-прежнему остаётся суждением. Не детерминированным. Но являются ли входными данными для этого суждения векторное расстояние или структурированные поля – разница в точности есть.
Достоверность: можно ли доверять этой информации?
Два утверждения об одном и том же.
- Источник: IR-раскрытие Samsung Electronics. Достоверность: 1.0. «Операционная прибыль за Q3 2024: 9,18 трлн вон.»
- Источник: анонимный блог. Достоверность: 0.3. «Операционная прибыль за Q3 2024: около 10 трлн вон.»
Какое попадёт в контекст?
Очевидно, первое.
Но чтобы это суждение было «очевидным», источник и достоверность должны существовать в читаемой форме.
В чанках на естественном языке источник затерян где-то в тексте или отсутствует. Достоверность никогда не была выражена. Чтобы сравнить два чанка и оценить, какой надёжнее, LLM должен прочитать и порассуждать.
В структурированном представлении источник и достоверность – это поля. «Исключить достоверность ниже 0.5» – одно сравнение. «Включить только первичные источники» – сопоставление полей.
Стоимость фильтрации по достоверности сдвигается от инференса LLM к сравнению полей.
Свежесть: достаточно ли актуальна эта информация?
«Кто является генеральным директором Samsung Electronics?»
- Время: март 2024. «Генеральный директор Samsung Electronics: Кён Кехён.»
- Время: декабрь 2022. «Со-генеральные директора Samsung Electronics: Хан Чонхи, Кён Кехён.»
Оба валидны. Формат корректен, источники присутствуют. Но нужен самый свежий.
В естественном языке время может упоминаться в тексте, а может и нет. Если написано «в прошлом году», нужно ещё посчитать, когда был «прошлый год».
В структурированном представлении время – это поле. Дата в формате ISO 8601. «Включить только самое свежее утверждение» – одна операция сортировки.
Важнее то, что критерий свежести зависит от контекста. Если спрашивают о генеральном директоре, нужна самая свежая запись. Если спрашивают обо всех бывших генеральных директорах, нужны все записи. Если спрашивают о динамике выручки, нужны последние 8 кварталов.
Если время существует как поле, эти условия выражаются запросом. Если время закопано в естественном языке, его приходится извлекать каждый раз.
Почему фильтрация – это не механическая верификация
Здесь есть важное различие.
Из трёх критериев фильтрации – релевантность, достоверность, свежесть – достоверность и свежесть могут быть в значительной мере обработаны механически в структурированном представлении. Сравнение полей, сортировка значений, фильтрация по диапазону.
Тогда почему это называется «фильтрацией», а не «верификацией»?
Верификация смотрит только на свойства самой информации. «Есть ли у этого утверждения поле времени?» Есть или нет. Контекст не нужен.
Фильтрация смотрит на отношение между информацией и ситуацией. «Уместно ли время этого утверждения для данного вопроса?» Чтобы ответить, нужно знать, каков вопрос.
Обе проверки обращаются к одному и тому же полю времени, но верификация проверяет «наличие», а фильтрация оценивает «уместность».
Наличие не требует контекста. Уместность требует контекста.
Это различие объясняет, почему пайплайн разделяет эти два этапа.
Структура затрат на фильтрацию
Фильтрация дороже верификации. Но насколько дорого – зависит от представления.
Фильтрация в пайплайне естественного языка: Оценка релевантности – инференс LLM или вычисление эмбеддинг-сходства. Оценка достоверности – LLM извлекает информацию об источнике из текста и оценивает. Оценка свежести – LLM извлекает временную информацию из текста и сравнивает. Всё – рассуждения. Всё – дорого.
Фильтрация в структурированном представлении: Оценка релевантности – сопоставление полей сущности/свойства + суждение на основе контекста. Оценка достоверности – сравнение поля достоверности. Сопоставление поля источника. Оценка свежести – сортировка поля времени. Сравнение по диапазону. Достоверность и свежесть – операции над полями. Суждения требует только релевантность.
Иными словами, структурирование превращает два из трёх критериев фильтрации в механические операции. Остаётся только релевантность. Даже она сужается от «похож ли этот блоб текста на вопрос» до «релевантно ли это свойство этой сущности к вопросу», делая суждение более чётким.
Общая стоимость фильтрации значительно снижается.
Что происходит без фильтрации
Если провести верификацию, но поместить всё в контекст без фильтрации.
Все 1000 валидных единиц информации попадают внутрь. Из них прямо сейчас нужны только 30.
LLM читает все 1000. Чтение стоит денег. 970 ненужных единиц информации рассеивают внимание. Исследования показывают: чем больше нерелевантной информации в контексте, тем выше вероятность галлюцинаций. Качество рассуждений о 30 действительно важных фрагментах ухудшается.
Окно тоже расходуется впустую. Из пространства, которое занимают 1000 единиц, 970 единиц – потери. Это пространство могло бы содержать другую, более релевантную информацию.
Фильтрация – это управление конечным окном конечным образом. Если верификация отвечает на «имеет ли она право попасть», фильтрация оценивает «есть ли у неё основание попасть».
Право – вопрос формата. Основание – вопрос контекста. Оба необходимы.
Фильтрация – это политика
Ещё один важный момент.
Критерии фильтрации не фиксированы. Они меняются в зависимости от контекста.
Фильтрация для агента медицинских консультаций: Порог достоверности высокий. Исключить достоверность ниже 0.9. Стандарт свежести строгий. Исключить медицинскую информацию старше 3 лет. Исключить источники, не являющиеся рецензируемыми журналами.
Фильтрация для агента повседневного общения: Порог достоверности низкий. Приблизительная информация допустима. Стандарт свежести гибкий. Более старая информация может быть включена в зависимости от контекста. Ограничения на источники нестрогие.
Одна и та же информация проходит в одном агенте и отклоняется в другом. Информация не изменилась. Изменилась политика.
Это означает, что фильтрация – не просто техническая проблема, а проблема проектирования. «Что попадает в контекст» – это тот же вопрос, что и «по каким стандартам мы хотим, чтобы работал этот агент».
В структурированном представлении эта политика выражается декларативно. «confidence >= 0.9, time >= 2022, source_type = peer-reviewed.» Одна строка запроса.
В естественном языке эта политика записывается на естественном языке в промпте. «Пожалуйста, опирайтесь только на достоверную актуальную информацию.» Будет ли LLM следовать этому стабильно – вопрос вероятности.
Итог
Не вся информация, прошедшая верификацию, является нужной. Конечное контекстное окно должно содержать только то, что необходимо для текущего вывода.
Фильтрация оценивает три вещи. Релевантность – нужна ли эта информация для текущего вопроса? Достоверность – можно ли этой информации доверять? Свежесть – достаточно ли актуальна эта информация?
Верификация и фильтрация задают разные вопросы. Верификация спрашивает «валидна ли она?»; фильтрация спрашивает «нужна ли она?». Верификация возможна без контекста; фильтрация требует контекста. Верификация идёт первой; фильтрация – после.
В структурированном представлении два из трёх критериев фильтрации – достоверность и свежесть – преобразуются в операции над полями. Остаётся только релевантность, и даже она становится яснее благодаря структурному сопоставлению полей.
Фильтрация – это политика. Одна и та же информация включается или исключается в зависимости от контекста. В структурированном представлении эта политика объявляется как запрос. В естественном языке эта политика записывается в промпте как пожелание.