RAG под капотом

Девять уроков, в которых мы пишем поиск своими руками: от инвертированного индекса и TF-IDF до векторного, гибридного поиска и RAG с самокоррекцией.
Средний уровень
Сертификат Stepik

Чему вы научитесь

  • Писать базовые алгоритмы поиска по шагам
  • Измерять качество поиска, понимая, что скрывается за каждой метрикой.
  • Собирать векторный поиск на FAISS.
  • Совмещать лексический и семантический поиск и объединять две выдачи через Reciprocal Rank Fusion.
  • Нарезать документы на чанки смыслу.
  • Собрать RAG-пайплайн без фреймворка и на LangChain/LangGraph

О курсе

В далеком 2007 году в Екатеринбурге прошла первая российская летняя школа по информационному поиску (RUSSIR), и автору (тогда студентке 5-го курса) посчастливилось принять в ней участие.

После этого тема моего диплома была предрешена – мне пришлось написать с нуля полноценный поисковик. Потом мне еще дважды довелось писать поисковики с нуля – в аспирантуре и при работе над грантовым проектом по конкурсу «У.М.Н.И.К.» Фонда содействия инновациям.

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

На конференции молодых ученых в МГУ один маститый преподаватель, выслушав мой доклад, сказал: «Понимаете, вы это никогда не автоматизируете. Это как любовь, как весна». И в тех реалиях он был прав.

А потом пришла эпоха больших языковых моделей, и внезапно оказалось, что NLP отлично поддается автоматизации.

Пришло время пересмотреть подход к классическому информационному поиску. Этот курс – небольшая попытка комплексного взгляда на весь процесс – от булева поиска до RAG и CRAG. Автор уверен, что лучший способ что-то понять – написать это руками. Впрочем, до фреймворков (LangChain/LangGraph) мы еще доберемся, но только в последнем уроке. В курсе намеренно сделан упор на самописном коде, чтобы читатель запомнил, как все устроено.

Это курс не о том, как собрать RAG за час из готовых кубиков. Это курс о том, почему RAG устроен именно так. Примерно две трети курса - это классический информационный поиск: индексы, ранжирование, морфология, метрики качества, LSA, эмбеддинги, приближённый поиск ближайших соседей. Собственно RAG появляется в уроках 7-9. Так сделано намеренно: без этой базы RAG остается просто красивой аббревиатурой.

Для кого этот курс

Для тех, кто уже пишет RAG. Для тех, кто никогда не писал свой RAG, но хочет написать. Для тех, кто готовится к собеседованиям по NLP и поиску: TF-IDF, BM25, NDCG, HNSW спрашивают до сих пор.

Начальные требования

  • Python на базовом уровне: функции, списки, словари, циклы, работа с файлами. Опыт в ML и знание фреймворков не нужны - все вводится по ходу изложения.
  • Немного школьной математики: логарифм и скалярное произведение. Все остальное объясняется в тексте.
  • Библиотеки ставятся по ходу курса через pip: numpy, nltk, pymystem3, rank_bm25, scikit-learn, faiss-cpu, langchain.
  • Ключ OpenRouter и небольшой баланс - понадобится в уроках 5, 7 и 8, где считаются эмбеддинги и вызывается языковая модель. Расход на весь курс - около пары долларов (используются самые дешевые модели: text-embedding-3-small и gpt-4o-mini). Подойдет и любой другой OpenAI-совместимый провайдер - в коде меняется только base_url.

Как проходит обучение

Теория чередуется с тестами так, чтобы подводить читателя к очередному повороту мысли. То, о чем догадался сам, запоминается гораздо лучше.

Каждый алгоритм сначала пишется руками на чистом Python - десять-двадцать строк, которые можно запустить, сломать и починить, - и только потом мы смотрим, как то же самое делает готовая библиотека.

Что вы напишете своими руками:

  • токенизацию, матрицу «термин - документ» и инвертированный индекс;
  • ранжирование по частоте, IDF, TF-IDF;
  • векторную модель, евклидово расстояние, а затем косинусную меру и нормировку на длину документа;
  • BM25 - сначала формулу с параметрами k1 и b, потом то же самое на rank_bm25;
  • стеммер Портера для русского языка, потом используем SnowballStemmer из nltk и лемматизацию через mystem;
  • метрики качества поиска: P@k, R@k, F1, Average Precision, MAP, DCG/IDCG/NDCG. Затем сверите свои реализации со sklearn.metrics.ndcg_score и ranx;
  • LSA через SVD на чистом NumPy, затем эмбеддинги через API;
  • векторный поиск: k-means и индекс IVF, HNSW, FAISS;
  • гибридный поиск и слияние выдач через Reciprocal Rank Fusion;
  • собственный чанкер с перехлестом и семантический чанкинг по смысловому ключу;
  • полноценный RAG-пайплайн без единого фреймворка;
  • и только после этого - то же самое на LangChain (LCEL) и самокорректирующийся RAG на LangGraph.

Программа курса

В курс входят

  • 9 уроков
  • 36 тестов
загружаем...

Наши преподаватели

Certificate

Сертификат

Stepik

Отзывы прошедших курс

4
из 5
из 2 отзывов
2 отзыва
загружаем...

Сколько стоит обучение

1 490 ₽
Вы попробовали и поняли, что вам сейчас не подходит этот курс? Ничего страшного, мы вернём вам деньги в течение 30-ти дней после покупки.

Часто задаваемые вопросы

Расскажите о курсе друзьям

1 490 ₽