TL;DR
Рациональная персонализация — принцип работы с LLM, когда модель сама решает использовать ли информацию из контекста (память о пользователе, предыдущие диалоги), а не тупо вставляет всё подряд. Исследователи из Renmin University и Huawei выделили три уровня персонализации: L0 (игнорирует контекст), L1 (вставляет всё семантически похожее), L2 (прагматический — оценивает релевантность через обратный вывод намерения пользователя).
LLM страдают над-персонализацией (over-personalization): когда в контексте есть информация о предпочтениях, модель пытается впихнуть её в ответ, даже если это противоречит текущему запросу. Пример из исследования: пользователь просит аудио для сна, а в памяти есть предпочтение "любит музыку с сильным ритмом" → модель рекомендует быструю музыку для засыпания. Проблема усиливается с ростом способностей модели — inverse scaling effect: чем мощнее LLM, тем сильнее она притягивается к токенам из контекста (attraction bias). В тестах разрыв между людьми и LLM достигает 40-90% в умении игнорировать нерелевантную память.
RP-Reasoner решает проблему через байесовский вывод намерения: для каждого варианта использования памяти (игнорировать/поддержать/доминировать) модель генерирует кандидат-намерения, затем оценивает (1) вероятность запроса — насколько текущий запрос похож на то, как пользователь выразил бы это намерение, и (2) априорную вероятность — насколько намерение соответствует истории предпочтений. Метод улучшает точность на 35% и снижает серьёзность ошибок на 26%, решает 80% проблемных кейсов в коммерческом ассистенте.
Схема метода
RP-Reasoner работает в одном промпте:
ШАГ 1: Генерация кандидатов намерений
Для каждой стратегии (Ignore/Support/Dominate память)
→ создай кандидат-намерение i₁, i₂, i₃
ШАГ 2: Query Likelihood (MLE)
Для каждого кандидата:
"Если бы намерение было i₁, как бы пользователь это выразил?"
→ сравни реальный запрос с симулированным
→ ранжируй по близости
ШАГ 3: Intent Prior (IPE)
Для каждого кандидата:
"Насколько это намерение вероятно, учитывая историю предпочтений?"
→ ранжируй по соответствию памяти
ШАГ 4: Агрегация
Выбери намерение с минимальной суммой рангов из Шага 2 и 3
→ генерируй ответ на основе выбранного намерения
Пример применения
⚠️ Метод работает для задач где есть риск конфликта между контекстом и текущим запросом — персонализированные рекомендации, адаптация тона/стиля, использование истории диалога. Не для: простых фактических вопросов без контекста.
Задача: Ты консультант по карьере. В памяти есть информация: клиент Алексей предпочитает удалённую работу, любит стартапы, ценит высокую зарплату. Сейчас он спрашивает: "Посоветуй как подготовиться к интервью в Яндекс на позицию менеджера продукта".
Промпт:
У меня есть информация о предпочтениях человека:
- Предпочитает удалённую работу
- Любит стартапы
- Ценит высокую зарплату
Текущий запрос: "Посоветуй как подготовиться к интервью в Яндекс на позицию менеджера продукта"
Задача: определи правильную стратегию использования памяти.
Шаг 1 — Сгенерируй три варианта намерения:
- IGNORE: какое намерение если память не релевантна?
- SUPPORT: какое намерение если память частично полезна?
- DOMINATE: какое намерение если память определяет запрос?
Шаг 2 — Для каждого варианта намерения оцени: "Если бы это было истинное намерение, как бы пользователь сформулировал запрос?" Сравни с реальным запросом.
Шаг 3 — Для каждого варианта оцени: "Насколько это намерение вероятно учитывая историю предпочтений?"
Шаг 4 — Выбери стратегию с лучшим балансом между Шагом 2 и 3. Дай ответ на основе выбранной стратегии.
Результат:
Модель покажет рассуждение по шагам: три кандидата намерений, оценку близости запроса к каждому кандидату, оценку соответствия истории. Выберет стратегию IGNORE (запрос про конкретную подготовку к интервью, не про выбор работы) и даст универсальные советы по подготовке к интервью в Яндекс, без упоминания удалёнки и стартапов.
Почему это работает
Слабость LLM: Модели страдают attraction bias — во время генерации они непропорционально увеличивают вероятность токенов, которые уже есть в контексте. Если в памяти написано "любит яркие цвета", модель начнёт генерировать про яркость, даже когда это не нужно. Это усиливается с ростом способностей модели — inverse scaling: мощные LLM сильнее "прилипают" к контексту.
Сильная сторона LLM: Модели хорошо симулируют рассуждения и могут генерировать контрфактуальные сценарии ("а как бы это звучало если..."). Они могут оценивать соответствие между наблюдаемым текстом и гипотетическими вариантами.
Как метод обходит слабость: RP-Reasoner делает явным процесс проверки релевантности памяти. Вместо того чтобы модель автоматически подтягивала контекст в генерацию, метод заставляет её сначала порассуждать через контрфактуальное исключение: "Если бы пользователь действительно хотел использовать эту информацию из памяти, разве он не сформулировал бы запрос иначе?" Это байесовский вывод в стиле Rational Speech Acts теории.
Рычаги управления:
- Количество стратегий — по умолчанию три (Ignore/Support/Dominate), можно упростить до двух (Use/Ignore) для экономии токенов
- Глубина симуляции — можно попросить модель сгенерировать несколько вариантов "как пользователь выразил бы намерение" вместо одного, повысит точность но дороже
- Веса между MLE и IPE — сейчас равные (сумма рангов), можно приоритизировать запрос над историей ("*2 к рангу MLE") или наоборот
- Порог отсечения — добавить условие "если разница рангов < 2, всегда выбирай IGNORE" для консервативной стратегии
Шаблон промпта
У меня есть информация из предыдущего контекста:
{память_или_контекст}
Текущий запрос: "{запрос}"
Определи рациональную стратегию использования контекстной информации:
ШАГ 1 — Кандидаты намерений:
Для каждой стратегии сформулируй явное намерение пользователя:
- IGNORE_INTENT: какое намерение если контекст не релевантен?
- SUPPORT_INTENT: какое намерение если контекст частично помогает?
- DOMINATE_INTENT: какое намерение если контекст определяет запрос?
ШАГ 2 — Query Likelihood:
Для каждого намерения ответь: "Если это истинное намерение, как пользователь обычно формулирует такой запрос?"
Оцени близость реального запроса к типичной формулировке (1-10).
Ранжируй от самого близкого к самому далёкому.
ШАГ 3 — Intent Prior:
Для каждого намерения оцени: "Насколько это намерение соответствует информации в контексте?" (1-10)
Ранжируй по соответствию.
ШАГ 4 — Выбор стратегии:
Просуммируй ранги из Шага 2 и 3 для каждого намерения.
Выбери намерение с минимальной суммой рангов.
ШАГ 5 — Ответ:
На основе выбранной стратегии сгенерируй ответ:
- Если IGNORE — не используй контекст
- Если SUPPORT — используй контекст как дополнение к общим рекомендациям
- Если DOMINATE — ответ должен строиться вокруг контекста
Покажи своё рассуждение по шагам, затем финальный ответ.
Плейсхолдеры:
- {память_или_контекст} — информация из предыдущих диалогов, предпочтения пользователя, документы в контексте
- {запрос} — текущий вопрос или задача
🚀 Быстрый старт — вставь в чат:
Вот шаблон Rational Personalization. Адаптируй под мою задачу: [твоя задача].
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит: (1) какая информация есть в контексте/памяти, (2) какой текущий запрос, (3) в каких случаях контекст должен доминировать. Она возьмёт байесовскую структуру и адаптирует: добавит конкретные критерии оценки для твоего домена, настроит шкалу ранжирования под сложность задачи.
Ограничения
⚠️ Токены и латентность: Метод требует многошагового рассуждения — дороже обычного промпта в 2-3 раза по токенам и времени. Для простых запросов избыточен.
⚠️ Качество памяти: Если контекстная информация изначально неоднозначна или противоречива, метод не улучшит ситуацию — он помогает решить использовать ли чистую память, не исправляет саму память.
⚠️ Субъективные предпочтения: В исследовании метод тестировали на относительно объективных сценариях (музыка для сна vs для вечеринки). Для абстрактных предпочтений ("креативный подход") сложнее судить о релевантности.
⚠️ Implicit память: Когда предпочтения вшиты в историю диалога неявно (не как список фактов, а разбросаны по репликам), моделям труднее извлечь и оценить их. Метод работает лучше с explicit форматом памяти.
Оригинал из исследования
Исследователи реализовали RP-Reasoner через Approximate Bayesian Computation с явным байесовским выводом:
Формула:
P(intent | query, memory) ∝ P_user(query | intent, memory) · P(intent | memory)
\_________________________/ \_______________/
Query Likelihood Intent Prior
Как работает в исследовании:
MLE (Maximum Likelihood Estimation) — для каждого кандидата намерения
iмодель генерирует симулированный запросq̂(i, memory), затем измеряет дистанциюΔ(q, q̂)между реальным и симулированным. Ранжирует кандидаты по близости.IPE (Intent Prior Estimation) — оценивает
P(i | memory)напрямую: "насколько вероятно это намерение учитывая историю". Ранжирует кандидаты.Агрегация — выбирает намерение с минимальной суммой рангов из MLE и IPE.
Ключевая идея: counterfactual elimination из прагматики — "если бы пользователь действительно имел в виду намерение X, не существовало бы лучшего способа это выразить, чем наблюдаемый запрос".
Ресурсы
How Does Personalized Memory Shape LLM Behavior? Benchmarking Rational Preference Utilization in Personalized Assistants — RPEval датасет и детали эксперимента: github.com/XueyangFeng/RPEval
Авторы: Xueyang Feng, Weinan Gan, Xu Chen, Quanyu Dai, Yong Liu (Renmin University of China, Huawei Technologies Ltd.)
