Rise of RAG: от плоских векторов к темпоральным графам

Rise of RAG: от плоских векторов к темпоральным графам

Ekaterina Yakunenko, канал @delay_RAG

Что вы знаете о Бразилии? Что бы вы о Бразилии ни знали ранее, сегодня вы узнаете, что в бразильском Сенате работают юристы-гигаумники, которые куют своими руками будущее права

Хоть подзаголовок получился пафосным и кликбейтным, но, думаю, дальше он оправдает себя. Но начнём немного издалека. Работая над базой знаний для своего бота «А юристы смотрели?», я увидела, что семантический поиск в базе однородных эмбеддингов по косинусному сходству очень неплох для задачи, которую решает бот, но даже в её рамках имеет много ограничений. Работы по предварительной оптимизации или разметке текстов с выжимкой сути и прямыми цитатами недостаточно, и поэтому есть различные техники улучшения результатов поиска. Например, я в качестве «костыля» в боте ставлю задачу нейросети критично относиться к тому, что в RAGе нашлось, и просто ничего не цитировать, если чего-то релевантного в выдаче не было.

Глядя на это, я осторожно думала, что базы, состоящие из огромного количества сырых необработанных текстов (иногда можно встретить утверждения о миллионах текстов) — это если и не свалка текстов, то не самый оптимальный путь. Так дизайнить базы знаний не то чтобы нельзя… можно, но это не застрахует от ошибок другого типа и не повысит точность драматически. А ещё просто замусорит контекстное окно и принесёт пугающий счёт за токены.

Flat RAG и его ограничения

Меньше недели назад междисциплинарная команда исследователей из нескольких европейских университетов написала статью, дав название критической проблеме RAGов, собранных, как это называют некоторые авторы, «наивно», из «плоских» (flat) эмбеддингов (расположенных в одной плоскости по отношению друг к другу). Я пока не буду писать это название, так как совсем скоро сделаю обзор статьи сама, но одно из её проявлений в том, что «наивные» RAG-базы не учитывают иерархичность источников — ни внутри источника, ни в соотношении между несколькими. Flat RAG не в состоянии «увидеть» большую картину и «планы» этой картины. 

К чему это может приводить: 

  • Потеря контекста при работе с нормативными источниками. Система может перепутать, является ли найденный фрагмент основной нормой, исключением из нее или уточнением. Применительно к контрактам это тоже может произойти: мы часто драфтим похожими словами разные пункты в разных частях контракта или сложно структурированной сделки, и это может привести к семантической омонимии: система видит похожие векторы, но может не уловить кардинально разный контекст, который определяется структурой договора или сделки. 
  • Некорректные ответы на запросы разной «гранулярности» (степени детализации). Пользователю может понадобиться как краткая выдержка из конкретного пункта, так и обзор целой главы. Flat-метод не имеет механизма для выбора нужного уровня детализации и может выдать либо слишком много мелких, не связанных фрагментов, либо один слишком общий.
  • Отслеживание изменений во времени в принципе невозможно. Даже если в плоской базе знаний будут разные версии закона, с какой вероятностью он вернет нужные? Ведь векторные представления немного разных версий одного и того же будут максимально близки друг к другу по сравнению с остальными чанками. 
  • Низкое качество операций, требующих верхнеуровневого обобщения (sensemaking). Flat-метод хорошо ищет конкретные факты, но не очень помогает с запросами, требующими синтеза информации со всего корпуса документов.

Здесь и появляются бразильские законодатели. В Сенате Бразилии работают прорывные люди (стоит отметить, что они с 2009 года взялись и поддерживают проект LexML Brasil, представляющий всевозможную юридическую информацию в стандартизированном XML-виде). Менее года назад г-н João Alberto de Oliveira Lima опубликовал статью Unlocking Legal Knowledge with Multi-Layered Embedding-Based Retrieval, в которой представил многоуровневый подход к подготовке эмбеддингов и извлечению информации (под «извлечением» далее буду подразумевать «retrieval»).

Multi-Layered Embedding-Based Retrieval (далее — MLR)

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

Технически это реализовано так:

I - Каждый структурный элемент = самостоятельный чанк. Вместо простого разделения текста на куски по количеству токенов, документ разбирается в соответствии с его формальной структурой (разделы, главы, статьи, пункты, подпункты).

Сегмент иерархического представления Конституции Бразилии. Источник: https://arxiv.org/html/2411.07739v1

