3,583 papers
arXiv:2608.24218 75 25 авг. 2026 г. FREE

CGM (Constraint-Guided Mapping): сначала жёсткий фильтр по числам и кодам, потом смысловой выбор LLM

КЛЮЧЕВАЯ СУТЬ
0.34 против 0.75 — правильный кандидат был самым непохожим по тексту, а неправильный самым похожим. LLM без проверки выбрала бы не тот товар. Метод CGM позволяет находить точное соответствие записей в разных базах данных, даже когда правильный вариант текстово не совпадает с запросом. Работает так: сначала жёсткий фильтр отсекает кандидатов по числам, кодам и диапазонам, и LLM просто не видит неверные варианты — модель выбирает по смыслу только из того, что прошло проверку, а точность выросла с 0.08 до 0.66.
Адаптировать под запрос

TL;DR

CGM — метод сопоставления похожих записей между разными базами данных (например, найти какой товар из каталога поставщика соответствует товару в вашем каталоге). Работает в два шага: сначала отбрасывает кандидатов, которые не проходят жёсткую проверку по формальным признакам (код, единица измерения, диапазон значений), и только среди уцелевших LLM выбирает нужный по смыслу.

LLM при сопоставлении данных легко путается: она цепляется за текстовое сходство и игнорирует то, что "1000 см³" и "1.0 л" — это одно и то же, а даты и диапазоны не совпадают. В тестовом примере из статьи правильный вариант был текстово самым непохожим кандидатом (сходство 0.34 против 0.75 у неправильного) — модель без проверки чисел выбрала бы неверный товар. Без фильтра точность сопоставления (F1) была 0.08 — почти случайный результат.

Добавление одного простого шага — жёсткого отсева по формальным правилам перед тем, как LLM начнёт думать о смысле — подняло точность до 0.66. Если жёсткий фильтр отсеял всех кандидатов подряд (слишком строгие правила), правила ослабляются по одному, начиная с наименее важного, пока не останется хотя бы один вариант.

🔬

Схема метода

ШАГ 1: Задать жёсткие правила (код, единица измерения, диапазон) 
        → список допустимых кандидатов (может быть пуст)

ШАГ 2: Если список пуст — ослабить правила по одному, 
        начиная с наименее важного
        → непустой список кандидатов

ШАГ 3: LLM выбирает лучший вариант ТОЛЬКО из этого списка 
        (смысловое сопоставление, без права выйти за границы списка)
        → финальный ответ + объяснение, какое правило сработало/ослаблено

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

🚀

Пример применения

Задача: Магазин автозапчастей сводит свой прайс-лист с прайсом нового поставщика. У поставщика объём двигателя указан в литрах, у вас — в см³, коды деталей записаны по-разному, названия моделей местами сокращены.

Промпт:

Ты сопоставляешь товар из нашего каталога с кандидатами из каталога поставщика.

НАШ ТОВАР:
Fiat Panda 141, объём двигателя 1000 см³, годы выпуска 1991–1996, 
внутренний код FP141-C

КАНДИДАТЫ У ПОСТАВЩИКА:
1. Fiat Panda 145, объём 1.1 л, дата выпуска 15.03.1994, код FP145-D
2. Fiat Panda 141, объём 1.0 л, дата выпуска 20.08.1993, код FP141-C
3. Fiat Panda 141, объём 1.3 л, дата выпуска 10.01.1995, код FP141-C

ШАГ 1 — ЖЁСТКИЙ ФИЛЬТР:
Проверь каждого кандидата по правилам:
- код детали должен совпадать буквально
- объём двигателя (переведи литры в см³, умножив на 1000) должен совпадать 
  с точностью до 50 см³
- дата выпуска должна попадать в диапазон 1991–1996

Выведи таблицу: кандидат | прошёл фильтр (да/нет) | причина отсева.
Если после фильтра список пуст — ослабь ОДНО, наименее важное правило 
(в порядке: дата → объём → код) и повтори.

ШАГ 2 — ВЫБОР:
Из тех, кто прошёл фильтр, выбери один наиболее подходящий вариант. 
Объясни выбор.

Результат: Модель сначала покажет таблицу с разбором каждого кандидата — почему первый и третий отсеяны (не совпал объём или код), и только второй прошёл проверку. Затем даст финальный выбор — кандидат №2 — с коротким объяснением. Если бы фильтра не было, модель могла ошибочно выбрать кандидата с более похожим названием или датой, но неверным кодом.

🧠

Почему это работает

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

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

