# MMR и разнообразие выдачи

> MMR в RAG: баланс релевантности и новизны (λ), зачем убирать дубликаты из топ-k и как объяснить на собеседовании.

Раздел: [RAG: поиск + генерация](https://ml-book.com/s/rag/) · Страница темы: https://ml-book.com/t/mmr-diversity/ · Обновлено: 2026-09-16 · Источник: ml-book.com, учебник делается сообществом

## Интуиция

Представь: пользователь спрашивает «расскажи про плюсы и минусы удалённой работы». Ретривер честно возвращает топ-5 самых близких к запросу чанков — и все пять оказываются про экономию времени на дороге, потому что именно эта мысль ярче всего представлена в базе. Формально релевантность высокая, а по сути мы отдали LLM пять перефразировок одного тезиса. Про минусы и про командную работу — ни слова, хотя такие чанки в базе есть, просто чуть дальше по близости.

Проблема в том, что *близость к запросу* и *полезность набора* — разные вещи. Хороший набор из k документов должен быть не только релевантным, но и **разнообразным (diverse)**: лучше пять разных граней темы, чем пять копий одной. Особенно это важно, когда куски базы частично дублируют друг друга — а в реальных корпусах near-дубликаты есть почти всегда.

## Как это работает: формула MMR

**MMR (Maximal Marginal Relevance, максимальная маргинальная релевантность)** — жадный отбор. Мы строим итоговый список по одному документу: на каждом шаге выбираем тот, который максимизирует компромисс между близостью к запросу и *новизной* относительно уже выбранных:

`MMR = λ · sim(q, d) − (1 − λ) · max_{d′ ∈ выбранные} sim(d, d′)`

Здесь sim(q, d) — близость документа к запросу (релевантность), а второе слагаемое — штраф за похожесть на *самый близкий* из уже отобранных документов. Параметр λ ∈ [0, 1] задаёт баланс:

- λ = 1 — чистая релевантность: штраф выключен, MMR берёт топ-k по близости и может собрать весь кластер дубликатов.
- λ = 0 — чистое разнообразие: релевантность игнорируется, отбор гонится только за непохожестью и легко утащит нерелевантное.
- На практике λ ≈ 0.5–0.7 — релевантность ведёт, но новизна не даёт набрать копий.

Дедупликация near-duplicate — частный случай MMR: даже при высоком λ второе слагаемое обнуляет ценность документа, почти совпадающего с уже выбранным.

> **💡 Ключевая мысль**
>
> MMR оптимизирует не «релевантность каждого документа», а «полезность набора в целом»: параметр λ двигает систему от «k копий лучшего ответа» (λ→1) к «k разных граней темы» (λ→0). Это отбор поверх кандидатов, а не новый поиск.

> 🎛 Интерактивная визуализация — на странице темы: https://ml-book.com/t/mmr-diversity/

## Когда разнообразие помогает, а когда мешает

MMR — не бесплатная добавка, а размен, и включать его надо осознанно:

- **Разнообразие важно** для широких и многогранных вопросов: «расскажи про X со всех сторон», обзоры, сравнения плюсов и минусов, сборка контекста для длинного ответа. Здесь k копий одной мысли — прямая потеря.
- **Разнообразие мешает** узким фактовым вопросам: «какой порт по умолчанию у PostgreSQL?». Тут важна точность топ-1, а искусственное «разбегание» может подсунуть менее релевантный документ вместо верного. При маленьком λ легко утянуть нерелевантное.

По месту в пайплайне MMR — это переупорядочивание и отбор *поверх* уже найденных кандидатов, родственник [реранкинга](https://ml-book.com/t/hybrid-rerank/): реранкер уточняет релевантность каждого документа, MMR — оптимизирует полезность набора. Разнообразие бывает и на уровне генерации (сэмплирование, несколько ответов), но в RAG чаще всего его наводят именно на этапе отбора контекста.

> **⚠️ Подводный камень**
>
> Слишком маленькое λ (гонка за разнообразием) выталкивает наверх документы, которые «непохожи на остальные» просто потому, что они *нерелевантны*. Разнообразие ценно только среди релевантного: сначала убедись, что кандидаты вообще по теме, и лишь потом раздвигай их по разным граням. λ = 0 почти всегда хуже, чем λ = 1.

> **🎤 На собеседовании**
>
> - «Что делает параметр λ в MMR?» — балансирует релевантность (λ→1, риск дублей в выдаче) и новизну/разнообразие (λ→0, риск нерелевантности); на практике λ ≈ 0.5–0.7.
> - «Зачем разнообразие в RAG?» — топ-k по чистой близости часто набивает контекст near-дубликатами; MMR отдаёт LLM разные грани темы вместо копий одного тезиса.
> - «Когда MMR вредит?» — на узких фактовых вопросах, где важна точность топ-1; тогда λ держат высоким или отключают MMR.
> - «Чем MMR отличается от реранкера?» — реранкер уточняет релевантность каждого документа отдельно, MMR оптимизирует состав набора с учётом уже выбранного (marginal relevance).

## Связанные темы

- [Гибридный поиск и реранкинг](https://ml-book.com/t/hybrid-rerank/)
- [Векторный поиск и ANN-индексы](https://ml-book.com/t/vector-search/)
- [Что такое RAG и зачем он нужен](https://ml-book.com/t/rag-basics/)
- [Оценка качества RAG](https://ml-book.com/t/rag-eval/)

---

Интерактив, тест из 12 вопросов и карточки терминов — на странице темы: https://ml-book.com/t/mmr-diversity/
Весь учебник в markdown: https://ml-book.com/llms-full.txt · Оглавление для агентов: https://ml-book.com/llms.txt
