NeyrixNEYRIXGUIDE← Карта путиTelegram ↗
УРОВЕНЬ PROДЛЯ ПРАКТИКОВ14–20 мин3 ИЗ 6

PRO.03

RAG и собственная база знаний

РЕЗУЛЬТАТ УРОКА

Спроектировать retrieval-систему с источниками и оценкой качества.

Главное за 30 секунд

RAG помогает модели отвечать на основе выбранных документов, но качество зависит от данных, поиска, инструкций и оценки ответов.

Разбираемся

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

Два контура системы

1. Индексация — заранее, при изменении документов

ДокументыPDF, вики, база
Чанки200–500 слов + путь заголовков
Embeddingsвекторы
Векторная БДметаданные и права

2. Запрос — в реальном времени

Вопросот пользователя
Поискtop-k, фильтр прав в самом запросе
Промптвопрос + найденные чанки
Ответ со ссылками
Где ломается чаще всего
Нарезкачанк без заголовка теряет контекст
Правафильтр после поиска — утечка уже случилась
Свежестьстарая версия рядом с новой
RAG не отменяет галлюцинациимодель может смешать найденный чанк со своими обучающими данными. Инструкция «отвечай только по контексту» снижает риск, но не убирает.

Главное: качество ответа закладывается на индексации: нарезка, права в самом запросе и актуальность важнее промпта.

Индексация идёт заранее и повторяется при изменении документов. Запрос работает в реальном времени и укладывается в сотни миллисекунд, потому что векторы уже посчитаны.

Chunks и embeddings

Документы нарезаются на фрагменты (chunks) — обычно 200–500 слов с перекрытием. Каждый фрагмент преобразуется в числовой вектор (embedding), который кодирует смысловое содержание. Похожие по смыслу фрагменты имеют близкие векторы. Качество нарезки напрямую влияет на качество поиска: слишком мелкие фрагменты теряют контекст, слишком крупные — снижают точность.

Наивная нарезка против осмысленной

КритерийНарезка по счётчикуНарезка по структуре
ГраницыГде закончился счётчик — иногда посреди словаПо заголовкам, абзацам, пунктам списка
Контекст фрагмента«...с 1 марта 2026 года ставка составляет» — про что речь, неизвестноВ каждый чанк добавлен путь: «Тарифы → Корпоративный → Изменения»
ТаблицыРазрываются: строки в одном чанке, заголовки в другомТаблица целиком или строки с продублированной шапкой
Что видит модельОбрывок, который выглядит осмысленнымСамодостаточный фрагмент с явным источником
Типичный сбойУверенный ответ по фрагменту не из того разделаОтвет со ссылкой, которую можно проверить

Как выглядит фрагмент, который работает

Практическое правило нарезки: каждый фрагмент должен быть понятен человеку, который увидел только его. Фраза «с 1 марта ставка составляет 12%» этому не соответствует — непонятно, для кого ставка и к какому разделу относится. Тот же фрагмент с приписанным сверху путём «Тарифы → Корпоративный → Изменения 2026» становится самодостаточным. Второе правило — перекрытие: соседние фрагменты захватывают часть друг друга, чтобы мысль, попавшая на границу, не потерялась. Дублирование текста здесь дешевле потерянного ответа.

Retrieval и vector search

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

Права доступа: где именно ставится фильтр

В корпоративной системе разные люди должны видеть разные документы, и здесь есть развилка, которая определяет, будет утечка или нет. Правильный вариант: права учитываются в самом поисковом запросе — система ищет только среди доступных этому человеку документов, недоступные физически не попадают в результат. Неправильный: система ищет по всей базе, а потом отбрасывает лишнее в коде приложения. Во втором случае утечка уже произошла: закрытый текст побывал в памяти процесса, мог попасть в журналы, в отладочную информацию, в сообщение об ошибке. Разница в одну строку реализации и принципиальная в последствиях.

Качество данных и freshness

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

Инструкция, которая не даёт додумыватьтекст инструкции для модели
Отвечай ТОЛЬКО на основе фрагментов в блоке КОНТЕКСТ.Если ответа в контексте нет - напиши: "В базе знаний нет ответа на этот вопрос".Не используй общие знания. Не додумывай. Не объединяй факты из разныхфрагментов, если они относятся к разным разделам.После каждого утверждения указывай источник.Если фрагменты противоречат друг другу - сообщи об этом и приведи оба.

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

