TL;DR
RevBrowse — методология для принятия решений, которая имитирует поведение покупателя: сначала структурирует предпочтения, потом извлекает релевантные характеристики из каждой опции, затем сопоставляет их для ранжирования. Работает через три шага: (1) разбить свои критерии на "что ищу" и "чего избегаю", (2) для каждого кандидата выделить плюсы и минусы, (3) сопоставить предпочтения с характеристиками.
Проблема принятия решений: когда у вас много информации (отзывы, описания, характеристики), сложно удержать в голове все критерии сразу и объективно сравнить опции. LLM может провалиться в информационную перегрузку или упустить важные детали. Без структуры анализ получается поверхностным — модель смотрит на всё сразу, но не фокусируется на том, что конкретно важно для вас.
RevBrowse решает это через целенаправленное сопоставление: сначала явно формулируешь критерии (Like/Dislike), потом для каждой опции извлекаешь только релевантные характеристики (Pros/Cons), затем матчишь "что ищу" с плюсами, "чего избегаю" с минусами. Получается контекстный фильтр — вместо анализа всей информации модель смотрит только на то, что важно для конкретного решения.
Схема метода
ШАГ 1: Структурирование предпочтений
Вход: описание критериев выбора
→ ИЩУ (Like): что важно найти
→ ИЗБЕГАЮ (Dislike): чего хочу избежать
ШАГ 2: Извлечение характеристик (для каждого кандидата)
Вход: информация о кандидате (описание, отзывы, характеристики)
→ ПЛЮСЫ (Pros): сильные стороны
→ МИНУСЫ (Cons): слабые стороны
ШАГ 3: Сопоставление и ранжирование
Вход: предпочтения + характеристики всех кандидатов
→ Матчинг: ИЩУ ↔ ПЛЮСЫ, ИЗБЕГАЮ ↔ МИНУСЫ
→ Ранжирование кандидатов по степени соответствия
Выполняется: в несколько запросов к LLM (3 отдельных шага)
Пример применения
Задача: Выбрать между тремя онлайн-школами программирования: Яндекс Практикум, Skillfactory и Нетология. Есть куча отзывов, но непонятно что важно.
Промпт — Шаг 1: Структурирование критериев
Помоги выбрать онлайн-школу для изучения Python. Вот что для меня важно:
- Нужна сильная практика, не просто теория
- Важна помощь с трудоустройством
- Хочу работать в своём темпе, не привязываться к потоку
- Бюджет до 60к рублей
- Не хочу зубрить алгоритмы без понимания применения
Структурируй мои критерии в формат:
ИЩУ (что важно найти):
ИЗБЕГАЮ (чего не хочу):
Промпт — Шаг 2: Анализ каждой школы
Вот информация о Яндекс Практикуме [вставить описание, отзывы].
На основе моих критериев из предыдущего шага, выдели:
ПЛЮСЫ (что соответствует моим ИЩУ):
МИНУСЫ (что попадает в мои ИЗБЕГАЮ):
[Повторить для Skillfactory и Нетологии]
Промпт — Шаг 3: Сопоставление и выбор
У меня есть:
МОИ КРИТЕРИИ:
ИЩУ: [из шага 1]
ИЗБЕГАЮ: [из шага 1]
КАНДИДАТЫ:
1. Яндекс Практикум — Плюсы: [...], Минусы: [...]
2. Skillfactory — Плюсы: [...], Минусы: [...]
3. Нетология — Плюсы: [...], Минусы: [...]
Сопоставь мои ИЩУ с ПЛЮСАМИ каждой школы, ИЗБЕГАЮ с МИНУСАМИ.
Ранжируй школы по степени соответствия моим критериям.
Объясни почему первое место — лучший выбор.
Результат:
Вы получите структурированное сравнение: модель покажет как каждая школа закрывает ваши критерии, где есть совпадения с "ищу", где конфликты с "избегаю". В финале — ранжированный список с обоснованием, почему топ-1 лучше других конкретно для ваших критериев.
Почему это работает
Слабость LLM: При большом объёме информации (отзывы, характеристики, описания) модель теряет фокус. Она видит все детали сразу, но не знает что приоритетно для вас. Результат — поверхностный анализ или перегрузка нерелевантными деталями.
Сильная сторона LLM: Модель отлично структурирует информацию и находит соответствия между явно заданными критериями и характеристиками. Если дать ей чёткую схему — что искать и с чем сравнивать — она работает точно и последовательно.
Как метод использует сильную сторону: RevBrowse разбивает анализ на этапы. Сначала явно формулируются критерии (Like/Dislike) — это создаёт фильтр релевантности. Потом для каждой опции извлекаются только те характеристики, которые попадают в фильтр (Pros/Cons). В финале модель делает целенаправленное сопоставление — матчит ваши Like с Pros каждой опции, Dislike с Cons.
Ключевой принцип: контекстная фильтрация. Вместо "проанализируй всё" → "выдели только то, что релевантно моим критериям". Это снижает шум, фокусирует внимание модели на важном, делает сравнение объективным.
Рычаги управления промптом:
- Глубина структурирования критериев → можно детализировать Like/Dislike на подкатегории (функциональные требования, эмоциональные, бюджетные)
- Источники для извлечения характеристик → можно подавать разные типы контента (отзывы, официальные описания, сравнительные обзоры)
- Формат сопоставления → можно просить таблицу соответствия, балльную систему, или развёрнутое обоснование
- Количество кандидатов → метод масштабируется — работает для 3 опций и для 20
Шаблон промпта
Шаг 1: Структурирование предпочтений
Помоги мне с выбором {тип решения}.
Вот мои критерии:
{описание критериев, ограничений, приоритетов}
Структурируй это в формат:
ИЩУ (что важно найти):
- [критерий 1]
- [критерий 2]
...
ИЗБЕГАЮ (чего не хочу):
- [ограничение 1]
- [ограничение 2]
...
Шаг 2: Анализ кандидатов
Вот информация о кандидате "{название}":
{описание, характеристики, отзывы, любой релевантный контекст}
На основе моих критериев:
ИЩУ: {из шага 1}
ИЗБЕГАЮ: {из шага 1}
Выдели:
ПЛЮСЫ (что соответствует моим ИЩУ):
МИНУСЫ (что попадает в мои ИЗБЕГАЮ):
[Повторить для каждого кандидата]
Шаг 3: Сопоставление и решение
У меня есть:
МОИ КРИТЕРИИ:
ИЩУ: {из шага 1}
ИЗБЕГАЮ: {из шага 1}
КАНДИДАТЫ:
1. {название} — Плюсы: [...], Минусы: [...]
2. {название} — Плюсы: [...], Минусы: [...]
...
Сопоставь мои ИЩУ с ПЛЮСАМИ каждого кандидата, ИЗБЕГАЮ с МИНУСАМИ.
Ранжируй кандидатов по степени соответствия.
Объясни выбор топ-1.
Что подставлять:
{тип решения}— что выбираете (курс, вакансия, ноутбук, подрядчик, город для переезда){описание критериев}— любой текст с вашими требованиями, ограничениями, приоритетами{название}— имя/название кандидата{описание, характеристики, отзывы}— любая информация о кандидате
Ограничения
⚠️ Требует нескольких запросов: Метод разбит на три шага, каждый — отдельный запрос к LLM. Это не техника "один промпт = результат".
⚠️ Ручной перенос данных: Нужно копировать структурированные критерии из шага 1 в шаг 2, результаты анализа из шага 2 в шаг 3. Без этого контекст теряется.
⚠️ Зависимость от качества входной информации: Если описания кандидатов поверхностные или неполные, характеристики будут неполными. Метод не добывает новую информацию — структурирует то, что дали.
⚠️ Субъективные критерии сложнее: Для измеримых критериев (цена, срок, характеристики) метод работает отлично. Для субъективных ("атмосфера", "стиль", "харизма") сопоставление менее точное.
Как исследовали
Исследователи взяли четыре категории товаров из Amazon (Food, Sports, Clothing, Games) и проверили как LLM справляются с рекомендациями на основе отзывов. Сравнивали RevBrowse с традиционными коллаборативными фильтрами (LightGCN, SASRec), review-based методами (DeepCoNN, RGCL) и другими LLM-подходами (LlamaRec, Exp3rt).
Ключевая гипотеза: если явно структурировать предпочтения пользователя (Like/Dislike из исторических отзывов) и целенаправленно извлекать характеристики товаров (Pros/Cons из peer reviews), то LLM лучше справится с ранжированием кандидатов.
Для обучения PrefRAG использовали contrastive learning: модель учили отличать релевантные характеристики товара (positive samples — плюсы, которые совпадают с Like пользователя) от нерелевантных (negative samples — плюсы других товаров, которые не попадают в предпочтения).
Почему результаты получились такими: RevBrowse стабильно обходит все базовые методы на 10-20% по метрикам Recall и NDCG. Почему? Потому что базовые LLM-методы либо (1) подают все отзывы сразу → упираются в context window и теряют релевантность, либо (2) делают статичные summary всех отзывов → теряют динамику ("что важно для этого конкретного товара"). RevBrowse извлекает только релевантные характеристики для каждого кандидата — это убирает шум и фокусирует LLM.
Что удивило: Ablation study показало, что removal of PrefRAG-selected reviews даёт больший drop в качестве, чем removal of user preferences summary. Это значит что контекстно релевантные характеристики товара важнее глобального описания предпочтений пользователя. Инсайт для практики: при принятии решений лучше извлекать релевантные детали по каждой опции, чем держать в голове общий список критериев.
Оригинал из исследования
Контекст: Исследователи использовали LLM (Qwen2.5-72B) для извлечения предпочтений пользователя из исторических отзывов. Вот шаблон промпта для извлечения user preferences:
**Task:** Based on the user's historical reviews, identify and extract the user's preferences.
**Historical reviews:**
{list of user reviews}
**Instructions:**
1. Extract the user's **likes** (positive preferences) based on positive feedback in the reviews
2. Extract the user's **dislikes** (negative preferences) based on negative feedback in the reviews
3. Format the output as:
LIKE: [list of positive preferences]
DISLIKE: [list of negative preferences]
**Output format:**
LIKE:
- [preference 1]
- [preference 2]
...
DISLIKE:
- [dispreference 1]
- [dispreference 2]
...
Для извлечения item features использовали аналогичный подход — извлекали Pros и Cons из peer reviews:
**Task:** Based on the review text, extract the pros and cons of the item.
**Review text:**
{review content}
**Instructions:**
1. Identify **pros** (positive aspects) mentioned in the review
2. Identify **cons** (negative aspects) mentioned in the review
3. Format the output as structured lists
**Output format:**
PROS:
- [positive aspect 1]
- [positive aspect 2]
...
CONS:
- [negative aspect 1]
- [negative aspect 2]
...
Адаптации и экстраполяции
💡 Адаптация для карьерного выбора: сравнение вакансий
Классический сценарий: есть 3-5 офферов, каждый со своими плюсами и компромиссами. Непонятно как объективно сравнить.
Шаг 1: Структурирование карьерных критериев
Помоги выбрать между офферами. Вот что важно:
- Рост: хочу развиваться как {твоя специализация}
- Work-life balance: не хочу переработок и выгорания
- Команда: важно окружение сильных профессионалов
- Продукт: хочу работать над чем-то осмысленным, не legacy код
- Деньги: не меньше {сумма}, но не главное
Структурируй в:
ИЩУ (критерии выбора):
ИЗБЕГАЮ (красные флаги):
Шаг 2: Анализ каждого оффера
Оффер от {Название компании}:
- Позиция: {должность}
- Зарплата: {оклад}
- Стек: {технологии}
- Команда: {размер, структура}
- Продукт: {описание}
- Отзывы на Хабр Карьере / reviews.io: {цитаты}
На основе моих критериев, выдели:
ПЛЮСЫ (соответствие моим ИЩУ):
МИНУСЫ (попадание в ИЗБЕГАЮ):
[Повторить для каждого оффера]
Шаг 3: Решение
Сопоставь мои критерии с офферами.
Ранжируй по степени соответствия.
Покажи где есть trade-offs (жертвуешь одним критерием ради другого).
Дай рекомендацию с обоснованием.
💡 Адаптация для продуктовых решений: выбор подрядчика / фрилансера
При выборе исполнителя (дизайнер, разработчик, подрядчик) критичны детали: опыт, стиль, скорость, надёжность. Но в портфолио и отзывах этого много, а времени на анализ нет.
Применение: Используй RevBrowse для структурированного сравнения. В шаге 2 подавай не только портфолио, но и отзывы клиентов, примеры работ, описание подхода к работе. Модель извлечёт релевантные плюсы/минусы и покажет кто лучше закрывает твои критерии.
Особенность: Для креативных задач (дизайн, контент) добавь в ИЩУ не только функциональные требования, но и эстетические / стилистические критерии. Например: "ИЩУ: минималистичный стиль, быстрые итерации, портфолио в финтехе".
🔧 Техника: добавить весовые коэффициенты → приоритизация критериев
Не все критерии равны. Можно добавить явные приоритеты:
ИЩУ (ранжировано по важности):
1. [критично] — {критерий} (вес 10)
2. [важно] — {критерий} (вес 7)
3. [желательно] — {критерий} (вес 3)
ИЗБЕГАЮ (ранжировано по серьёзности):
1. [deal-breaker] — {ограничение} (вес 10)
2. [нежелательно] — {ограничение} (вес 5)
В шаге 3 попросить модель учитывать веса при ранжировании: "Сопоставь критерии с учётом весов. Если кандидат сильно закрывает критичный критерий, но слаб в желательном — это лучше, чем наоборот."
Эффект: Более точное ранжирование, которое отражает реальные приоритеты.
🔧 Техника: добавить "объясни trade-offs" → видимость компромиссов
После ранжирования добавь в шаг 3:
Для топ-2 кандидатов покажи trade-offs:
- Что я получаю, выбирая кандидата 1 вместо 2?
- Чем жертвую?
- Есть ли сценарии, где кандидат 2 был бы лучше?
Эффект: Понимаешь не только "кто лучше", но и "почему" и "при каких условиях выбор может поменяться".
Ресурсы
Learning to Shop Like Humans: A Review-driven Retrieval-Augmented Recommendation Framework with LLMs
Авторы: Kaiwen Wei, Jinpeng Gao, Jiang Zhong (Chongqing University), Yuming Yang (Chongqing University), Fengmao Lv (Southwest Jiaotong University), Zhenyang Li (Hong Kong Generative AI Research and Development Center, City University of Hong Kong)
Amazon-2014 datasets: https://jmcauley.ucsd.edu/data/amazon/
