TGViewer
Ebout Data Science | Дима Савелко Ebout Data Science | Дима Савелко @eboutdatascience · 7.57K subscribers
Post #191 3.93K
Уничтожение RAG - ML System Design 😁

Давайте пойдем по базе из этого поста, ещё можете чекнуть этот пост с разбором MLSD для обучения LLM

Как отвечать на вопрос вопрос: «Постройка мне Retrieve модель в RAG»? Давайте разбираться!

1️⃣ В начале разработки MLSD важно понять, что нам нужно сделать, поэтому в первую очередь формулируем задачу и ограничения.

Задача
Построить Retrieve модель для рага в e-commerce. Мы большой магазин навоза и нам надо рекомендовать товар по запросу пользователя в LLM. Напомню, retrieve модель - это штука, которая на основе запроса пользователя ищет подходящий контекст, чтобы засунуть в ЛЛМ.

Ограничения:
Ограничения: Минимальная задержка (<35 сек.), иначе пользователь ливнёт и поставит нашему сервису какашку 💩

2️⃣ Метрики
Бизнесовые метрики 📞
➡️Conversion Rate - доля пользователей, совершивших покупку после взаимодействия с чат-ботом.
➡️Average Order Value (AOV) / Средний чек - средняя сумма покупки после взаимодействия с ботом (или в сравнении с пользователями, которые не общались с ботом).

Онлайн-метрики:
➡️Удовлетворенность клиентов (CSAT) — пользовательская оценка (1–5).
➡️CTR - процент кликов по товарам/категориям, которые Retrieval-модуль (и далее LLM) порекомендовал.

Оффлайн метрик:
➡️Precision@k: Доля релевантных документов среди топ-k результатов поиска.
➡️ROC-AUC: способность модели отделять релевантные документы от нерелевантных
➡️mAP, nDCG - Метрики ранжирования

3️⃣ Что там с данными? Откуда и сколько их получить, и как поделить на Train/Test ?
Источник:

Мы большой магазин навоза и нам ну прям нужен RAG, то скорее всего мы доросли до того момента, когда у нас есть своя БД с описанием сортов навоза и их уникальных особенностей - 5 млн записей 😋

Разметка:
Для Retrieve модели нам нужно получить данные: «запрос → релевантные документы». нанимаем копирайтера - Валюху, которая будет размечать нам данные. Но Валюха просит много рублей за свою работу, а мы не можем ей дать столько денег, то можем сделать начальную разметку с помощью TF-IDF или других BERT-like моделей.

Train/Test:
Случайно поделить на train/val/test (например, 70/15/15 - именно так мы должны разбивать навоз!) 🍫

4️⃣ Построение пайплайна обучения
BaseLine:
Сначала нужно сделать самое простое решение в качестве затычки. Нашей затычкой будет Elasticsearch на основе TF-IDF, который будет возвращать top-k=5 чанков. Чанк делим на 256 токенов или по структуре данных.

Норм решение для продажи навоза 💪
Гибридный подход - TF-IDF & ANN + E5 & Cosine Similarity + Reranker
Заранее считаем все эмбеддинги BM25 и E5 и храним всё в БД - Faiss, ChromeDB.
➡️Поступил запрос, находим 1000 ближайших записей на основе TF-IDF & ANN - то есть пихаем эмбеддинги TF-IDF в ANN, и получаем кластер из 1000 ближайших элементов к запросу. Считаем precision@k, k = 1000 - количество релевантных документов из всех элементов в кластере.
➡️Среди 1000 найденных записей находим топ 10 элементов с помощью E5 и cosine sim. Метрика: precision@k, k = [10, 5, 3, 1].
➡️Переранжируем эти 10 элементов обученной моделькой: CatBoost, LambdaRank или энкодер. Измеряем ROC-AUC, mAP, nDCG - если есть разметка.

Как обучать модели:
➡️ TF-IDF - обучаем свой токенайзер и на всём корпусе документов обучаем TF-IDF. Для экономии памяти можем через PCA сжать эмбеддинги.
➡️ E5 - X: (Query, Positive Doc, Negative Doc - синтетику генерим с помощью GPT, проверяем через G-Eval и копирайтеров), y: метки релевантности (Positive, Negative), Loss: Triplet Loss - он сближает релевантные пары с навозом и отдаляет нерелевантные.

ReRanker:
X: (Query, Document) + доп. фичи (score BM25/ANN/E5, клики, цена, популярность и т.д.).
y: бинарная (релевант/нерелевант) или градуированная (0–5). Loss: Pairwise Ranking (LambdaRank), Cross-Entropy (если классификация) или Listwise (nDCG-based).

5️⃣ A/B-тесты и мониторинг
Количество семплов: 1000, Train/Test = 70/30%, Онлайн-метрика: CTR, CSAT

Итог:
Вот мы и построили базовый документ модели ретривы в RAG`е для магазина навоза, который ещё можно дорабатывать. Если он вам был полезен, то надеюсь вы им воспользуетесь на собесах по MLSD 🐹
  • 👏 21
  • ❤ 7
  • 🍌 4
  • 🔥 3
  • 🥰 1
More from @eboutdatascience
  1. Sep 24, 2026Нужна ваша помощь - собираем данные для нас же 👒 Так как я копаюсь в рынке найма, IT и DS…
  2. Sep 23, 2026Мы чуть не сдохли, но собрали симулятор Дата Суетолога 😮😮😮 В прошлом посте показал, как…
  3. Sep 22, 2026Найм, накрутка и ИИ всех заменит - эфир с лидом из Сбера 🌟 На созвонах с учениками и ребя…
  4. Sep 19, 2026Друзья, нужна ваша помощь У нашего ученика Вадима нашли рак ободочной кишки в 19 лет. Несм…
  5. Sep 16, 2026С помощью чего бедолаги получают оффер - коммьюнити 🥷 Что происходит под капотом получени…
  6. Sep 14, 2026ЖЁСТКОЕ Собеседование по DS/ML: Accuracy, Precision, Recall, F1, ROC-AUC, PR-AUC 👀 Почти…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →