中文翻译暂不可用,显示俄语原文。
Что такое LambdaMART и как он используется для reranking в RAG?
Краткий тезис
LambdaMART — это алгоритм learning-to-rank (LTR) на основе градиентного бустинга решающих деревьев, который оптимизирует метрику NDCG (Cumulative Gain). В RAG он применяется как второй этап reranking после быстрого retrieval: сначала дешёвый поиск (bi-encoder или sparse retrieval) выдаёт top-k (например, 100 документов), затем LambdaMART (или cross-encoder) переранжирует их с учётом множества признаков. LambdaMART значительно быстрее cross-encoder, но требует обучения на размеченных данных и инженерного выделения признаков.
1. Термин: Learning-to-Rank (LTR)
Learning-to-Rank — это класс методов машинного обучения, предназначенных для построения модели ранжирования объектов (документов) по релевантности запросу. Выделяют три подхода:
| Подход | Идея | Примеры |
|---|---|---|
| Pointwise | Каждому документу присваивается абсолютная оценка релевантности (регрессия или классификация) | RankNet (как pointwise), линейная регрессия |
| Pairwise | Модель учится правильно упорядочивать пары документов (какой из двух релевантнее) | RankNet (pairwise), RankSVM, LambdaRank |
| Listwise | Модель оптимизирует метрику качества всего списка (NDCG, MAP) | LambdaMART, ListNet, ListMLE |
LambdaMART относится к listwise-подходу, так как напрямую оптимизирует NDCG, учитывая все документы в списке для одного запроса.
2. Что такое LambdaMART
LambdaMART — это комбинация двух идей:
- LambdaRank — функция потерь, которая для каждой пары документов вычисляет «лямбду» — величину и направление изменения скоров, чтобы максимизировать NDCG.
- MART (Multiple Additive Regression Trees) — Regression Trees|градиентный бустинг решающих деревьев (GBRT), который на каждой итерации строит дерево, предсказывающее эти лямбды.
Ключевое отличие от обычного градиентного бустинга: градиенты заменяются на лямбды, которые учитывают не только ошибку предсказания, но и изменение метрики качества (NDCG) при перестановке документов.
3. Как работает LambdaMART
3.1. Лямбда-функция
Для каждой пары документов (i, j) одного запроса вычисляется:
λ_ij = -ΔNDCG_ij * (1 / (1 + exp(s_i - s_j)))
где:
s_i,s_j— текущие скоры (предсказания модели) для документов i и j;ΔNDCG_ij— изменение NDCG, если поменять местами i и j (положительное, если i релевантнее j, иначе отрицательное);- сигмоид
1/(1+exp(...))— аппроксимация вероятности того, что i должен быть выше j.
Итоговая лямбда для документа i: λ_i = Σ_j λ_ij (сумма по всем парам с участием i).
3.2. Алгоритм
- Инициализация: все скоры = 0 (или среднее значение).
- Для каждой итерации t:
- Вычислить лямбды для всех документов всех запросов.
- Построить решающее дерево (обычно с ограниченной глубиной, например 6), предсказывающее лямбды по признакам документов.
- Обновить модель:
s_i += learning_rate * tree_prediction_i.
- После T деревьев получаем финальную модель, которая выдаёт скор релевантности для любого документа.
3.3. Оптимизация NDCG
NDCG (Normalized Discounted Cumulative Gain) — метрика, учитывающая позицию релевантных документов в списке. Чем выше релевантный документ, тем больше его вклад. LambdaMART напрямую максимизирует NDCG, так как лямбды зависят от ΔNDCG.
4. Использование LambdaMART для reranking в RAG
4.1. Двухэтапная архитектура
Запрос пользователя
↓
[Этап 1: Retrieval] (bi-encoder, BM25, гибридный поиск)
↓ top-k (например, 100)
[Этап 2: Reranker] (LambdaMART или cross-encoder)
↓ top-n (например, 5-10)
[LLM + контекст → ответ]
- Первый этап — быстрый, дешёвый, выдаёт много кандидатов.
- Второй этап — более точный, но дорогой. LambdaMART позволяет обрабатывать сотни документов за миллисекунды (в отличие от cross-encoder, который требует попарного сравнения с запросом).
4.2. Признаки для LambdaMART
Для reranking в RAG используются разнообразные признаки:
| Категория | Примеры признаков |
|---|---|
| Семантические | Cosine similarity между эмбеддингом запроса и документа (bi-encoder), BM25 score, TF-IDF similarity |
| Позиционные | Ранг документа в выдаче первого этапа, номер чанка в исходном документе |
| Метаданные | Дата документа, длина текста, наличие ключевых слов из запроса |
| Статистические | Частота терминов запроса в документе, IDF терминов |
| Взаимодействие | Cross-encoder score (если используется как один из признаков) |
4.3. Обучение модели
Для обучения LambdaMART нужен датасет, где для каждого запроса есть список документов с оценками релевантности (например, 0/1/2/3 или graded relevance). Формат данных:
QueryID Feature1 Feature2 ... Target
Q1 0.8 0.3 ... 2
Q1 0.5 0.7 ... 1
Q2 0.9 0.1 ... 3
...
Популярная библиотека — LightGBM (LGBMRanker). Пример кода:
import lightgbm as lgb
import numpy as np
# X_train: матрица признаков (n_samples, n_features)
# y_train: целевые оценки релевантности (int)
# group_train: количество документов на каждый запрос (list)
model = lgb.LGBMRanker(
objective="lambdarank",
metric="ndcg",
ndcg_eval_at=[5, 10],
boosting_type="gbdt",
num_leaves=31,
learning_rate=0.1,
n_estimators=100
)
model.fit(
X_train, y_train,
group=group_train,
eval_set=[(X_val, y_val)],
eval_group=[group_val],
eval_metric="ndcg"
)
5. Сравнение LambdaMART и cross-encoder для reranking
| Характеристика | LambdaMART | Cross-encoder |
|---|---|---|
| Скорость | Очень быстрый (инференс ~1 мс на 100 документов) | Медленный (каждая пара запрос-документ требует прогона через трансформер) |
| Качество | Хорошее, но уступает cross-encoder на сложных семантических задачах | Лучшее, так как учитывает глубокое взаимодействие запроса и документа |
| Обучение | Требует размеченных данных с ранжированными списками | Можно обучать на парах (релевантный/нерелевантный) |
| Признаки | Нужно инженерно выделять признаки | Работает напрямую с текстом |
| Интерпретируемость | Высокая (важность признаков, SHAP) | Низкая (чёрный ящик) |
| Масштабирование | Легко добавлять новые признаки | Трудно комбинировать с другими сигналами |
Когда выбирать LambdaMART
- Нужна низкая задержка (latency < 50 мс на этап reranking).
- Есть много разнородных признаков (BM25, эмбеддинги, метаданные).
- Требуется интерпретируемость (почему документ поднялся/опустился).
Когда выбирать cross-encoder
- Качество важнее скорости (например, оффлайн-анализ).
- Нет возможности выделять признаки.
- Мало данных для обучения LambdaMART.
6. Преимущества LambdaMART в RAG
- Скорость: инференс на сотнях документов занимает миллисекунды, что критично для real-time RAG.
- Гибкость: можно комбинировать любые признаки — от BM25 до эмбеддингов последней LLM.
- Интерпретируемость: анализ важности признаков помогает понять, какие сигналы наиболее полезны для ранжирования.
- Оптимизация под метрику: LambdaMART напрямую максимизирует NDCG, что хорошо коррелирует с пользовательским опытом (первые результаты — самые релевантные).
7. Ограничения LambdaMART
- Требовательность к данным: нужны размеченные списки документов для каждого запроса (хотя бы 3-5 уровней релевантности). Сбор таких данных дорог.
- Feature engineering: качество модели сильно зависит от того, насколько хорошо выделены признаки. Плохие признаки → плохое ранжирование.
- Не учитывает глубокое семантическое взаимодействие: в отличие от cross-encoder, LambdaMART не «читает» текст пары запрос-документ вместе, а использует только заранее вычисленные признаки.
- Чувствительность к распределению данных: модель может переобучаться на специфические признаки, если датасет мал.
8. Практический пример: обучение LambdaMART для reranking
Задача
У нас есть 10 000 запросов, для каждого — 50 документов с оценками релевантности (0 — нерелевантен, 1 — частично, 2 — полностью). Нужно обучить модель, которая переранжирует top-50 от первого этапа.
Шаги
- Подготовка данных: для каждого документа вычисляем признаки (cosine similarity, BM25, длина, позиция в первом этапе).
- Формирование групп: группируем документы по QueryID.
- Обучение (LightGBM, как в коде выше).
- Оценка: NDCG@5, NDCG@10 на валидации.
- Инференс: на новых запросах получаем скоры для top-50, сортируем по убыванию.
Ожидаемый результат
- NDCG@10 улучшается с 0.65 (baseline — только cosine similarity) до 0.78 после обучения LambdaMART.
- Время reranking 50 документов — 2 мс (против 500 мс для cross-encoder).
9. Альтернативы LambdaMART
- Cross-encoder rerankers: Cohere Rerank, BGE-reranker, monoBERT. Лучшее качество, но медленнее.
- ListNet: нейросетевой listwise метод, но сложнее в обучении.
- SetRank: использует трансформеры для учёта взаимосвязей между документами.
- Гибридные подходы: LambdaMART + cross-encoder как один из признаков.
Пет-проект для закрепления
Задача: Обучить LambdaMART для reranking в RAG на синтетических данных.
Инструменты: Python, LightGBM, pandas, numpy, sentence-transformers (для эмбеддингов), rank_bm25.
Шаги:
- Сгенерировать 500 запросов и 10 000 документов (например, новостные заголовки).
- Для каждого запроса отобрать 20 документов (10 релевантных, 10 нерелевантных) с помощью BM25 + случайного шума.
- Вычислить признаки:
- Создать датасет с QueryID, признаками, target (0/1).
- Обучить LGBMRanker с objective='lambdarank', оценить NDCG@5.
- Сравнить с baseline (только cosine similarity).
Ожидаемый результат: Модель показывает NDCG@5 > 0.8, а baseline — около 0.6. Вы сможете проанализировать важность признаков и понять, как LambdaMART улучшает ранжирование.
Связь с другими вопросами
| Вопрос | Тема |
|---|---|
| 5 | Оффлайн-метрики (NDCG, MRR) — то, что оптимизирует LambdaMART |
| 6 | Общее понятие reranking, место LambdaMART |
| 7 | Скорость LambdaMART как способ снизить задержку |
| 10 | Альтернативный подход к улучшению retrieval |
| 15 | Признаки для LambdaMART могут включать sparse и dense скоры |
| 20 | Fine-tuning bi-encoder улучшает признаки для LambdaMART |
Навигация
- Предыдущий: 370
- Следующий: 372
- Индекс: 00. Индекс разборов