Прототип RAG-системы одного разработчика отказывался отвечать на любой запрос с косинусным сходством ниже 0,50. Он работал безупречно — до тех пор, пока не была заменена модель эмбеддингов. После этого защитный механизм начал молча пропускать неверные ответы. Этот инцидент доказывает, что жестко заданный порог сходства может «сломаться» при смене модели — риск, который угрожает любой системе, полагающейся на сходство эмбеддингов для проверок безопасности.

Почему порог имел значение

Конвейеры генерации с дополненной выборкой (RAG) часто используют защитный механизм сходства (similarity guard): если косинусное сходство между запросом и ближайшим документом падает ниже заданного числа, система прерывает генерацию ответа. Этот механизм предотвращает галлюцинации модели, когда извлеченный контекст слишком слаб. В исходной конфигурации порог 0,50 обеспечивал честность системы: на неразрешимые запросы набирались баллы ниже этой линии, а на разрешимые — выше.

Когда изменился бэкенд эмбеддингов, тот же порог 0,50 перестал разделять эти две группы. Конвейер начал выдавать уверенные, но неверные ответы без каких-либо сбоев или явных ошибок. Сбой не был обнаружен стандартными метриками ранжирования и проявился только тогда, когда человек заметил отклонение.

Геометрия не универсальна

Каждая модель эмбеддингов отображает язык в многомерное пространство со своей собственной геометрией. Следовательно, значения косинусного сходства различаются от модели к модели. Оценка 0,50 может находиться на границе четкого разрыва для одной модели и глубоко внутри области пересечения для другой.

  • Voyage-3 — линия 0,50 проходит между низкобалльными неразрешимыми запросами и высокобалльными разрешимыми. Защитный механизм работает как положено.
  • BGE-Small — многие неразрешимые запросы имеют оценку выше 0,50, поэтому защитный механизм никогда не срабатывает. Повышение порога до 0,70 восстанавливает запас прочности.
  • Hashing-64 — оценки для разрешимых и неразрешимых запросов перемешаны настолько плотно, что ни один порог не может их разделить; модель слишком слаба, чтобы поддерживать защитный механизм сходства в принципе.

Эти примеры иллюстрируют более широкую истину: порог привязан к конкретной паре «модель-данные», а не является универсальным правилом.

Скрытая цена константы

Пороги сходства встречаются во многих последующих задачах:

  • семантическое кеширование
  • обнаружение дубликатов
  • проверка релевантности документов
  • сопоставление сущностей

Использование константного значения предполагает, что все модели эмбеддингов имеют одинаковое распределение оценок — это опасное предположение. Когда это предположение не оправдывается, системы начинают молча выдавать ложно-уверенные результаты, подрывая доверие пользователей и снабжая последующие процессы принятия решений недостоверными данными.

Калибровка защитных механизмов для каждой модели

Решение простое: никогда не используйте жестко заданную константу. Относитесь к порогу как к гиперпараметру, который необходимо настраивать для каждой новой модели эмбеддингов.

  1. Соберите небольшой размеченный валидационный набор, включающий как разрешимые, так и неразрешимые запросы.
  2. Вычислите косинусное сходство для каждой пары «запрос-документ», используя целевую модель.
  3. Постройте графики двух распределений или рассчитайте коэффициент ложной уверенности (false-confident rate) — долю неразрешимых запросов, которые превышают выбранный порог.
  4. Выберите наименьшее значение сходства, при котором коэффициент ложной уверенности остается ниже приемлемого уровня риска.

Поскольку цель состоит в том, чтобы предотвратить избыточную уверенность, традиционных метрик ранжирования, таких как средний обратный ранг (MRR), недостаточно. Коэффициент ложной уверенности напрямую измеряет режим отказа защитного механизма.

Контраргумент: «Некоторые модели работают сразу "из коробки"»

Верно, что некоторые хорошо работающие модели, такие как Voyage-3 в примере, случайно совпадают с порогом 0,50. Но это не гарантирует стабильности в будущем. Обновления моделей, тонкая настройка или даже изменения в базовом корпусе текстов могут изменить распределение сходства, снова сломав защитный механизм. Полагаться на одно удачное совпадение — значит проявлять беспечность.

На что обратить внимание в дальнейшем

-

-

-

Итог

Порог сходства — это не универсальный предохранитель, а специфичный для конкретной модели защитный механизм, который необходимо калибровать каждый раз, когда вы меняете бэкенд эмбеддингов или данные, с которыми он работает. Игнорирование этого факта позволяет RAG-системам впадать в состояние «тихой галлюцинации», сводя на нет саму цель использования защитных механизмов. Единственный надежный путь вперед — систематическая калибровка для каждой модели и постоянный мониторинг коэффициента ложной уверенности.