Рычаги управления: - Какие правила считать жёсткими, а какие — мягкими. Жёсткое правило (единица измерения, код) отсекает кандидата навсегда. Мягкое (похожесть названия модели) — просто добавляет вес при финальном выборе. Если сомневаетесь — начните с малого числа жёстких правил и расширяйте. - Порядок ослабления правил. Если фильтр слишком строгий и ничего не проходит — решите заранее, какое правило ослаблять первым (обычно наименее значимое — дата, а не код). - Приоритетная подсказка эксперта. Добавьте фразу вроде "сначала сверяй код, потом объём, в последнюю очередь дату" — это ускоряет и стабилизирует финальный выбор без изменения логики фильтра.

📋

Шаблон промпта

Ты сопоставляешь запись из источника A с кандидатами из источника B.

ЗАПИСЬ ИЗ ИСТОЧНИКА A:
{данные_записи}

КАНДИДАТЫ ИЗ ИСТОЧНИКА B:
{список_кандидатов}

ШАГ 1 — ЖЁСТКИЙ ФИЛЬТР:
Проверь каждого кандидата по правилам (в порядке важности):
1. {жёсткое_правило_1, например: код должен совпадать буквально}
2. {жёсткое_правило_2, например: значение X должно совпадать с точностью Y}
3. {жёсткое_правило_3, например: дата должна попадать в диапазон Z}

Выведи таблицу: кандидат | прошёл (да/нет) | причина отсева.
Если список пуст — ослабь ОДНО правило, начиная с наименее важного 
({порядок_ослабления}), и повтори проверку.

ШАГ 2 — ВЫБОР:
Из прошедших фильтр выбери наиболее подходящий вариант по смыслу.
Учти дополнительно: {мягкая_подсказка, например: приоритет — совпадение модели}.
Объясни выбор.

Что подставлять: {данные_записи} и {список_кандидатов} — ваши реальные данные; {жёсткое_правило_N} — формальные критерии, которые точно решают правильность (числа, коды, единицы, диапазоны); {порядок_ослабления} — какое правило отпускать первым при пустом списке; {мягкая_подсказка} — совет для финального выбора, не критичный для допуска.

🚀 Быстрый старт — вставь в чат:

Вот шаблон метода сопоставления записей с жёстким фильтром. 
Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить поля.

[вставить шаблон выше]

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

⚠️

Ограничения

⚠️ Нужны чёткие формальные критерии. Если разница между верным и похожим-но-неверным вариантом решается только смыслом текста (без чисел, кодов, дат) — жёсткий фильтр ничего не даёт. В тесте на данных, где критерии не были решающими, жёсткий фильтр даже снизил точность.

⚠️ Правила нужно знать заранее. Метод не помогает, если вы сами не знаете, по каким признакам отличить верный вариант от похожего неверного. LLM может подсказать возможные правила по примерам, но их всё равно нужно проверить руками.

⚠️ В чате фильтр "текстовый", не программный. В оригинальном исследовании фильтр — это код, который проверяет условие безошибочно. В обычном чате модель проверяет условие текстом — она может ошибиться в самой проверке (например, в переводе единиц). Для важных задач стоит выборочно проверять результат вручную.

🔗

Ресурсы

Constraint-Guided Enterprise Data Mapping with Large Language Models — Sebastian Monka, Pramod Anantharam, Thien Vo Minh, Lavdim Halilaj (Bosch Center for Artificial Intelligence). Proceedings of Machine Learning Research vol 284, 2026 Conference on Neurosymbolic Learning and Reasoning (NeSy).


📋 Дайджест исследования

Ключевая суть

0.34 против 0.75 — правильный кандидат был самым непохожим по тексту, а неправильный самым похожим. LLM без проверки выбрала бы не тот товар. Метод CGM позволяет находить точное соответствие записей в разных базах данных, даже когда правильный вариант текстово не совпадает с запросом. Работает так: сначала жёсткий фильтр отсекает кандидатов по числам, кодам и диапазонам, и LLM просто не видит неверные варианты — модель выбирает по смыслу только из того, что прошло проверку, а точность выросла с 0.08 до 0.66.

Принцип работы

Модель как эксперт-логист без калькулятора в голове. Она отлично видит текст '1000 см³' и 'Fiat Panda' — но не помнит на автомате, что 1.0 литр это тоже 1000 см³. Сначала выкинь кандидатов, которые не совпадают по фактам, потом дай модели выбирать по смыслу. Если после фильтра список пуст — ослабляй правила по одному, начиная с наименее важного (обычно дата, а не код).

Почему работает

LLM путает текстовое сходство с фактическим совпадением. В примере из статьи правильный кандидат был самым непохожим по тексту (сходство 0.34), а неправильный — самым похожим (0.75). Без фильтра точность (F1) равнялась 0.08 — почти случайный выбор. С жёстким фильтром — 0.66. Модель просто не видит неверные варианты — их отсекли раньше, чем начался смысловой выбор.

