RAG не только для вопросов и ответов: почему он естественно подходит для рекомендаций. faiss.. faiss. llm.. faiss. llm. machine learning.. faiss. llm. machine learning. Natural Language Processing.. faiss. llm. machine learning. Natural Language Processing. nlp.. faiss. llm. machine learning. Natural Language Processing. nlp. python.. faiss. llm. machine learning. Natural Language Processing. nlp. python. rag.. faiss. llm. machine learning. Natural Language Processing. nlp. python. rag. информационный поиск.. faiss. llm. machine learning. Natural Language Processing. nlp. python. rag. информационный поиск. Машинное обучение.. faiss. llm. machine learning. Natural Language Processing. nlp. python. rag. информационный поиск. Машинное обучение. рекомендательные системы.. faiss. llm. machine learning. Natural Language Processing. nlp. python. rag. информационный поиск. Машинное обучение. рекомендательные системы. эмбеддинги.

Retrieval-Augmented Generation (RAG) чаще всего рассматривается в контексте вопросно-ответных систем и чат-ботов поверх базы знаний. Большинство публикаций и руководств по RAG посвящено схеме «вопрос – ответ с опорой на документы». Однако внутренняя механика RAG – семантический поиск в сочетании с генерацией ответа на основе найденного – хорошо ложится и на другую задачу, которую традиционно решают иными методами: на рекомендации.

Цель настоящей статьи – показать, что RAG представляет собой недоиспользованный, но обоснованный инструмент для рекомендательных систем, и разобрать, на каких именно ограничениях классических рекомендателей он выигрывает и где проходят его границы. В качестве сквозного примера рассматривается рекомендательная система книг по запросу в свободной форме. При этом основным предметом рассмотрения является сам подход, а не конкретная реализация.

Ограничения классических рекомендательных систем

Классическая теория рекомендательных систем выделяет три семейства подходов.

  • Коллаборативная фильтрация (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. В обоих случаях схема одна: «поиск → формирование контекста → генерация».

  1. Поиск. По векторной базе извлекаются наиболее релевантные документы (в данном случае – карточки книг).

  2. Контекст. Найденное конкатенируется в текстовый ввод для языковой модели.

  3. Генерация. Модель формирует ответ, опираясь на этот контекст, а не только на параметры своих весов.

Ключевое свойство схемы – снижение галлюцинаций: модель отвечает с опорой на найденный материал, а не порождает его из памяти. Для рекомендаций это принципиально, поскольку языковая модель, отвечая напрямую, способна выдумать несуществующую книгу или приписать ей чужой сюжет. RAG привязывает ответ к реальным записям каталога.

Сопоставление свойств RAG с ограничениями классических рекомендательных систем даёт следующую картину:

  • семантический поиск на плотных эмбеддингах интерпретирует свободный запрос, сопоставляя смысл запроса и смысл описания, а не пересечение слов;

  • контентная природа поиска (по описанию книги, а не по истории) снимает холодный старт по объектам: новая книга индексируется сразу;

  • генеративная ступень формирует объяснение, почему книга соответствует запросу;

  • привязка к источнику сдерживает галлюцинации.

Таким образом, RAG закрывает весь перечень ограничений, ради преодоления которых обычно строятся сложные гибридные модели. При этом в литературе RAG применительно к рекомендациям обсуждается заметно реже, чем RAG для вопросно-ответных задач: большинство работ и обзоров (например, обзор Gao et al., 2023) сосредоточено на знание-интенсивных и QA-сценариях. Рекомендация по свободному запросу с объяснением по своей сути является типичной RAG-задачей, обладающей рядом особенностей, которые в литературе проговариваются нечасто.

Отличия рекомендательного RAG от вопросно-ответного

При переносе вопросно-ответного RAG-пайплайна на каталог проявляются три особенности.

Целевой объект не фрагмент текста, а карточка. В вопросно-ответных задачах извлекаются фрагменты документов. В рекомендации единицей поиска выступает связка «название + автор + жанры + описание», которую необходимо векторизовать так, чтобы вектор оставался плотным, но информативным. В рассматриваемой системе в эмбеддинг-модель подаётся структурированная строка вида Title: … Author: … Genres: … Description: …, что позволяет модели использовать название, автора и жанровый ориентир параллельно с описанием, а не только текст аннотации.

Ответ должен содержать обоснование на каждую позицию. Если в вопросно-ответной задаче достаточно одного ответа, то здесь результат представляет собой ранжированный список из 3–5 книг, и к каждой требуется обоснование «почему подходит», привязанное к запросу. Это предъявляет требования к промпту и формату генерации, а не только к ступени поиска.

Многоязычность запроса и контента. Типичный сценарий: запрос на русском языке при англоязычном каталоге (например, открытый набор Goodreads). Прямое сопоставление работает, но с потерей точности, поскольку распределения векторов разных языков смещены относительно друг друга. Эта особенность, как правило, отсутствует в англоязычных вопросно-ответных сценариях.

Практическая реализация

Архитектура RAG-рекомендателя двухфазна, что характерно для RAG-приложений в целом. Офлайн-фаза однократно строит индекс; онлайн-фаза обслуживает запросы.

Двухфазная архитектура 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 формирует представления, согласующиеся с человеческим восприятием сходства книг.

Поток онлайн-запроса и устойчивость

Поток обработки запроса с откатом при сбое LLM

Поток обработки запроса с откатом при сбое LLM

Отдельного внимания заслуживает 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 напрямую. Данное направление пока недоиспользовано и потому представляет интерес для дальнейшей проработки.

Автор: danyakr

Источник