II - Для каждого выделенного структурного элемента создается свой эмбеддинг. Таким образом, в базе знаний хранятся эмбеддинги для:

  • всего документа (Document Level);
  • крупных разделов (Basic Unit Hierarchy Level, например, главы);
  • основных единиц (Basic Unit Level, например, статьи);
  • частей статей (Basic Unit Component Level, например, абзацы);
  • перечислений (Enumeration Level, например, пункты и подпункты).

III - Контекстное обогащение. При создании эмбеддинга для дочернего элемента (подпункта) его текст объединяется с текстом родительского элемента (пункта/статьи), чтобы сохранить семантический контекст.

IV - На этапе извлечения релевантные фрагменты выбираются на основе того же самого косинусного сходства, но применяется фильтрация по:

  • лимиту токенов (например, базовое ограничение — 2500 токенов);
  • проценту отклонения сходства (выше некой пороговой границы, например 25% от максимального);
  • уникальности охваченной части документа (не исключается вложенность: если найден параграф, подчинённые ему элементы не дублируются).

После отбора минимум 7 сегментов процесс продолжается до превышения лимита токенов или падения сходства ниже порога.

Таким образом, выдаётся оптимальный, осмысленный массив релевантных фрагментов для генерации ответа большой языковой моделью. Этот подход напрямую призван решать проблемы с невосприятием плоскими RAGами иерархий и гранулярности. И это не голословное утверждение, г-н Lima всё посчитал (а ещё привёл примеры в приложении к статье на ваш суд). Итак, метрики:

  • MLR позволяет извлекать больше релевантных (essential) чанков (≈37.86% от всех выбранных, тогда как flat-метод – ≈16.39%). 
  • MLR снижает долю «шумных» (unnecessary) чанков — ≈58.25% (flat-метод — ≈75.41%). Это уменьшает объем ненужной информации в выдаче и делает контекст для LLM более чистым.
  • MLR даёт около 3.88% дополнительных (complementary) чанков, flat-метод — 8.20%. Это говорит о большей точности границ релевантности. 
  • Сравнения максимального и минимального косинусного сходства показывают, что MLR даёт более узкий диапазон и более высокую семантическую согласованность извлечённых чанков по отношению к запросу.
  • Сравнения по количеству токенов и чанков показывает, что при использовании MLR итоговое количество токенов выданного контекста часто меньше, а релевантные сегменты покрыты более полно.
  • При генерации нейросетью ответов с применением MLR выявляется больше специфичных пунктов нормативного акта, важных для ответа, чем при flat-методе, особенно при сложных или многоаспектных вопросах.

Метод очень интересный, по всей видимости, рабочий. Но всё-таки MLR работает с иерархиями, вертикальными связями зависимостей. А связи сущностей могут быть не только иерархическими, они могут быть самыми разными, сколько угодно сложными: горизонтальными, опосредованными, скрытыми. А связи между сущностями отлично изображаются такой математической абстракцией, как граф. 

GraphRAG

Граф — это что-то вроде карты, где все сущности и объекты (люди, компании, понятия и концепции) являются точками (вершинами), а их взаимосвязи («у кого с кем какой договор», «какие понятия используются в этой концепции») — ребрами, линиями, соединяющими эти вершины. Всем понятный классический пример графа — социальная сеть, где пользователи являются вершинами, а их подписка друг на друга в соц.сети — ребром, показывающим связь между пользователями. 

Социальный граф. Источник: https://en.wikipedia.org/wiki/File:Sna_large.png

Кажется, что RAG и граф были созданы друг для друга и ждали встречи. В феврале этого года команда из Microsoft представила статью From Local to Global: A GraphRAG Approach to Query-Focused Summarization, в которой рассказала о графовых RAG (GraphRAG), представляя их как архитектурный сдвиг от локального поиска к глобальному и всестороннему осмыслению (sensemaking) больших массивов текста. 

Технически и этапно это устроено так:

I - Построение графа. LLM обрабатывает все чанки и извлекает из них сущности (entities) и их взаимосвязи (relationships), формируя граф.

II - Обнаружение сообществ (communities). Граф разбивается на кластеры (сообщества) тесно связанных вершин, для каждого сообщества LLM создает саммари-отчёт, описывающий его содержание, ключевые сущности и связи. Эти отчеты «наслаиваются» по возрастанию уровня сообщества в иерархии.

