Главная / Статьи

Когда RAG возвращает неверный документ при сходстве 0,89: близость против релевантности.

Почему RAG может извлекать неверный документ при сходстве 0,89: близость не всегда означает релевантность, геометрия вкладок искажается, а гибридный поиск и переранжирование помогают.

Издатель: REACTAPP.TOP10 мин чтения2204 слов

Источники: *What if Your RAG Retrieves the Wrong Document — Even When the Similarity Score Looks Perfect?*

Это типичная картина в технологии генерации с усилением с помощью поиска: фрагменты текста индексируются и встраиваются в модель, пользователь задаёт вопрос, запрос также встраивается, а алгоритм косинусного сходства выбирает лучшие к фрагменты; они включаются в промпт, после чего большая языковая модель отвечает. Лучший фрагмент получил оценку 0,89, что указывает на высокую степень уверенности модели, однако ответ всё равно оказался неверным.

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

В обзоре технологии RAG за август 2026 года, опубликованном в журнале Symmetry, это противоречие называется одним из четырех структурных противоречий в этой области и описывается как геометрическо-семантическое несоответствие. Важно точно понимать, что подразумевается под этим термином. Он не означает, что векторный поиск несовершенен, и это не доказанная теорема о возможностях геометрии. Это способ обозначения ограничения, которое эмпирически наблюдается в самых разных схемах поиска информации.

Краткое описание процесса

Если убрать вспомогательные инструменты, RAG представляет собой два соединенных этапа.

  • Во время индексации документы делятся на фрагменты, каждый фрагмент преобразуется с помощью кодера в плотный вектор, после чего эти векторы сохраняются в индексе, таком как FAISS или HNSW.
  • Во время запроса вопрос также преобразуется с помощью того же кодера, вычисляется степень сходства с каждым вектором фрагмента, выбираются лучшие k результатов, которые затем передаются в LLM в качестве контекста.

Одно основополагающее предположение поддерживает всю эту концепцию: расстояние в векторном пространстве отражает семантическую релевантность в языке. Тексты с похожим значением должны находиться рядом друг с другом, а тексты с разными значениями — далеко друг от друга.

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

Похожесть — не релевантность

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

Это наблюдение известно уже давно. В статье 2020 года, в которой был представлен метод DPR, приводятся показательные цифры: алгоритм с плотным двойным кодировщиком достиг точности 78,4 процента среди лучших 20 результатов в задачах Natural Questions, но снизился до 63,2 процента в задачах SQuAD, где алгоритм BM25 показал результат 68,8 процента. Авторы объяснили это смещением в распределении данных при обучении: вопросы SQuAD содержат чрезмерно много общих слов с ответными отрывками, и лексический сопоставитель лучше справляется с такой структурой, чем плотный кодировщик, обученный на более широком наборе данных.

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

Где меняется геометрия

На более глубоком уровне лежит сама геометрическая проблема. Механизмы интенсивного поиска преобразуют текст в непрерывное векторное пространство, почти всегда евклидово, поскольку для расчётов скалярного произведения и косинусного сходства требуется именно оно. Евклидово пространство хорошо позволяет определять сходство двух объектов в некоторых измерениях, но плохо справляется с как минимум тремя закономерностями, постоянно встречающимися в реальном тексте.

  • Иерархия. Собака — это млекопитающее, а млекопитающее — животное. В плоском векторном пространстве отсутствует встроенное понятие включения «является частью», и при аппроксимации дерева с использованием расстояний по прямой искажения усиливаются по мере углубления иерархии.
  • Синонимия против косвенной синонимии. Понятия «дешёвый» и «недорогой» должны находиться рядом друг с другом. Однако «дешёвый» и «плохо сделанный» по сути не должны находиться рядом, тем не менее они так часто встречаются в учебных текстах, что их векторы могут быть размещены ближе, чем это оправдано самим значением.
  • Время. Генеральный директор компании — это разный человек в зависимости от того, когда было написано предложение. У статического вклада нет оси для отражения фактов, срок действия которых истек, если только что-то выше по цепочке не кодирует их.

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

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

Пример с документацией

Представьте набор документации к продукту и вопрос: как сбросить свой API-ключ?

