Ограничения классических рекомендательных систем
Классическая теория рекомендательных систем выделяет три семейства подходов.
-
Коллаборативная фильтрация (collaborative filtering) формирует рекомендации на основе совпадения оценок и действий пользователей. Различают user-based и item-based схемы; последняя, предложенная в Sarwar et al., 2001, устойчивее к разреженности матрицы оценок. Дальнейшим развитием стали матричные факторизации, например SVD++ из Koren et al., 2009, ставший отраслевым стандартом после Netflix Prize.
-
Контентная фильтрация (content-based) опирается на признаки самих объектов: жанр, автор, ключевые слова, текст аннотации. В простейшем виде сходство измеряется через TF-IDF и косинусное расстояние.
-
Гибридные модели, систематизированные в Burke, 2002, комбинируют оба сигнала, частично смягчая холодный старт.
Все три подхода эффективны в своей постановке, однако обладают общими ограничениями, которые становятся критичными, как только пользователь формулирует запрос в свободной форме.
Во-первых, проблема холодного старта: коллаборативная фильтрация неприменима для нового пользователя без истории и для новой книги без оценок. Во-вторых, отсутствие объяснения: коллаборативный подход в принципе не способен обосновать рекомендацию иначе как «похожие пользователи поставили высокую оценку», тогда как для читателя отсутствие понятного обоснования снижает доверие к системе – это показано в литературе по объяснимости рекомендаций (Tintarev & Masthoff, 2015). В-третьих, и это наиболее существенно, классические модели не интерпретируют запрос на естественном языке.
В качестве иллюстрации можно рассмотреть запрос «медленный детектив в старинной английской усадьбе» или «научная фантастика о моральном выборе в духе Урсулы Ле Гуин». Такой запрос содержит одновременно жанровый, стилистический и атмосферный ориентиры, причём ни один из них не зафиксирован в каталоге в готовом виде. Признаки запроса и признаки объекта существуют в разных представлениях, и классическая модель не способна их сопоставить. Эту ситуацию далее будем называть проблемой холодного запроса: затруднение вызвано не отсутствием истории, а тем, что сам запрос выражен свободным текстом.
|
|
Свободный запрос |
Холодный старт |
Объяснение выбора |
|
Коллаборативная |
— |
— (нужна история) |
— |
|
Контентная |
частично |
+ по объектам |
слабо |
|
Гибридная |
частично |
частично |
слабо |
|
RAG |
+ |
+ |
+ |
Решение состоит в переходе от лексического сопоставления к семантическому, а формирование объяснения возлагается на языковую модель. Именно из этих двух компонентов и состоит RAG.
Архитектура RAG и её соответствие задаче
Термин Retrieval-Augmented Generation введён в Lewis et al., 2020. В оригинальной работе извлечённые документы подавались в seq2seq-модель с маргинализацией по ним; в современной, наиболее распространённой форме найденные документы помещаются в контекст большой языковой модели – этот вариант систематизирован в обзоре Gao et al., 2023. В обоих случаях схема одна: «поиск → формирование контекста → генерация».
-
Поиск. По векторной базе извлекаются наиболее релевантные документы (в данном случае – карточки книг).
-
Контекст. Найденное конкатенируется в текстовый ввод для языковой модели.
-
Генерация. Модель формирует ответ, опираясь на этот контекст, а не только на параметры своих весов.
Ключевое свойство схемы – снижение галлюцинаций: модель отвечает с опорой на найденный материал, а не порождает его из памяти. Для рекомендаций это принципиально, поскольку языковая модель, отвечая напрямую, способна выдумать несуществующую книгу или приписать ей чужой сюжет. RAG привязывает ответ к реальным записям каталога.
Сопоставление свойств RAG с ограничениями классических рекомендательных систем даёт следующую картину:
-
семантический поиск на плотных эмбеддингах интерпретирует свободный запрос, сопоставляя смысл запроса и смысл описания, а не пересечение слов;
-
контентная природа поиска (по описанию книги, а не по истории) снимает холодный старт по объектам: новая книга индексируется сразу;
-
генеративная ступень формирует объяснение, почему книга соответствует запросу;
-
привязка к источнику сдерживает галлюцинации.
Таким образом, RAG закрывает весь перечень ограничений, ради преодоления которых обычно строятся сложные гибридные модели. При этом в литературе RAG применительно к рекомендациям обсуждается заметно реже, чем RAG для вопросно-ответных задач: большинство работ и обзоров (например, обзор Gao et al., 2023) сосредоточено на знание-интенсивных и QA-сценариях. Рекомендация по свободному запросу с объяснением по своей сути является типичной RAG-задачей, обладающей рядом особенностей, которые в литературе проговариваются нечасто.
Отличия рекомендательного RAG от вопросно-ответного
При переносе вопросно-ответного RAG-пайплайна на каталог проявляются три особенности.
Целевой объект – не фрагмент текста, а карточка. В вопросно-ответных задачах извлекаются фрагменты документов. В рекомендации единицей поиска выступает связка «название + автор + жанры + описание», которую необходимо векторизовать так, чтобы вектор оставался плотным, но информативным. В рассматриваемой системе в эмбеддинг-модель подаётся структурированная строка вида Title: … Author: … Genres: … Description: …, что позволяет модели использовать название, автора и жанровый ориентир параллельно с описанием, а не только текст аннотации.
Ответ должен содержать обоснование на каждую позицию. Если в вопросно-ответной задаче достаточно одного ответа, то здесь результат представляет собой ранжированный список из 3–5 книг, и к каждой требуется обоснование «почему подходит», привязанное к запросу. Это предъявляет требования к промпту и формату генерации, а не только к ступени поиска.
Многоязычность запроса и контента. Типичный сценарий: запрос на русском языке при англоязычном каталоге (например, открытый набор Goodreads). Прямое сопоставление работает, но с потерей точности, поскольку распределения векторов разных языков смещены относительно друг друга. Эта особенность, как правило, отсутствует в англоязычных вопросно-ответных сценариях.
Практическая реализация
Архитектура RAG-рекомендателя двухфазна, что характерно для RAG-приложений в целом. Офлайн-фаза однократно строит индекс; онлайн-фаза обслуживает запросы.
На офлайн-фазе каталог загружается, очищается, каждая книга кодируется эмбеддинг-моделью и записывается в векторный индекс. На онлайн-фазе запрос векторизуется той же моделью, индекс возвращает k ближайших соседей по косинусному сходству, после чего языковая модель формирует ответ с объяснением.
Выбор компонентов рассматривается ниже как иллюстрация типовых инженерных развилок, а не как обоснование единственно верного стека.
В качестве модели эмбеддингов выбрана multilingual-e5-base (Wang et al., 2022). Семейство E5 обучено на задаче поиска: пары (query, passage) подаются с разными префиксами, что формирует асимметричные представления для запросов и документов – подход, восходящий к Dense Passage Retrieval (Karpukhin et al., 2020). Размерность 768 представляет собой компромисс между качеством и объёмом памяти, а мультиязычность закрывает русско-английский сценарий.
В качестве индекса использован точный перебор (FAISS IndexFlatIP): на корпусе порядка 16 тысяч книг точный поиск укладывается в десятки миллисекунд, а приближённые индексы (IVF, HNSW) с их настройкой гиперпараметров здесь избыточны. Это существенный инженерный момент: приближённый поиск необходим на сотнях тысяч и миллионах записей, тогда как на корпусе академического масштаба он лишь усложняет систему без выигрыша.
Языковая модель запускается локально (gemma3:4b через Ollama), что снимает зависимость от облака и вопросы конфиденциальности – это часто критично для библиотечных и образовательных сценариев. Взаимодействие с моделью реализовано через OpenAI-совместимый интерфейс, поэтому замена локальной модели на облачную сводится к смене трёх переменных окружения, что обеспечивает технологическую нейтральность к провайдеру.
Пример выдачи
Качество retrieval-ступени удобно показать на конкретных запросах. На запрос «медленный детектив в старинной английской усадьбе» (после перевода – «slow-paced detective novel set in an old English mansion») в верхние позиции попадают классические британские детективы: романы Агаты Кристи, Дороти Сэйерс, Сирила Хэйра. На запрос «научная фантастика о моральном выборе» система возвращает «Левую руку Тьмы» Урсулы Ле Гуин, произведения Лоис Макмастер Буджолд и «Стальные пещеры» Айзека Азимова. На англоязычный запрос «a coming-of-age story about loss and resilience» – «A Tree Grows in Brooklyn», «The Perks of Being a Wallflower», «The Outsiders». Отбор согласуется с интуитивным ожиданием, что подтверждает: мультиязычная модель E5 формирует представления, согласующиеся с человеческим восприятием сходства книг.
Поток онлайн-запроса и устойчивость
Отдельного внимания заслуживает graceful degradation – постепенное снижение функциональности без полного отказа. Языковая модель является наиболее медленным и наименее надёжным компонентом. При сбое генерации (модель недоступна, истёк таймаут) система не возвращает ошибку, а отдаёт найденный список книг без обоснования – с названиями, авторами, жанрами и рейтингом, то есть с полной информацией для самостоятельного выбора. Поиск работает всегда, объяснение – по возможности. Для производственного использования это свойство существенно.
Источники качества в рекомендательном RAG
Наибольшее влияние на итоговое качество оказывает retrieval-ступень: именно от неё зависит, попадут ли в контекст языковой модели корректные книги, и никакая генерация не компенсирует ошибочный поиск. Ниже рассмотрены три рычага, существенно влияющих на качество.
Переписывание запроса: translate и HyDE
Короткий запрос на русском языке и развёрнутое английское описание книги плохо стыкуются в векторном пространстве. Выравнивание выполняется одним из двух способов:
-
translate – буквальный перевод запроса на язык корпуса средствами языковой модели. Простой, быстрый и предсказуемый способ.
-
HyDE (Hypothetical Document Embeddings, Gao et al., 2023) – вместо короткого запроса в индекс подаётся гипотетическое описание книги, сгенерированное языковой моделью по запросу. Эмбеддинг такого псевдоописания ближе к распределению реальных аннотаций, чем эмбеддинг короткой фразы.
Небольшое сравнение на десяти контрольных запросах выявило следующую закономерность. На бытовых запросах (жанровый ориентир и лаконичное описание настроения) разница между режимами невелика. На развёрнутых запросах с несколькими признаками одновременно (жанр, автор, тематика, эпоха) HyDE начинает превосходить translate: гипотетическое описание содержит вспомогательные ключевые слова, повышающие вероятность совпадения с реальным описанием. Платой выступают дополнительный вызов языковой модели и меньшая предсказуемость, поэтому по умолчанию используется режим translate как разумный компромисс. Средняя длина переписанного запроса составляет 8–14 слов для translate и 60–90 слов для HyDE.
Плотный поиск, гибридный поиск и реранкинг
Плотные эмбеддинги хорошо улавливают смысл, но проигрывают на редких именах собственных и узкой терминологии – там, где важно точное совпадение токенов. Классическим решением является гибридный поиск: объединение плотного поиска с лексическим BM25 (Robertson & Zaragoza, 2009) с последующим повторным ранжированием верхних результатов более тяжёлой cross-encoder-моделью, кодирующей пару «запрос – документ» совместно (Nogueira & Cho, 2019).
Это та же логика, что и в вопросно-ответном RAG, однако для каталога она особенно уместна: названия книг и имена авторов представляют собой именно тот случай, когда лексическое совпадение незаменимо, а смысловая близость сама по себе недостаточна. В рассматриваемой системе оба механизма – лексический поиск BM25 и cross-encoder-реранкинг – реализованы отдельными модулями и подключаются опционально.
Количественные результаты
Качество извлечения измерено на наборе из 64 эталонных запросов трёх типов: семантические (описание сюжета), точные (по автору или названию) и русскоязычные. Релевантность определялась по совпадению названия или автора найденной книги с ожидаемым – то есть оценивался именно поиск, без участия языковой модели. Сравнивались две конфигурации: плотный поиск (только E5 + FAISS) и полный конвейер ранжирования (плотный поиск + лексический BM25 со слиянием рангов + cross-encoder-реранкинг).
|
Конфигурация |
Hit@1 |
Hit@5 |
MRR |
nDCG@10 |
|
Плотный поиск |
0,52 |
0,69 |
0,589 |
0,624 |
|
Полный конвейер ранжирования |
0,58 |
0,86 |
0,689 |
0,735 |
Добавление лексического поиска и реранкинга поднимает nDCG@10 с 0,624 до 0,735 (+0,111) и Hit@5 с 0,69 до 0,86: релевантная книга заметно чаще попадает в первую пятёрку и располагается выше в выдаче. Это согласуется с известными по литературе оценками – cross-encoder-реранкинг обычно добавляет порядка +4…7 пунктов nDCG@10 (Nogueira & Cho, 2019), а гибридизация с BM25 особенно помогает на точных запросах по автору и названию (Robertson & Zaragoza, 2009). Для систематической оценки уже генеративной ступени применим протокол вроде RAGAS.
Помимо качества извлечения, в прототипе измерялись временные характеристики (процессор Intel Core i5 12-го поколения, локальная модель gemma3:4b на CPU):
Сборка индекса для 15 851 книги занимает около 17 минут (разовая офлайн-операция), повторная загрузка готового индекса – порядка секунды. Ответ на запрос через API формируется за 2–4 секунды с использованием языковой модели и за 0,5–1 секунду в режиме без неё. Таким образом, вычислительно затратной является только генерация, тогда как сам семантический поиск практически бесплатен. Из этого следует, что узкое место рекомендательного RAG приходится на ступень языковой модели, и оптимизировать в первую очередь следует именно её.
Подготовка данных
Отдельного внимания заслуживает этап, который в руководствах по RAG обычно опускается, – подготовка данных. В открытом наборе Goodreads описания книг содержали дублирующийся префикс (обрезанная копия описания перед полным текстом – в 84% непустых записей), а поле жанров всегда начиналось с 58 шаблонных рубрик, и лишь затем следовали реальные жанры. Без очистки этот шум попадает в индекс и напрямую ухудшает качество поиска. После предобработки (удаление дубля, отбрасывание шаблонных рубрик, фильтрация слишком коротких описаний) из 20 068 исходных записей осталось 15 851 – отброшено около 21%. В рекомендательном RAG качество векторизации карточки определяет результат не меньше, чем выбор модели.
Границы применимости
RAG не является заменой коллаборативной фильтрации в тех сценариях, где последняя сильна. Границы применимости подхода целесообразно очертить явно.
-
При наличии богатой истории взаимодействий и задаче предсказания следующего действия (например, формирование главной страницы) классическая коллаборативная фильтрация и матричные факторизации дают лучший результат при меньших затратах. Сильная сторона RAG проявляется именно в сценарии «свободный запрос с объяснением».
-
Генерация требует ресурсов. Ступень языковой модели – это секунды и/или оплата по числу токенов на каждый запрос, что существенно для высоконагруженных лент.
-
Масштаб корпуса меняет инженерные решения: точный индекс пригоден на десятках тысяч записей, тогда как на миллионах необходим приближённый поиск (IVF, HNSW) и пересмотр всей экономики системы.
-
RAG не обеспечивает персонализацию по истории сам по себе – для этого его необходимо комбинировать с коллаборативным сигналом.
Наиболее сильным представляется гибридный сценарий: коллаборативный сигнал отвечает за то, что обычно нравится данной категории пользователей, а RAG – за то, что соответствует конкретному запросу и сопровождается объяснением.
Заключение
RAG прочно ассоциируется с вопросно-ответными системами, однако его внутренняя механика – семантический поиск в сочетании с генерацией на основе источника – адресно устраняет слабые места классических рекомендательных систем: неспособность интерпретировать свободный запрос, холодный старт по объектам и отсутствие объяснимости. При этом рекомендательный RAG не сводится к вопросно-ответному: он обладает собственной спецификой в представлении объекта-карточки, в требовании обоснования на каждую позицию и в многоязычности.
На примере рекомендательной системы книг видно, что подход обеспечивает работоспособное и объяснимое решение, а основные рычаги качества – переписывание запроса, гибридный поиск и реранкинг – переносятся из вопросно-ответного RAG напрямую. Данное направление пока недоиспользовано и потому представляет интерес для дальнейшей проработки.
ссылка на оригинал статьи https://habr.com/ru/articles/1050196/