III - Когда поступает запрос, система находит релевантные саммари сообществ и передает эти саммари в LLM, которая синтезирует из них финальный, обобщенный ответ.

Графовый RAG превосходит векторный RAG в задачах, требующих обобщения и синтеза, понимания взаимосвязей и высокоуровневого анализа, то есть система может предоставить «вид с высоты птичьего полета» на весь набор данных. Кроме того, графовые RAGи ОЧЕНЬ экономят токены — до 97–98% (например, для новостного корпуса — 39,770 против 1,707,694 токенов). Вместо того чтобы загружать в контекст модели большие объемы сырого текста, семантически схожего с запросом, GraphRAG использует компактные, заранее сгенерированные отчёты (вместо сотен и тысяч чанков — десятки), и это значительно сокращает количество токенов, необходимых для формирования контекста.

Может ли быть ещё круче? Как ещё можно углубить и улучшить RAG-систему? Нам, юристам? Кто этим будет заниматься? Конечно, исследователи из Сената Бразилии! 

Structure-Aware Temporal Graph RAG (далее — SAT-Graph)

Чуть более месяца назад, 11 сентября г-н Hudson de Martim опубликовал статью An Ontology-Driven Graph RAG for Legal Norms: A Structural, Temporal, and Deterministic Approach, в которой представляет структурно-темпоральный подход к созданию графовых RAG (Structure-Aware Temporal GraphRAG). Главное отличие от просто графового RAG в том, что в структуре RAG добавляется временное изменение. Это делает возможным детерминированное извлечение на конкретный момент во времени (Point-in-Time Retrieval), то есть система может безошибочно ответить, как выглядел закон в любую заданную дату в прошлом, а также может отследить всю цепочку законодательных изменений, которые повлияли на конкретную норму.

Практиковали опять же на Бразильской Конституции: 

I - Структура нормативного акта как основа графа (Structure-Aware компонент). Вместо извлечения семантических сущностей, как в GraphRAG, вершинами графа стали сами структурные элементы конституции (главы, статьи, пункты). В сущности это рассмотренный выше MLR-подход (дерево, которое получается в рамках MLR-подхода, это разновидность графа).

Представление иерархии в графе: норма (зеленый круг, Конституция Бразилии (1988)) содержит компоненты, расположенные иерархически (синие круги: Раздел II, Глава II, Статья 6). Каждый компонент имеет датированные временные версии (темно-серые круги, temporal version, в данном случае в редакции 1988 г.). Каждая временная версия имеет языковые версии (светло-серые круги, language version на португальском языке). Непосредственные текстовые фрагменты-чанки связаны с соответствующими temporal versions (прямоугольники). Источник: https://arxiv.org/html/2505.00039v5

II - Темпоральное моделирование графа (Temporal компонент). Каждая поправка к Конституции не перезаписывает соответствующую вершину графа, а создает для них новые временные версии. Сами законодательные акты, которыми вносятся изменения в Конституцию, также моделируются как самостоятельные вершины определенного типа. Эти вершины связывают старую версию статьи (которую они отменяют) и новую версию (которую они создают).

Новые temporal versions компонента «tit2» (Раздел II) формируются на основе новых temporal version некоторых дочерних элементов (глав. Здесь, например, tit2_cap4 в редакции 1993 г.). Для неизменённых дочерних компонентов их последние temporal versions переиспользуются (например, temporal versions главы 2 раздела II "tit2_cap2" от 1988-10-05 агрегируется в темпоральную версию раздела II от 1993 года. Агрегация показана стрелками). Источник: https://arxiv.org/html/2505.00039v5