Когда применять

Сведение каталогов, прайсов, CRM-записей → там где есть точные числа, коды или диапазоны дат, особенно когда похожие по названию записи на самом деле разные по факту. Не подходит, если различие между верным и неверным вариантом решается только смыслом текста — тогда жёсткий фильтр может даже снизить точность.

Мини-рецепт

1. Выдели жёсткие правила: код, единица измерения, диапазон — то, что решает вопрос точно, без смысла текста.
2. Задай порядок ослабления: если фильтр отсеял всех подряд, какое правило уходит первым (обычно дата, не код).
3. Попроси таблицу: кандидат | прошёл фильтр (да/нет) | причина отсева — модель должна показать разбор перед выбором.
4. Смысловой выбор: только из прошедших фильтр модель выбирает лучший вариант с объяснением.

Примеры

[ПЛОХО] : Сопоставь Fiat Panda 141, объём 1000 см³, с этими тремя вариантами у поставщика
[ХОРОШО] : Сначала проверь для каждого кандидата: код (буквальное совпадение), объём (переведи литры в см³, умножь на 1000, допуск ±50), год выпуска (диапазон 1991-1996). Покажи таблицу прошёл/не прошёл с причиной. Потом выбери лучший вариант только из прошедших фильтр.
Источник: Constraint-Guided Enterprise Data Mapping with Large Language Models
ArXiv ID: 2608.24218 | Сгенерировано: 2026-08-26 05:26

Проблемы LLM

ПроблемаСутьКак обойти
Модель путает текстовое сходство со структурным совпадениемПри сопоставлении похожих записей (товары, детали, записи в базах) модель цепляется за похожие слова и названия. Игнорирует то, что числа, коды или единицы измерения не совпадают. "1000 см³" и "1.1 л" для неё выглядят почти одинаково, хотя это разные значения. Из-за этого модель может выбрать неверный вариант просто потому, что он текстово похож на запросСначала прогони кандидатов через жёсткий текстовый фильтр по формальным признакам: код, единица измерения, диапазон дат. Кандидатов, которые не проходят проверку, полностью убери из списка. Только среди уцелевших дай модели выбрать по смыслу

Методы

МетодСуть
Двухшаговый фильтр — сначала формальная проверка, потом смыслРаздели задачу сопоставления на два явных шага в одном промпте. Шаг 1: модель проверяет каждого кандидата по жёстким правилам (код, единица измерения, диапазон значений) и выводит таблицу "прошёл / не прошёл / причина". Кандидатов, не прошедших проверку, из дальнейшего рассмотрения исключают полностью. Шаг 2: из оставшихся модель выбирает лучший вариант по смыслу — но не может выйти за пределы уже отфильтрованного списка. Если после фильтра список пуст — правила ослабляют по одному, начиная с наименее важного (например, дата отпускается раньше кода), и повторяют проверку. Почему работает: модель хорошо оценивает смысловую похожесть, но плохо держит в голове точные числа одновременно с текстом. Разделение задач убирает эту слабость — механическую проверку чисел модель делает по явной инструкции до того, как начинает рассуждать о смысле, и физически не может выбрать структурно неверный вариант, потому что его уже нет в списке. Когда работает: есть чёткие формальные критерии (числа, коды, единицы, даты), которые точно решают правильность. Когда не работает: различие между верным и похожим-неверным вариантом решается только смыслом текста без чисел и кодов — тогда жёсткий фильтр не помогает или даже мешает
📖 Простыми словами

Constraint-Guided Enterprise Data Mapping withLargeLanguageModels

arXiv: 2608.24218

Скормить нейросети две базы данных и попросить их объединить — верный способ получить галлюцинации и хаос. Большие языковые модели отлично улавливают смысл и синонимы, но хронически слепы к точным цифрам. Если названия товаров похожи, модель радостно решит, что это одно и то же, проигнорировав разные единицы измерения или артикулы. Метод CGM (Constraint-Guided Mapping) решает эту проблему в корне.

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

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

Авторы тестировали подход на каталогах запчастей, но принцип универсален. Сведение номенклатур поставщиков, объединение баз при слиянии компаний, интеграция каталогов на маркетплейсах — CGM применим к любым enterprise-данным. Там, где чистая LLM путает литры с кубическими сантиметрами, связка с правилами даёт железобетонную точность.

Главный вывод: хватит требовать от языковой модели работы калькулятора — для строгой логики она слишком гуманитарий. Фильтры закрывают физику и цифры, нейросеть забирает смысл. Любые попытки скормить сырые таблицы одному лишь промпту гарантируют слив бюджета на исправление косяков в каталоге.

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с