Структурный чанкинг для RAG в юриспруденции
RAG-системы перед ответом языковой модели находят в корпусе подходящие фрагменты текста, и в правовых документах узким местом оказывается этот поиск: обычное разбиение на фрагменты фиксированной длины режет статьи посередине, отрывает пункт от статьи, к которой он относится, и теряет ссылки вида «с учетом статьи 167». Авторы проверяют, насколько качество поиска зависит от способа разбиения. Наборов пять: уголовно-процессуальный (CrPC, 1973) и гражданский процессуальный (CPC, 1908) кодексы Индии и GDPR, по 501 вопросу к каждому; 776 вопросов бенчмарка LegalBench-RAG по договорам; 3730 вопросов NitiBench-CCL по 36 тайским финансовым законам. Вопросы к кодексам Индии и GDPR авторы составили сами с помощью LLM и проверили вручную, два последних набора размечены независимо от них.
StrucChunk разбирает документ как иерархию: часть, глава, статья, пункт. Статья остается одним фрагментом, если она не длиннее полутора лимитов (лимит 512 токенов), иначе делится по границам предложений. В начало каждого фрагмента ставится путь вида [CrPC 1973 > Chapter XII > Section 167], а если статья ссылается на другие, к ней дописывается краткое содержание до трех из них, по 200 символов. Поиск объединяет ранжирование BM25 по ключевым словам и плотные эмбеддинги BGE-M3 методом Reciprocal Rank Fusion. Базовый вариант - рекурсивное разбиение по 512 токенов с теми же поисковыми моделями, в тайском наборе - готовые фрагменты NitiBench по 553 символа и по разделам. Отдельный эксперимент 2×2 разводит вклад разбиения и способа поиска.
По УПК Индии Recall@5 растет с 0,557 до 0,804, а доля вопросов, где нужная статья стоит первой, - с 0,214 до 0,627; по ГПК - с 0,158 до 0,259, абсолютный уровень остается низким. Разбиение дает 88% и 73% общего прироста, способ поиска - остальное. На LegalBench-RAG полнота по символам при восьми результатах 48,18% против 23,59% у базового варианта с той же моделью и 26,30% в исходной статье бенчмарка; точность первого результата ниже (4,51% против 6,64%), потому что фрагмент-статья длиннее размеченного ответа. На GDPR лучший результат дает StrucChunk без BM25 (Recall@5 0,908): поиск по ключевым словам подтягивает пункты преамбулы, которые ссылаются на нужную статью. Тайский набор показывает источник эффекта: переход от фрагментов по 553 символа к разбиению по разделам поднимает HR@5 с 0,594 до 0,861, у StrucChunk 0,856, то есть путь в структуре и пересказ ссылок добавляют 2,3% только на вопросах со ссылками.
Авторы измеряют только поиск, качество ответов не проверялось; по данным NitiBench разбиение по разделам почти не меняет итоговую F1 ответов (0,739 против 0,722). Вопросы к трем наборам составил и разметил один человек, а в разделе о проверке разметки доля совпадений со вторым юристом не заполнена, в тексте стоит «X/100». Ссылки распознаются регулярными выражениями и неявные пропускаются, в ГПК Индии часть статей теряется из-за неровной верстки PDF. Для систем, которые ищут нормы в кодексах, вывод практический: разбиение по статьям с сохранением их места в структуре кодекса дает больше, чем смена поисковой модели. На судебных решениях и других текстах без нумерованной структуры авторы ожидают меньший эффект, но не проверяли его.
Работа: StrucChunk: Structure-Aware Retrieval for Legal Document RAG. Surya Deep Singh, Ashutosh Tripathi, Gaurav Deep Singh