Библиотека · Память и контекст: чтобы агент не терял нить

RAG — Retrieval Augmented Generation

Строитель60 минОбновлено: октябрь 2026
21 из 105 в библиотеке

Модуль: Токены и контекст | Время: ~30 мин теории + 30 мин практики


Суть урока

Claude умный, но он ничего не знает о твоей компании, твоих клиентах, твоих документах. RAG — это как дать Клоду доступ к твоей личной библиотеке: он может найти нужную книгу за секунду и использовать её при ответе. Без RAG он отвечает из общих знаний. С RAG — из твоих конкретных данных.


Ключевые концепции

  • RAG решает проблему "модель не знает мои данные"
  • Данные превращаются в векторы — математические отпечатки смысла
  • Поиск идёт не по ключевым словам, а по смыслу (семантический)
  • Стек: Gemini Embedding 2 (векторизация) + Pinecone (хранение) + Claude (генерация)

Теория

Проблема которую решает RAG

🎨 Образ: Claude без RAG — как эрудит-энциклопедист которого позвали консультировать твою компанию. Он знает всё о мире, но ничего о твоих клиентах, твоих ценах, твоих правилах. RAG — это папка с документами которую ты даёшь ему перед встречей.

Claude обучен на данных до определённой даты и ничего не знает о твоём бизнесе. Если ты создаёшь агента-консультанта для клиента — агент не знает продукты компании, внутренние правила, историю клиентов. Есть несколько подходов к решению:

Вариант 1: Запихнуть всё в системный промпт Добавить всю документацию прямо в claude.md. Проблемы: ограничение контекстного окна (на октябрь 2026 у Opus 5.5 и Sonnet 5.5 это 1 млн токенов, у Haiku 4.5 окно меньше, см. Актуальное сейчас; большая корпоративная база знаний всё равно не влезет, а качество ответов падает задолго до заполнения окна), дорого (читается при каждом запросе), плохо обновляется. Для небольшой базы это, наоборот, самый простой путь: если материалов немного, положи их в контекст и не строй лишней инфраструктуры.

Вариант 2: Fine-tuning Дообучить модель на твоих данных. Дорого, долго, требует экспертизы, результат непредсказуем. Не для большинства задач.

Вариант 3: RAG Хранить данные отдельно, искать релевантное при каждом запросе, добавлять найденное в контекст. Это правильный подход для большинства задач с внутренними данными.


Как работает RAG: пошагово

Шаг 1: Подготовка данных (Indexing)

🎨 Образ: Embedding — это как составить карту запахов для собаки-ищейки. Текст превращается в "цифровой запах" — вектор. Похожие по смыслу тексты пахнут похоже. Собака (поисковая система) находит нужное по запаху, не по словам.

Ты берёшь свои данные — PDF документы, статьи, страницы сайта, таблицы, изображения, видео — и обрабатываешь их через embedding-модель.

Embedding-модель превращает каждый кусок текста (или изображение, или видео) в вектор — массив из тысяч чисел. Эти числа кодируют смысл содержимого. Тексты с похожим смыслом получают похожие векторы, даже если они написаны разными словами.

Пример: "Как отменить подписку" и "Процедура расторжения договора" — разные слова, но одинаковый смысл. Векторы будут близки.

Шаг 2: Хранение векторов (Vector Database)

🎨 Образ: Векторная база данных — это библиотека где книги расставлены не по алфавиту, а по смыслу. Книги про "любовь" стоят рядом, даже если написаны на разных языках. Обычная база данных так не умеет.

Все полученные векторы сохраняются в векторной базе данных — Pinecone. Это специализированная база данных оптимизированная именно для поиска по векторам.

Каждый вектор хранится вместе с исходным текстом и метаданными (источник, дата, категория). Так когда вектор найден — ты можешь достать оригинальный текст.

Шаг 3: Поиск (Retrieval)

Когда пользователь задаёт вопрос — вопрос тоже превращается в вектор (той же embedding-моделью). Затем в базе данных ищутся N самых близких векторов по математическому расстоянию (cosine similarity).

Результат: топ-3 или топ-5 документов которые семантически ближе всего к вопросу.

Шаг 4: Обогащение и генерация (Augment + Generate)

Найденные документы добавляются в контекст перед запросом к Claude:

Код
Вот релевантные документы из базы знаний:
[Документ 1: Условия возврата товара...]
[Документ 2: FAQ по отмене подписки...]

Ответь на вопрос пользователя, используя информацию из этих документов:
"Как мне вернуть товар купленный 3 месяца назад?"

Claude видит конкретные данные и отвечает на их основе — не из общих знаний.


Google Gemini Embedding 2: мультимодальность

🎨 Образ: Мультимодальные эмбеддинги — как переводчик который понимает не только текст, но и жесты, картины и музыку. Показываешь ему фото сломанной детали — он находит похожее в каталоге даже без слов.

Для векторизации в этом стеке используется Google Gemini Embedding 2 (идентификатор модели gemini-embedding-2) — embedding-модель с мультимодальными возможностями. На октябрь 2026 она вышла из предварительной версии в стабильную. Есть и предыдущая, только текстовая модель gemini-embedding-001.

Что это означает практически:

  • Текстовые документы → вектор ✅
  • Изображения (JPG, PNG) → вектор ✅
  • Видео → вектор ✅
  • Аудио → вектор ✅
  • PDF-документы → вектор ✅

Это открывает возможности которых нет в текстовых embedding-моделях: база знаний с изображениями продуктов, видео-инструкции, голосовые заметки — всё это становится доступным для поиска.

Пример: компания производящая технику хранит фотографии всех моделей. Пользователь загружает фото сломанного прибора — система находит похожие изображения в базе и определяет модель даже без названия.


Pinecone: почему векторная база данных, а не обычная

Обычная база данных (PostgreSQL, MySQL) умеет искать по точным совпадениям: "найди записи где category = 'FAQ'". Она не умеет искать по смыслу.

Pinecone оптимизирован для одной задачи: "найди N векторов ближайших к этому вектору". Поиск работает за миллисекунды даже по миллионам векторов. Это cloud-based решение — не надо разворачивать свою инфраструктуру.

Альтернативы: Weaviate (open source), Qdrant (open source, можно self-host), pgvector (расширение для PostgreSQL), Chroma (локально для разработки). Pinecone хорош для старта — простая интеграция, есть бесплатный план Starter с ограничениями по объёму и числу операций.


Процесс создания RAG-системы

  1. Подготовь данные — собери документы, статьи, FAQ, изображения которые должна знать система
  2. Разбей на чанки — большие документы разбиваются на куски ~500 слов (с перекрытием ~50 слов). Это важно: целый документ в одном векторе хуже чем несколько чанков с конкретными темами
  3. Создай индекс в Pinecone — через API создаёшь "пространство" для хранения
  4. Загрузи векторы — для каждого чанка получаешь вектор через Gemini Embedding 2, загружаешь в Pinecone
  5. Создай интерфейс запросов — функция которая принимает вопрос, ищет в Pinecone, добавляет в контекст Claude
  6. Тестируй — задаёшь вопросы, проверяешь качество ответов, корректируешь

Когда RAG нужен, когда нет

RAG нужен:

  • Агент-консультант по продуктам/услугам компании
  • Поиск по корпоративной базе знаний
  • Вопросы по специфическим документам (юридические, технические)
  • Персонализированные рекомендации на основе истории

RAG не нужен:

  • Задачи где Claude и так знает всё (общие вопросы, программирование)
  • Если вся нужная информация помещается в claude.md
  • Одноразовые задачи где данные не меняются

Реальные применения RAG

База знаний компании — сотрудник спрашивает "как оформить командировочные?" — агент находит нужный раздел HR-политики и объясняет своими словами.

Агент-консультант интернет-магазина — покупатель описывает проблему с товаром — агент находит похожие случаи в базе решений и предлагает конкретный шаг.

Юридический ассистент — юрист загружает пакет договоров, задаёт вопрос "есть ли в этих договорах форс-мажорные оговорки?" — система находит релевантные пункты.

Поддержка на основе тикетов — агент видел тысячи похожих вопросов от клиентов — находит аналогичные и использует ответы которые уже помогли.


Практика

Задание: простая RAG-система на текстах

Для практики создадим небольшую RAG-систему без внешних сервисов — используя локальное хранилище.

  1. Создай папку knowledge-base/ в проекте с 5-7 текстовыми файлами по теме которую хорошо знаешь (например FAQ по твоим услугам)
  2. Попроси Claude Code: "Создай простую RAG-систему которая ищет по файлам в knowledge-base/. При запросе — находит наиболее релевантный документ и отвечает на его основе. Используй TF-IDF для поиска (без внешних API)."
  3. Протестируй: задай вопрос который есть в одном из документов, затем вопрос которого нет
  4. Для полноценного стека с Pinecone + Gemini Embedding: создай аккаунт на pinecone.io (бесплатный план Starter), получи API ключ (храни его в .env, не в чате), попроси агента мигрировать систему

Сравнение embedding-моделей

Модель Модальности Стоимость (на октябрь 2026) Лучше для
Google Gemini Embedding 2 Текст + изображения + видео + аудио + PDF Есть бесплатный уровень с лимитами; платные цены на странице цен Gemini API Мультимодальные базы знаний
Voyage AI (семейство voyage-4) Текст (высокое качество), есть мультимодальные модели Есть бесплатный стартовый объём; актуальные цены на сайте Voyage AI Точный семантический поиск по тексту
OpenAI text-embedding-3-small Текст Невысокая цена за токены; см. страницу цен OpenAI Бюджетный вариант, текст
OpenAI text-embedding-3-large Текст (высокое качество) Дороже small-модели; см. страницу цен OpenAI Максимальная точность по тексту

Сравнение векторных баз данных

Условия бесплатных планов меняются: актуальные цены и версии смотри на сайтах сервисов и на странице Актуальное сейчас.

База Тип Бесплатный план Лучше для
Pinecone Cloud План Starter с лимитами Продакшн, простая интеграция
Chroma Локальная Бесплатно Разработка, прототипы
Qdrant Self-host / Cloud Бесплатно (self-host) Полный контроль, open source
Weaviate Self-host / Cloud Self-host бесплатно, облако см. страницу цен Сложные запросы, GraphQL
pgvector Расширение PostgreSQL Бесплатно Если уже есть PostgreSQL

Инструменты и ресурсы

  • Pinecone — векторная база данных, бесплатный стартовый план
  • Google Gemini Embedding 2 — через Google AI API, мультимодальная embedding модель
  • Anthropic: Embeddings — официальное руководство по эмбеддингам для Claude (там же ссылка на пример RAG с Pinecone)
  • LangChain / LlamaIndex — Python фреймворки упрощающие создание RAG-пайплайнов
  • Chroma — локальная векторная база для разработки (без регистрации)
  • Voyage AI — embedding-модель с высокой точностью; своей embedding-модели у Anthropic нет, документация Anthropic ссылается на Voyage
  • OpenAI text-embedding-3-small — альтернативная embedding-модель (только текст, дешевле)

Частые ошибки

🎨 Образ: RAG без тестирования — как открыть ресторан и решить что всё хорошо потому что первые два клиента не пожаловались. Десятый клиент попросит то чего нет в меню — и тут начнутся проблемы.

Ошибка 1: Слишком большие чанки Загрузил целые документы по 5000 слов как один вектор. Результат: поиск находит документ, но нерелевантную часть. Оптимальный размер чанка: 300-500 слов с перекрытием 50-100 слов.

Ошибка 2: RAG когда хватает CLAUDE.md Если у тебя 10 правил и 5 шаблонов — запихни в CLAUDE.md. RAG нужен когда данных заметно больше, чем разумно держать в контексте (окно на октябрь 2026: 1M токенов у Opus 5.5 и Sonnet 5.5, меньше у Haiku 4.5, а качество проседает раньше заполнения). Для маленьких баз знаний RAG — overkill.

Ошибка 3: Не тестировать качество ответов Настроил RAG, один вопрос проверил — работает. Но на 10 разных вопросах 3 ответа неточные. Создай набор из 15-20 тестовых вопросов с правильными ответами и проверяй качество систематически.


Перекрёстные ссылки


Ключевые выводы

RAG — это мост между огромными знаниями Claude и специфическими данными твоего бизнеса. Без RAG агент умный, но слепой к твоей конкретной реальности.

Векторный поиск ищет по смыслу, не по словам. Это принципиально отличает RAG от простого grep или CTRL+F — пользователь может спросить своими словами и всё равно найдёт нужное.

Mультимодальность (текст + изображения + видео) открывает применения которые невозможны с текстовыми эмбеддингами. Возможность новая, и её стоит попробовать на своих материалах.


Следующий урок

→ Сайты и веб-приложения с нуля: от промпта до готового сайта

Отметка хранится только в этом браузере и никуда не отправляется. Мой прогресс