Как измерить качество до запуска

Красивый ответ — не метрика. Нужен набор вопросов с заранее известными ответами: 30–50 штук достаточно, чтобы увидеть системные проблемы.

  1. Собрать вопросы из реальностиНе выдуманные, а из переписки поддержки, чатов, обращений. Для каждого зафиксировать правильный ответ и документ-источник.
  2. Проверить поиск отдельно от ответаНашлись ли нужные фрагменты вообще? Если нет — проблема в нарезке, и правка инструкции не поможет. Это две разные поломки, лечатся по-разному.
  3. Добавить вопросы без ответа5–10 вопросов, ответа на которые в базе заведомо нет. Система должна сказать «не знаю». Если она отвечает — она придумывает, и на реальных данных будет делать то же.
  4. Проверить ссылкиНе только «ответ верный», но и «источник указан правильно». Верный ответ с чужой ссылкой означает, что модель угадала.
  5. Прогнать от разных пользователейОдин и тот же вопрос от сотрудника и от подрядчика. Разные ответы — фильтр прав работает. Одинаковые — утечка.
  6. Записать результат до измененийИначе после правки инструкции невозможно сказать, стало лучше или просто по-другому.

Что спросить у исполнителя

6 пунктов

Шесть вопросов, которые отличают базу знаний от «чата с папкой».

  • Если в ответе нет слова «заголовки» или «структура» — нарезка по счётчику символов, и уверенные ответы не из того раздела будут регулярно.
  • Правильный ответ: «в поисковом запросе». Ответ «фильтруем результаты» означает, что закрытый текст уже прошёл через систему.
  • Если она остаётся в базе, система будет отвечать по отменённым правилам — уверенно и со ссылкой.
  • «Попробовали несколько» — не проверка. Нужен зафиксированный набор с известными ответами.
  • Если она всегда что-то отвечает — она придумывает. Правильное поведение: явное «не знаю».
  • Резкий рост ответов «не знаю» означает поломку. Без наблюдения за этим поломка обнаруживается по жалобам.
Отмечайте пункты по ходу разговора: отметки сохранятся.

Наблюдение после запуска

Метрики продолжают жить: доля ответов «не знаю» (резкий рост означает поломку индексации), доля ответов без ссылки, вопросы, на которые поиск не нашёл ничего подходящего. Последние — самый ценный источник: они показывают, каких документов в базе не хватает.

ПРИМЕР

Ответ правильный, документ — прошлогодний

Ситуация. База знаний по тарифам: 400 документов, нарезка по 500 символов без сохранения заголовков. Вопрос «какая ставка для корпоративных клиентов» получает уверенный ответ «12%» со ссылкой на документ.

Результат. 12% — ставка из документа, отменённого полгода назад: старая версия осталась в индексе, а чанк без пути по документу выглядел так же убедительно, как актуальный. Два изменения закрывают проблему: путь заголовков внутри текста чанка и удаление старых версий из индекса при обновлении. Найти это можно было до запуска — набором из 20 вопросов с известными ответами.

ПРАКТИКА

Сделайте сейчас

Составьте план пилота для одной реальной задачи: набор из 10–20 документов, правило нарезки с указанием, откуда берётся контекст заголовков, ответ на вопрос «на каком этапе учитываются права», 20 тестовых вопросов с известными ответами и источниками, из них 5 — без ответа в базе. Затем пройдите мысленно по первому вопросу всю цепочку и найдите шаг, где не хватает данных или решения. Этот шаг и есть настоящий объём работы.

ОГРАНИЧЕНИЯ

Где нужен человек

  • RAG не является защитой от галлюцинаций: модель может добавить информацию из своих обучающих данных.
  • Без актуальных и структурированных документов RAG не даст качественных результатов.
  • Фильтр прав доступа после поиска — это уже утечка: недоступный текст побывал в памяти и логах.

Смежные уроки

Материал проверен: 20 августа 2026. Инструменты и тарифы меняются — сверяйтесь с первоисточником.