AI и машинное обучение

Учебник RAG и векторные базы данных для начинающих

25 уроков · 6 разделов · бесплатно, без регистрации

Курс о том, как дать большой языковой модели доступ к вашим данным через Retrieval-Augmented Generation. От проблем LLM и эмбеддингов до векторных баз, чанкинга, извлечения с цитированием и продакшн-практик. Ядро RAG — косинусную близость, векторный поиск и чанкинг — вы напишете руками на чистом Python.

Курс «RAG и векторные базы данных» состоит из 6 разделов и 25 уроков: Зачем нужен RAG, Эмбеддинги и близость, Векторные базы данных, Подготовка данных (индексация), Извлечение и генерация и Качество, проблемы и продакшн. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.

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

  1. 1 Зачем нужен RAG

    1. Проблема LLM: знания, галлюцинации и контекст

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

    2. Идея RAG: найти, подставить, ответить

      Суть Retrieval-Augmented Generation: найти релевантные фрагменты в своей базе, вставить их в промпт и заставить LLM отвечать с опорой на контекст.

    3. RAG против дообучения: когда что выбирать

      Чем RAG отличается от fine-tuning, какие задачи решает каждый подход и почему их часто комбинируют.

    4. Архитектура RAG-пайплайна: обзор

      Две фазы RAG — индексация (offline) и извлечение с генерацией (online): из каких компонентов состоит пайплайн и как они связаны.

  2. 2 Эмбеддинги и близость

    1. Что такое эмбеддинг: текст как вектор смысла

      Эмбеддинг превращает текст в вектор чисел, где близость в пространстве отражает близость по смыслу. Разбираем интуицию на координатах.

    2. Косинусная близость: считаем похожесть руками

      Косинус угла между векторами — главная метрика похожести в RAG. Считаем её на чистом Python и видим, как ранжируются тексты по смыслу.

    3. Модели эмбеддингов и размерность

      Обзор моделей эмбеддингов (OpenAI, sentence-transformers и др.), что такое размерность вектора и как выбрать модель под RAG.

    4. Почему близкие по смыслу тексты близки в пространстве

      Дистрибутивная семантика: как обучение на контекстах заставляет синонимы и связанные понятия оказываться рядом в векторном пространстве.

  3. 3 Векторные базы данных

    1. Зачем нужна векторная база данных

      Полный перебор по миллионам векторов слишком медленный. Векторная БД хранит эмбеддинги и быстро находит ближайших соседей по смыслу.

    2. Приближённый поиск соседей (ANN): идея HNSW и IVF

      Approximate Nearest Neighbors жертвует крошечной точностью ради огромной скорости. Разбираем интуицию графов HNSW и кластеров IVF.

    3. Метрики близости: косинус, L2 и скалярное произведение

      Три способа измерять близость векторов в векторных БД: косинус, евклидово расстояние L2 и dot product. Когда какую выбирать.

    4. Наивный векторный поиск своими руками

      Собираем мини-«векторную базу» на чистом Python: полный перебор по косинусной близости и выдача top-k ближайших чанков.

    5. Обзор решений: Pinecone, Chroma, FAISS, pgvector, Qdrant

      Сравнение популярных векторных хранилищ: библиотека FAISS, локальная Chroma, расширение pgvector, облачный Pinecone и Qdrant.

  4. 4 Подготовка данных (индексация)

    1. Загрузка и парсинг документов

      Первый шаг индексации: собрать документы из разных форматов (PDF, HTML, Markdown) и вытащить из них чистый текст для дальнейшего чанкинга.

    2. Чанкинг: режем текст на фрагменты с перекрытием

      Стратегии разбиения текста на чанки: фиксированный размер, по предложениям и абзацам, перекрытие (overlap). Запускаемый пример чанкинга руками.

    3. Метаданные: контекст вокруг чанка

      Зачем к каждому чанку прикреплять метаданные (источник, дата, раздел) и как они включают фильтрацию выдачи и цитирование источников.

    4. Построение индекса: качество чанков решает всё

      Финал индексации: эмбеддим чанки и кладём в векторный индекс. Почему именно качество чанкинга, а не модель, чаще всего определяет качество ответов.

  5. 5 Извлечение и генерация

    1. Запрос → эмбеддинг → top-k: мини-retrieval

      Рантайм-фаза RAG: превращаем вопрос в вектор, ищем k ближайших чанков. Полностью запускаемый мини-retriever на чистом Python.

    2. Сборка промпта: как вставить контекст

      Augment-шаг RAG: как из найденных чанков и вопроса собрать промпт, который заставит LLM отвечать по контексту, а не из памяти.

    3. Генерация ответа и цитирование источников

      Generate-шаг: LLM пишет ответ строго по контексту и ссылается на источники. Как устроено цитирование и почему оно повышает доверие.

    4. Гибридный поиск и реранкинг

      Как улучшить извлечение: гибрид векторного поиска и ключевых слов (BM25) плюс реранкинг — переупорядочивание кандидатов более точной моделью.

  6. 6 Качество, проблемы и продакшн

    1. Оценка RAG: извлечение и верность ответа

      Как измерять качество RAG: метрики извлечения (recall@k, precision) и генерации (верность контексту, отсутствие галлюцинаций).

    2. Типичные проблемы и потеря в середине

      Частые провалы RAG: плохой чанкинг, нерелевантный контекст и эффект «потери в середине» (lost in the middle) в длинном контексте.

    3. Продвинутый RAG: query rewriting, multi-query, HyDE

      Приёмы улучшения извлечения через работу с запросом: переписывание запроса, мульти-запрос и HyDE (гипотетический документ).

    4. Продакшн: агентный RAG, стоимость, инструменты и чек-лист

      Финал курса: агентный RAG, управление стоимостью и латентностью, обзор LangChain/LlamaIndex и практический чек-лист запуска RAG в прод.