Автор считает, что такой онтологически- и темпорально-ориентированный подход значительно превосходит другие RAG-системы в юридической сфере по следующим ключевым аспектам:

  • Извлечение становится детерминированным и проверяемым. Только такой подход позволяет гарантированно получить текст нормы в состоянии, действовавшем в определённую дату. Flat RAG на однородных чанках могут некорректно отвечать на вопросы о том, как норма была сформулирована в 1999 году, выдавая анахронистичные или ошибочные результаты. 
  • Благодаря использованию формальной, иерархической структуры закона (разделы, статьи и т. д.), система поддерживает сложные запросы по структуре, например, поиск всех изменений в конкретной главе или анализ влияния поправок по вершинам и дочерним элементам. Для «обычных» GraphRAG граф строится только на сущностях, теряя ключевые юридические зависимости, так как позиция нормы определяет её смысл и применимость. Здесь не могу полностью согласиться, так как графовый RAG по дизайну технологии никак не ограничивает пользователя в том, что брать за сущности/вершины.
  • SAT-Graph RAG умеет показывать причинно-следственные взаимосвязи, а flat RAG не обеспечивают прозрачного и воспроизводимого анализа происхождения изменений. 
  • Появляется возможность поиска одновременно по многим параметрам (по сути, структуре и основаниям нормы), так как в дополнение к чанку в индекс попадают специально сгенерированные текстовые юниты для метаданных, тематических категорий и событий-поправок.
  • Графовая структура легко масштабируется для множественных языков, сложных правовых сценариев, аналитики по всему массиву норм. Традиционные подходы требуют ручного преобразования и не поддерживают плавного расширения. 

Выводы и прогнозы

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

Семантические векторы в плоском RAGе —> структурная иерархия векторов в MLR —> более широкий перечень концептуальных взаимосвязей в графовом RAG —> темпоральное измерение в SAT-Graph RAG. Изображение создано с помощью нейросети Nano Banana

И мой главный инсайт из всего этого: ключевые принципы вырисовывающейся методологии построения RAG-систем в юридическом домене:

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

Примеры возможных областей применения разных вариантов реализации технологии: 

  • Плоский RAG — для задач типа моего бота: поиск похожих кейсов, шаблонов или прошлых консультаций, где достаточно найти семантически близкий документ.
  • Многоуровневый RAG — для точного анализа структурированных документов, таких как договоры, сложно структурированные сделки или нормативные акты.
  • Графовый RAG — для обнаружения неочевидных связей в больших и разнородных массивах данных: исследования, расследования, due diligence, управление холдингами.
  • Структурно-темпоральный граф — для задач, где имеет значение временное измерение или, например, работа с информацией на разных языках: законотворчество, научные исследования эволюции концептов, аудит, банкротные дела, инвестиционный и международный коммерческий арбитраж.

В связи с этим у меня есть несколько гипотез о будущем — приглашаю к дискуссии:

  1. RAG — очень многообещающая технология, способная преодолеть некоторые имманентные ограничения нейросетей и существенно повысить точность ответов. Точность ответов принципиально важна для юридических задач, галлюцинации — это основная причина массового презрения юристов к LLM. Flat RAG хороши для простых задач (по типу моего бота), но для более сложных, требующих более высокоуровневого анализа — недостаточны.
  2. Варианты улучшения технологий развиваются просто стремительно, даже в нашем консервативном домене. Я узнала о том, что вообще есть такая технология в июне, в июле реализовала свой flat RAG, тогда как ещё в прошлом ноябре в Бразилии экспериментировали с иерархическим, а уже в этом сентябре освоили появившийся в феврале графовый и дополнили его темпоральным измерением. И это, разумеется, не единственные проекты и не единственные методы — всего неделю назад вышла ещё одна очень интересная статья о преодолении ограничений технологии.
  3. Думаю, что в юридическом домене за этим будущее. Нам нужны RAG на корпоративном, правоприменительном, законодательном и академическом уровнях. Возможно, что кафедры юридических университетов займутся созданием RAGов по отраслям права, государство — по НПА, компании будут делать свои локальные-кастомные под свои задачи, стартапы будут предлагать методики, услуги по дизайну кастомных баз и пакетные решения. Будут библиотеки баз знаний, и, справочно-правовые системы, дорогие, это ваш шанс остаться в будущем!
  4. В чате Нейросети | ilovedocs (@docsllm) как-то случилась дискуссия о необходимости единого метода перевода юридической информации в графы, и как классно было бы соединить всю нормативку в граф, чтобы машины помогали нам регулировать общественные отношения. Я была на позиции, что это утопично и не очень нужно. Сейчас я скорректировала позицию: графы — это отличный и нужный метод под определенный класс задач. Но не единственный, и этим многообразием методов мы всё-таки придём к тому, чтобы переводить юридическое знание в машиночитаемый вид.
  5. Это всё, конечно, приближает нас к замене нас как профессионалов нейросетями: они так и упрашивают нас передать им наши знания в более легкоусваиваемой для них форме! Но вообще эта онтологическая (?) деятельность — очень интересная, и пробуждает в людях, стремящихся наводить во всём порядок, очень много энергии :) 


Report Page