TL;DR
Когда несколько источников говорят разное об одном и том же объекте, LLM можно попросить разобраться: какие значения истинные, какие — дубли в разных форматах, а что вообще противоречит. Ключевой механик — структурированный промпт с явными блоками: откуда данные, что делать, какие ограничения, в каком формате выдать.
Модели плохо справляются с задачей "в лоб" — когда пишешь просто "вот данные из трёх источников, найди правду". Без конкретики о предметной области ("автор книги", "режиссёр фильма") LLM путается в роли и выдаёт нечёткие результаты. Это особенно заметно когда у атрибута может быть несколько правильных значений одновременно — например, у книги несколько жанров или соавторов.
Метод решает это через доменно-зависимый промпт — вместо абстрактного "сущность/атрибут/источник" называешь конкретно: "книга/автор/продавец". Дополнительно добавляешь два ограничения: брать значения только из предоставленных источников и считать разные форматы одним значением. Один пример правильного слияния в начале промпта резко повышает качество.
Схема метода
Шаг 1: EXAMPLE (опционально) → один готовый пример слияния
[источник 1: данные] [источник 2: данные] → [результат]
Шаг 2: BODY → таблица конфликтующих данных по источникам
"Объект: [конкретное название типа — Книга, Товар, Рейс]
Атрибут: [конкретное название — Автор, Цена, Время прибытия]
Источник 1: [значение]
Источник 2: [значение]
Источник 3: [значение]"
Шаг 3: QUESTION → задача слияния
"Определи истинное значение атрибута для этого объекта"
Шаг 4: CONSTRAINTS → правила
C1: "Используй только значения из источников выше"
C2: "Если одно значение представлено в разных форматах — считай их одним"
Шаг 5: FORMAT → формат вывода
"Ответ: [формат]"
Все шаги — в одном промпте. Отдельных запросов не нужно.
Пример применения
Задача: Ты запускаешь товар на маркетплейсах. Собрал информацию о конкурирующем продукте с Ozon, Wildberries и сайта производителя — данные везде разные. Нужно слить в одну карточку.
Промпт:
## ПРИМЕР
Товар: Беспроводные наушники Sony WH-1000XM5
Атрибут: Время работы от батареи
Источник 1 (Ozon): "до 30 часов"
Источник 2 (Wildberries): "30 h"
Источник 3 (DNS): "30 часов / 3 часа при быстрой зарядке"
Результат: {30 часов, быстрая зарядка за 3 часа}
---
## ДАННЫЕ
Товар: Bluetooth-колонка JBL Charge 5
Атрибут 1 — Мощность:
Источник 1 (Ozon): "40 Вт"
Источник 2 (Wildberries): "40W RMS"
Источник 3 (М.Видео): "мощность звука 40 Вт"
Атрибут 2 — Особенности:
Источник 1 (Ozon): "водонепроницаемая, PowerBank"
Источник 2 (Wildberries): "IP67, зарядка других устройств, стерео-режим"
Источник 3 (М.Видео): "защита от воды IP67, PartyBoost, powerbank функция"
## ЗАДАЧА
Для каждого атрибута этого товара определи истинные значения.
Там, где может быть несколько правильных значений — укажи все.
Там, где одно — укажи одно.
## ОГРАНИЧЕНИЯ
- Используй только значения из источников выше, не добавляй ничего от себя
- Если одно и то же значение написано по-разному ("40 Вт" и "40W RMS") —
считай это одним значением
## ФОРМАТ
Атрибут 1 — Мощность: [результат]
Атрибут 2 — Особенности: [результат]
Результат: Модель покажет для каждого атрибута: объединит очевидные дубли ("40 Вт" = "40W RMS"), соберёт все уникальные характеристики из разных источников (IP67, PartyBoost, PowerBank, стерео), отсечёт повторы. Получишь чистую карточку товара без противоречий.
Почему это работает
Слабость LLM: Без контекста о предметной области модель не знает, является ли "J.R.R. Tolkien" и "John Ronald Reuel Tolkien" одним человеком или двумя разными. Абстрактный промпт ("сущность", "источник") убирает все смысловые подсказки — и модель работает хуже.
Сильная сторона LLM: Модель хранит огромное количество знаний о реальных объектах — книгах, фильмах, товарах, людях. Когда промпт называет конкретный тип ("книга", "автор"), модель активирует нужный контекст и понимает, что "Tolkien" и "J.R.R. Tolkien" — одно лицо, что у книги может быть несколько жанров, что "40 Вт" и "40W" — одно значение.
Как метод использует это: Доменно-зависимый промпт буквально "включает" нужные знания. Ограничения убирают два главных источника ошибок: галлюцинации (C1 — не выдумывай) и дубли форматов (C2 — не считай их разными). Один пример (1-shot) показывает модели паттерн вывода — особенно помогает для сложных случаев.
Рычаги управления: - Многозначность — фраза "может быть несколько правильных значений" включает multi-truth режим: модель не будет выбирать одно, а соберёт все валидные - Constraint C1 — можно убрать если хочешь позволить модели нормализовать значения (например, дополнить аббревиатуру) - Constraint C2 — добавляй всегда когда источники могут использовать разные единицы, форматы дат, аббревиатуры - 1-shot пример — чем сложнее и специфичнее данные, тем важнее. Для простых данных можно убрать
Шаблон промпта
## ПРИМЕР
Объект: {название_объекта}
Атрибут: {название_атрибута}
Источник 1 ({источник_1}): "{значение_1}"
Источник 2 ({источник_2}): "{значение_2}"
Источник 3 ({источник_3}): "{значение_3}"
Результат: {пример_слияния}
---
## ДАННЫЕ
Объект: {конкретное_название_объекта}
Атрибут 1 — {название_атрибута_1}:
Источник 1 ({источник_1}): "{значение}"
Источник 2 ({источник_2}): "{значение}"
Источник 3 ({источник_3}): "{значение}"
Атрибут 2 — {название_атрибута_2}:
Источник 1 ({источник_1}): "{значение}"
Источник 2 ({источник_2}): "{значение}"
Источник 3 ({источник_3}): "{значение}"
## ЗАДАЧА
Для каждого атрибута определи истинные значения.
Там, где может быть несколько правильных значений одновременно — укажи все.
Там, где одно — укажи одно.
## ОГРАНИЧЕНИЯ
- Используй только значения из источников выше, не добавляй ничего от себя
- Если одно и то же значение написано в разных форматах — считай их одним
## ФОРМАТ
Атрибут 1 — {название_атрибута_1}: [результат]
Атрибут 2 — {название_атрибута_2}: [результат]
Что подставлять:
- {название_объекта} — конкретный тип: "Книга ISBN 978-...", "Товар Артикул 1234", "Рейс SU-215"
- {название_атрибута} — конкретное свойство: "Автор", "Цена", "Время вылета", не "Атрибут 1"
- {источник_N} — откуда данные: "Ozon", "Wildberries", "сайт производителя"
- Убери блок ## ПРИМЕР если данные простые и однозначные
- Убери ограничение C1 если хочешь позволить модели нормализовать/дополнить значения
🚀 Быстрый старт — вставь в чат:
Вот шаблон для слияния конфликтующих данных из нескольких источников.
Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит про тип объекта, названия атрибутов и откуда берёшь данные — потому что конкретные названия критичны для качества слияния. Она возьмёт паттерн из шаблона и адаптирует под твой кейс.
Ограничения
⚠️ Доменно-независимые промпты работают хуже: Если заменить конкретные названия ("книга", "автор") на абстрактные ("сущность", "атрибут") — качество слияния падает значительно, особенно для сложных данных. Всегда называй конкретный тип объекта и атрибута.
⚠️ Constraint C1 в одиночку может навредить: Ограничение "бери только из источников" без C2 ("разные форматы = одно значение") иногда снижает точность — модель начинает избыточно буквально трактовать значения. Используй C1 и C2 вместе или только C2.
⚠️ Слабее работает для структурированных числовых данных: Расписания, временны́е данные, точные числа — LLM справляется хорошо, но небольшие расхождения (разница в 5 минут, разные часовые пояса) может проигнорировать. Для критически точных данных перепроверяй вручную.
⚠️ Требует, чтобы данные были уже собраны: Метод предполагает что ты уже скопировал данные из源 в промпт. Подходит для десятков записей — не для тысяч строк.
Как исследовали
Команда Манчестерского университета взяла три реальных датасета с заведомо конфликтующими данными: 894 источника с информацией о книгах, 15 сайтов с данными о фильмах (IMDb, Amazon, Metacritic и другие) и 38 источников о расписании рейсов. В каждом датасете есть "правильный ответ" (ground truth) — так что можно измерить точно.
Идея была простой: сравнить LLM-подходы с классическими алгоритмами слияния данных — голосованием большинства, взвешенным голосованием и байесовскими моделями. Интересно, что доменно-зависимые промпты обогнали все классические алгоритмы на датасете книг с большим отрывом. Но самое неожиданное: классические алгоритмы оказались неплохи на лётном датасете — там значения строго однозначные, и простое голосование работает.
Авторы намеренно проверили что произойдёт если убрать ID рейса из промпта ("obfuscated" настройка) — чтобы понять, не "подглядывает" ли модель ответ в обучающих данных. Результаты почти не изменились, что подтверждает: модель реально рассуждает, а не просто воспроизводит.
Адаптации и экстраполяции
🔧 Адаптация: слияние конкурирующих мнений, а не фактов
Оригинал заточен под фактические данные. Но тот же паттерн работает когда нужно собрать "коллективное мнение" из разных источников:
Замени: "Определи истинное значение" → "Определи общую позицию и точки разногласия"
Убери: Оба ограничения C1 и C2 (они блокируют синтез)
Добавь: "Если мнения противоречат — укажи это явно как спорный вопрос"
## ДАННЫЕ
Тема: SEO-стратегия для e-commerce в 2025 году
Эксперт 1 (блог Neilfound): "Контент — всё, ссылки умерли"
Эксперт 2 (Semrush-исследование): "Ссылочная масса по-прежнему топ-фактор"
Эксперт 3 (Яндекс.Вебмастер): "Поведенческие факторы важнее технического SEO"
## ЗАДАЧА
Определи: в чём эксперты сходятся, в чём расходятся, что считать рабочей позицией.
## ФОРМАТ
Консенсус: [что все признают]
Спорно: [где мнения расходятся и почему]
Рабочая позиция: [что стоит взять за основу и почему]
🔧 Экстраполяция: слияние версий одного текста
Multi-truth принцип можно применить для сравнения редакций одного документа — когда несколько людей правили один текст и нужно найти "лучшую версию":
## ДАННЫЕ
Документ: Оффер для landing page
Редакция 1 (маркетолог): "Автоматизируй рутину и освободи 3 часа в день"
Редакция 2 (копирайтер): "Перестань тратить время на задачи, которые делает бот"
Редакция 3 (CEO): "Инструмент для команд, которые ценят своё время"
## ЗАДАЧА
Определи лучшие элементы каждой редакции и создай итоговый вариант,
сохранив сильные части. Укажи, что взял из каждой версии.
## ОГРАНИЧЕНИЯ
Используй только формулировки из версий выше, не добавляй новые слова
Ресурсы
Статья: Single and Multi Truth Data Fusion using Large Language Models
Авторы: Hira Beril Kucuk, Norman W. Paton, Jiaoyan Chen, Zhenyu Wu — Department of Computer Science, University of Manchester
Код: github.com/hiraberil/LLM-DataFusion
Упомянутые методы-сравнения: LTM (Latent Truth Model), DART (Domain-Aware Truth Discovery), Majority Vote, Source Reliability Vote
