osFoundry / Platform
MMR-разнообразие
Maximal Marginal Relevance выбирает результаты, покрывающие разные углы, а не только топ-совпадения.
Что это
MMR-диверсификация — это этап извлечения в osFoundry, применяющий Maximal Marginal Relevance при запросе к вашей базе знаний. У ранжирования по одной лишь релевантности есть известный изъян: верхние результаты часто оказываются почти дубликатами друг друга, потому что все они совпадают с запросом одинаково. Если пять чанков пересказывают один и тот же абзац, четыре из них впустую занимают место в контекстном окне, а модель так и не увидит второй или третий взгляд на вопрос. MMR устраняет это, оценивая каждого кандидата сразу по двум признакам — по релевантности запросу и по непохожести на уже отобранные чанки, — и затем выбирает результаты, которые релевантны *и* при этом отличаются друг от друга.
Внутри osFoundry MMR — один из этапов пользовательского RAG-пайплайна, который вы собираете для каждого чат-Path в osStudio. Запрос сначала проходит через гибридное извлечение (поиск по эмбеддингам плюс поиск по ключевым словам BM25); затем вы можете добавить этапы фильтрации и переранжирования и поставить MMR после них, чтобы он диверсифицировал уже качественный набор кандидатов. Этап предоставляет стандартные регуляторы MMR: параметр lambda, скользящий между чистой релевантностью и чистым разнообразием, размер пула кандидатов, из которого он выбирает, и число чанков, отдаваемых в промпт. Поскольку каждый этап — это версионируемая, проверяемая по JSON Schema конфигурация, чат-Path для кода и Path для клиентского успеха могут диверсифицировать по-разному, а откатить изменение можно, не трогая исходный код.
Сильнее всего это проявляется на широких или неоднозначных вопросах и на корпусах с пересекающейся лексикой, где верхние совпадения по эмбеддингам сбиваются в плотный кластер. MMR уступает немного «сырой» релевантности top-1 ради охвата, что обычно даёт ответы с более надёжным обоснованием, поскольку модель видит весь спектр того, что на самом деле содержится в базе знаний. Это согласуется с позицией osFoundry — BYOK и local-first: извлечение и диверсификация выполняются в вашем workspace, эмбеддинги идут через управляемый прокси Voyage или ваш собственный ключ, и никакая плата за место не запирает пайплайн.
Ключевые возможности
- Добавляет в пайплайн извлечения этап MMR (Maximal Marginal Relevance), который балансирует релевантность и избыточность, чтобы верхние результаты охватывали разные грани, а не пересказывали лучшее совпадение
- Настраивайте MMR по Path в osStudio: задайте компромисс lambda между релевантностью и разнообразием, размер пула кандидатов и число итоговых чанков, доходящих до промпта
- Подключается после этапов извлечения, фильтрации и переранжирования, так что MMR диверсифицирует уже ранжированный набор кандидатов, а не «сырые» совпадения по эмбеддингам
- Работает на результатах гибридного извлечения из эмбеддингов и BM25; эмбеддинги Voyage доступны через управляемый прокси или ваши собственные ключи в режиме BYOK
- Каждая конфигурация MMR — это версионируемая, проверяемая по JSON Schema конфигурация osStudio с откатом, поэтому разные чат-поверхности могут диверсифицировать по-разному без изменений в исходном коде
Сценарии использования
- Инженер поддержки: широкий вопрос по устранению неполадок возвращает пять почти одинаковых чанков; MMR заполняет места разными причинами, чтобы ответ охватывал не один сценарий отказа
- Исследователь: при запросе к большому набору документов верхние совпадения по эмбеддингам сбиваются в один раздел; MMR вытягивает фрагменты из разных частей корпуса ради более полного синтеза
- Сборщик пайплайнов в osStudio: настраивает lambda MMR на чат-Path для кода в сторону строгой релевантности, оставляя разведочный Path более разнообразным, и всё это — как версионируемая конфигурация с откатом
Часто задаваемые вопросы
Что такое Maximal Marginal Relevance (MMR) и зачем добавлять его в RAG?
MMR — это метод отбора, ранжирующий кандидатные фрагменты по релевантности запросу и одновременно штрафующий за сходство с уже выбранными фрагментами. Его добавляют, когда верхние результаты извлечения склонны быть почти дубликатами: без MMR широкий вопрос может вернуть пять чанков, говорящих одно и то же, и модель видит лишь один взгляд. MMR сохраняет самый релевантный чанк, но заполняет остальные места отдельными, дополняющими друг друга фрагментами.
Как включить MMR-диверсификацию в osFoundry?
MMR — это этап пользовательского RAG-пайплайна, который вы настраиваете для каждого чат-Path в osStudio. Вы добавляете этап MMR после этапов извлечения, фильтрации и необязательного переранжирования, а затем задаёте его lambda (компромисс между релевантностью и разнообразием), пул кандидатов, из которого он черпает, и число итоговых чанков. Конфигурация проверяется по JSON Schema и версионируется, так что её можно подстроить, протестировать на одном Path и при необходимости откатить.
Чем MMR отличается от reranker?
Reranker переоценивает кандидатов исключительно по тому, насколько хорошо каждый соответствует запросу, повышая точность top-k. MMR оптимизирует другую цель: он максимизирует релевантность, одновременно минимизируя избыточность внутри отобранного набора. Они дополняют друг друга: в osFoundry вы обычно сначала выполняете переранжирование, чтобы получить наиболее подходящих кандидатов, а затем применяете MMR, чтобы проходящие дальше чанки охватывали разные аспекты, а не повторяли единственное лучшее совпадение.