Ретривер возвращает фрагмент под названием «Как сбросить пароль учётной записи» с коэффициентом сходства косинуса 0,87. Это высокий показатель, поскольку операции сброса, API-ключ и пароль находятся в одной области, связанной с аутентификацией и управлением учётными записями. Фрагмент, посвящённый обновлению API-ключей, находится в другом разделе, формулировки в нём менее общие, и коэффициент сходства составляет 0,81.

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

Тот же принцип применим к условиям контракта, отличающимся всего лишь одним отрицанием, к инструкциям по применению, различающимся в зависимости от подгруппы пациентов, и к финансовым условиям, меняющимся с изменением финансового года. В каждом случае близость векторов отражает наличие общей темы, но ничего не говорит о том, соответствует ли ответ.

Система поиска ранжирует кандидатов, но не выносит вердикта

Многие инструменты типа RAG предполагают, что результат с высшим рангом — будь то первый или k-й — и есть ответ на вопрос о местоположении информации. Лучше рассматривать его как кандидата, который ещё должен заслужить место в запросе.

Поисковик, возвращающий страницу с паролем при запросе о ключе API, не обязательно совершил ошибку в своей работе. Строго говоря, его задача — дешёвый первичный этап: сократить огромный набор кандидатов до небольшого числа вероятных вариантов. Слабым местом является такая архитектура, которая считает первый результат истинным и не проверяет его дальше. Цепочка обработки не обязательно должна состоять из этапов запроса, поисковика, отбора топ-1 кандидатов и использования LLM. Она может включать запрос, затем дешёвый поисковик с высоким уровнем воспроизведения результатов, затем набор кандидатов, затем более медленный, но более точный инструмент для переотбора, затем лучший кандидат и, наконец, LLM.

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

Почему это важно для практического применения

Это не просто академическая концепция. Разница между близостью и релевантностью приводит к конкретным и дорогостоящим сбоям.

  • Беззвучное усиление галлюцинаций. ГЛМ не может определить, что тот или иной фрагмент текста связан с темой, но содержит ошибки. Он формирует плавный, уверенный ответ на основе неверного источника, и такой уверенный, но неверный ответ гораздо хуже, чем признание отсутствия знаний, практически для любых последующих задач.
  • Снижение точности при работе с иерархическими корпусами данных. Как примеры из практики, так и литература показывают, что чем глубже и структурированнее база знаний — с вложенными правилами, версионированными спецификациями или организационными схемами — тем труднее становится использование векторного поиска. В обзоре предлагается формальный метод диагностики, позволяющий оценить, как снижается точность по мере увеличения глубины иерархии. Этот показатель рассматривается как полезный инструмент, а не как фиксированная кривая, причем его лучше измерять на конкретном корпусе данных, чем исходя из предположений.
  • Невидим в наборе для оценки до тех пор, пока это не приведёт к финансовым потерям. Стандартные критерии оценки, такие как recall@k для обычных пар вопросов, не учитывают иерархические или почти синонимические различия так, как это делают реальные корпуса данных. Сначала проходит внутренний тест, а затем на третьей неделе работы появляется версия задачи с паролем и API-ключом.
  • Меры снижения рисков

    Всё это не означает, что метод глубокого поиска несовместим. Это означает, что использование одного механизма поиска недостаточно для реальных корпусов данных. Эти меры снижения рисков перечислены примерно в порядке степени необходимости изменений в архитектуре.

    Гибридный поиск: лексический плюс глубокий. Запускайте BM25 и глубокий поиск параллельно и объединяйте их результаты, например, с использованием метода взаимного рангинга — распространённого и простого подхода. Это напрямую устраняет проблему, связанную с лексическим совпадением, не затрагивая при этом модель вкладок.

    # Minimal hybrid retrieval sketch: dense + BM25 fused via RRF
    from rank_bm25 import BM25Okapi
    import numpy as np
    
    def reciprocal_rank_fusion(dense_ranked_ids, bm25_ranked_ids, k=60):
        scores = {}
        for rank, doc_id in enumerate(dense_ranked_ids):
            scores[doc_id] = scores.get(doc_id, 0) + 1 / (k + rank + 1)
        for rank, doc_id in enumerate(bm25_ranked_ids):
            scores[doc_id] = scores.get(doc_id, 0) + 1 / (k + rank + 1)
        return sorted(scores.items(), key=lambda x: -x[1])# dense_ranked_ids  = [doc_id, ...] from your vector store's top-k search
    # bm25_ranked_ids   = [doc_id, ...] from bm25.get_top_n(query_tokens, doc_ids, n=k)
    fused = reciprocal_rank_fusion(dense_ranked_ids, bm25_ranked_ids)
    

    Переранжирование с использованием кросс-энкодера. Используйте плотный поиск для быстрого получения списка из 50–100 кандидатов с высоким уровнем воспроизведения, затем переранжируйте их с помощью кросс-энкодера, который учитывает одновременно запрос и документ. Этот метод стоит дороже за пару элементов, но гораздо эффективнее в случаях, когда элементы близки по тематике, но содержат фактические ошибки, поскольку он не зависит от единственного фиксированного вектора для каждого текста.

    Переписывание или разбиение запроса. Одним из примеров является RQ-RAG: система обучается переформулировать нечеткие или многокомпонентные запросы перед началом поиска. Это помогает, когда несоответствие возникает из-за недостаточно четко сформулированного запроса, а не из-за сложной структуры данных в корпусе.

    Поиск с учётом структуры в стиле GraphRAG. Для по-настоящему иерархических или связных данных, таких как организационные схемы, зависимости между предложениями или таксономии продуктов, необходимо явно представлять эту структуру в виде графа, вместо того чтобы принуждать её вписываться в плоское пространство. Теперь не приходится бороться с геометрией — её просто избегают.

    Эмбеддинги, настроенные под конкретную область. Для улучшения качества кодера используются сложные отрицательные примеры, взятые из собственного корпуса данных организации, то есть пары почти синонимов, близких по значению, но неподходящих в качестве ответов. Результаты показывают значительное сокращение разницы в качестве ответов, хотя и не её полное устранение.

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

    Более общий исследовательский вопрос

    Если разные геометрии хорошо отражают разные аспекты, то логичным следующим вопросом становится возможность адаптации формы пространства представления к запросу или корпусу данных без заранее установленных ограничений.

    В обзоре Symmetry делается упор именно на это, рассматривая его как нарушение симметрии: выбор евклидовой, гиперболической или смешанной метрики означает выбор той семантической симметрии, от которой придется отказаться. Предлагаемым направлением является гибкое обучение геометрического пространства, при котором система корректирует свою метрическую структуру в соответствии с отношениями, кодируемыми в каждой точке корпуса, не фиксируясь на одной глобальной геометрии для всего индекса. Это направление было предложено в одной из обзорных статей, а не является готовой техникой с проверенными показателями эффективности. Это гипотеза, заслуживающая внимания, но не основа для дальнейших разработок в настоящее время.

    То, что действительно меняется полезным образом, — это формулировка вопроса. Вместо того чтобы спрашивать, какая модель встраивания лучше всего подходит, вопрос становится таким: какую форму на самом деле имеют семантические связи в данных, и существует ли у архитектуры поиска механизм для представления этой формы.

    Что взять с собой

    В реальных условиях высокое сходство по коэффициенту косинуса и корректный поиск обычно настолько тесно связаны, что разница остается незаметной. Усилия по проектированию следует сосредоточить на случаях, когда эти показатели незаметно отклоняются друг от друга, при этом векторы находятся рядом из-за общей темы, а не общего ответа.

    Лучшая модель эмбеддингов эту проблему не решит, как и ни одна отдельная архитектура. Плоское геометрическое пространство, независимо от выбора, содержит скрытую предпосылку о том, какие связи в корпусе наиболее важны, и именно поэтому существуют гибридные методы поиска, переранжирования и индексации с учетом структуры: никто не может сделать такую ставку без осторожности. Модели эмбеддингов не плохи. От геометрического пространства требовали выполнения задач семантического рассуждения, для которых оно никогда полностью не создавалось, и оно справляется впечатляюще до того момента, когда уже не может справиться.