База знаний
RAG простыми словами: коллекции, документы, embedding, чанкинг, поиск.
Вы загружаете документы (PDF, Word, таблицы). Агент читает их перед каждым ответом и цитирует нужные куски. Бот отвечает по вашим документам, а не выдумывает. Это второй по важности компонент платформы после агента.
Зачем это нужно
LLM знает общий мир: Википедию, новости, программирование, историю. Но не знает вашу компанию — ваши тарифы, регламенты, FAQ, прайс-лист 2026 года, условия договоров, внутренние процедуры.
Если просто спросить — агент начнёт выдумывать правдоподобно, и клиент поверит. Это называется «галлюцинации LLM» и это самая большая проблема чат-ботов без RAG.
Сравнение — бот без базы знаний vs с ней
Клиент: Сколько стоит установка холодильника? Агент: Обычно установка стоит около 5 000 рублей.
(Бот взял цифру с потолка. У вас на самом деле — от 3 200 до 7 500 в зависимости от типа. Клиент записался, приехал мастер — выяснилось, что надо 7 500, скандал.)
Клиент: Сколько стоит установка холодильника? Агент: (платформа находит в «Прайс-лист 2026.pdf») Установка холодильника зависит от типа:
- Простая установка (без подключения к электросети) — 3 200 ₽.
- С подключением к розетке — 5 800 ₽.
- Расширенная (с тестированием и инструктажем) — 7 500 ₽. Какая вам подойдёт?
(Точный ответ по вашему актуальному прайсу. Клиент заранее знает, что его ждёт.)
Что ещё даёт база знаний
Консистентность ответов
Один и тот же вопрос разным клиентам получает одинаковый ответ. Нет «повезло с оператором».
Актуальность
Изменили прайс? Заменили один PDF в базе — все боты сразу обновились. Без пересборки, без редактирования промптов.
Снижение галлюцинаций
В промпт можно добавить: «отвечай строго по найденным материалам, не выдумывай». Точность растёт с 70% до 95%+.
Compliance
Все ответы привязаны к источнику — можно показать клиенту ссылку на пункт регламента. Критично для юр. услуг, медицины, банков.
Масштабирование знаний
Загрузили 1000 документов — агент находит нужный абзац за миллисекунды. Живой оператор не помнит всё.
Multi-language
Agent отвечает на языке клиента, используя документы, загруженные на любом языке. Кросс-языковой поиск работает.
Как это работает (RAG)
RAG (Retrieval-Augmented Generation) — «генерация с опорой на найденное». Академическое название технологии.
Три шага
Индексация (один раз, при загрузке)
- Вы загружаете документ (PDF, Word, Excel).
- Платформа разбивает его на чанки — куски по 500-1500 символов.
- Каждый чанк превращается в вектор (embedding) — список из ~1500 чисел, представляющих смысл.
- Вектора сохраняются в Qdrant — специализированную векторную БД.
Это одноразовая операция. Документ загрузили → через 10-30 секунд он готов к поиску.
Поиск (при каждом запросе клиента)
- Клиент задал вопрос.
- Платформа превращает вопрос в вектор той же embedding-моделью.
- Qdrant находит top-N ближайших векторов (обычно N=5) среди всех загруженных чанков.
- Это кусочки документов, смысл которых ближе всего к вопросу.
Занимает 50-200 миллисекунд.
Генерация (ответ)
- Найденные кусочки добавляются в системный промпт: «Вот релевантные материалы: [ваш чанк 1], [ваш чанк 2], …».
- LLM генерирует ответ, опираясь на эти материалы.
- Клиент получает точный ответ по вашей фактуре.
Визуализация
Шаг 1 — Индексация (офлайн):
[Документы] → [Чанкер] → [Embedding-модель] → [Qdrant]
↓ ↓
куски 1000 векторы
символов [0.12, -0.34, 0.91, ...]
Шаг 2 — Поиск (при запросе клиента):
[Вопрос клиента] → [Embedding-модель] → [Qdrant: найди ближайшие]
↓
[5 релевантных чанков]
↓
[добавлены в промпт LLM]
↓
[Ответ клиенту]Embedding — математическая функция, превращающая текст в список чисел. Два текста с похожим смыслом превращаются в близкие вектора. Это как «координаты смысла» на многомерной карте. Именно это позволяет искать «по смыслу», а не по точному совпадению слов.
Коллекции
Коллекция — папка документов с общей темой. Основная единица организации знаний в платформе.
Зачем делить на коллекции
Плохо: одна гигантская коллекция со всеми документами компании подряд.
Почему:
- Агент поддержки получает в контекст кусочки из юр-документов → путается.
- Агент продаж видит регламенты HR → ответы странные.
- Невозможно дать разным агентам разный доступ.
Хорошо: коллекции по темам, каждому агенту — только нужное.
Типичное разделение
product-docs— инструкции по продуктам, описания услуг.pricing— прайс-листы, тарифные планы.faq— часто задаваемые вопросы клиентов.internal-policies— внутренние регламенты (не показываем клиенту, но используем как контекст).legal— юр. документы (договоры, оферты).hr— кадровые документы (для HR-бота).
Привязка к агенту
В настройках агента отмечаете галочками доступные коллекции:
- Агент поддержки — видит
faq+product-docs. - Юр-бот — только
legal. - HR-бот для соискателей — только
hr. - Менеджер по продажам —
pricing+product-docs.
Агент ищет только в привязанных коллекциях. Это даёт:
- Точность. Не находит «лишнее».
- Безопасность. HR-бот не увидит тайн продаж.
- Скорость. Поиск в 1 коллекции быстрее поиска по всей базе.
Форматы документов
Платформа принимает и обрабатывает:
- PDF — включая сканы. Для отсканированных файлов применяется OCR (оптическое распознавание текста). Качество OCR зависит от разрешения скана и языка.
- Word (.docx) — с форматированием, таблицами, списками.
- Excel / CSV — каждая строка становится чанком. Полезно для каталогов, таблиц цен.
- Markdown / TXT — plain text с минимальной разметкой.
- HTML — очищается от тегов, извлекается текст.
- PowerPoint (.pptx) — текст из слайдов, заголовки, заметки.
- Изображения (PNG, JPG) — через OCR, если на картинке есть текст.
Лимит на файл: 50 МБ на Free-плане, 200 МБ на Pro, без лимита на Enterprise.
Что лучше работает
- Markdown и чистый текст — идеальная ситуация, RAG работает максимально точно.
- Word с текстом — отлично.
- PDF с текстовым слоем — хорошо.
- Отсканированный PDF с OCR — средне, зависит от качества скана.
- Презентации — обычно плохо: мало текста, много картинок и графики. Лучше экспортировать в PDF после заполнения.
- Таблицы с большой плотностью данных (прайс-листы в Excel) — подход «строка = чанк» работает, но для сложных таблиц лучше преобразовать в текст.
Как подготовить документы правильно
- Структурируйте — заголовки разделов, подзаголовки. RAG лучше режет структурированные тексты.
- Убирайте воду — «Уважаемый клиент, рады вас приветствовать в нашей компании…» — на поиск не влияет, а контекст съедает.
- Обновляйте регулярно — при изменении цен / условий / регламентов сразу заменяйте документ в базе.
- Называйте по-человечески —
Прайс-лист_апрель_2026.pdfлучше чемdoc_v3_final_FINAL.pdf.
Добавление документов
Раздел «Знание» в основном меню
В сайдбаре слева → Знание.
Создайте новую коллекцию
Нажмите «Новая коллекция». Заполните:
- Имя — человеческое («Прайс-листы», «FAQ по продуктам»).
- Описание — одна строка для коллег.
- Embedding-модель — обычно уже выбрана по умолчанию для воркспейса.
Загрузите файлы
Перетащите файлы в область загрузки. Можно сразу много.
Индексация идёт в фоне
Для каждого файла создаётся задача в очереди BullMQ (воркер
knowledge-index). Обычно 1 файл = 10-30 секунд. Большой PDF (100+
страниц) = 1-3 минуты.
Вы видите статусы по каждому документу:
queued— в очереди, ждёт воркера.indexing— обрабатывается.indexed✅ — готов, участвует в поиске.failed❌ — ошибка (обычно битый PDF, превышен размер).
Можно закрыть страницу
Индексация идёт независимо. Вернётесь позже — всё будет готово.
Привяжите коллекцию к агенту
В настройках агента → Коллекции знаний → отметьте галочкой.
С этого момента агент будет искать в ней при каждом разговоре.
Чанкинг — как документы режутся
Документ нельзя проиндексировать целиком — LLM не впихнёт 100-страничный PDF в своё контекстное окно. Документ режут на чанки — куски по 500-1500 символов.
Настройки чанкинга
В настройках коллекции:
- Размер чанка (chunkSize) — максимум символов на кусок. По
умолчанию
1000. Для очень структурированных документов —500, для длинных связных текстов —1500. - Перекрытие (overlap) — сколько символов соседние чанки
перекрывают друг друга. По умолчанию
150. Это нужно, чтобы важная фраза не попала «на стык» и не потерялась. - Стратегия резки:
- semantic — режет по логическим границам (параграф, секция, заголовок). Лучший вариант для большинства документов.
- fixed — режет каждые N символов без оглядки на смысл. Подходит для однородных данных (логи, таблицы без структуры).
Когда менять настройки
Оставьте дефолты. Работает для 90% случаев. Настройки меняйте только если на реальных вопросах поиск даёт плохие результаты.
Стоит увеличить chunkSize, если:
- Документы — длинные связные тексты (инструкции, регламенты).
- Поиск находит обрывки мысли, где нужен полный контекст.
Стоит уменьшить chunkSize, если:
- Документы — таблицы или справочники (каждая запись уже целостна).
- Контекст LLM забивается слишком большими чанками.
Перекрытие больше (200-300), если:
- Важные фразы часто попадают «на стык» чанков.
Перекрытие меньше (50-100), если:
- Экономите на размере базы (Qdrant хранит перекрытия дважды).
Embedding-модель
За превращение текста в вектор отвечает embedding-модель. Это отдельная модель от основного LLM — она только считает векторы, не генерирует текст.
Выбор для русского языка
Оптимум: bge-m3 (self-hosted). Бесплатная, качество для русского —
отличное, мультиязычная.
Альтернативы:
text-embedding-3-small(OpenAI) — дёшево, быстро, но для русского чуть хужеbge-m3.text-embedding-3-large(OpenAI) — точнее, но в 6× дороже. Оправдано только при огромной базе документов.nomic-embed-text(self-hosted) — универсальный, удобно в Ollama.
Выбор для английского
Оптимум: text-embedding-3-small — дёшево, хорошо.
Для максимальной точности: text-embedding-3-large.
Выбор для специфичных доменов
- Медицина —
BioBERT,PubMedBERT(self-hosted). - Юриспруденция —
LegalBERT. - Финансы —
FinBERT.
Для нишевых доменов специализированные embedding дают +20-30% точности поиска.
Настройка
В Настройки → Модели → Провайдер эмбеддингов — выбираете модель. Применяется для всех новых коллекций.
Поменяли embedding-модель → надо переиндексировать всю базу. Векторы разных моделей несовместимы — точки одной модели не находят совпадений с точками другой. Платформа предупредит, но процесс долгий: от 10 минут на маленькой базе до нескольких часов на большой.
Как агент использует знание
Пошагово, что происходит при каждом разговоре с клиентом:
Клиент задаёт вопрос
«Сколько стоит установка холодильника с подключением?»
Платформа берёт вопрос
Он идёт в embedding-модель → получается вектор.
Qdrant ищет ближайшие чанки
Среди всех коллекций, привязанных к агенту. По умолчанию возвращает top-5 ближайших. Каждый чанк имеет score (близость, от 0 до 1).
Фильтр по порогу близости
Если score < 0.3 — кусок не релевантен, отбрасывается. Лучше не дать агенту неточное знание, чем дать неправильное.
Найденное добавляется в промпт
К системному промпту агента добавляется блок:
Вот материалы из базы знаний, которые могут помочь:
[Прайс-лист 2026.pdf, стр. 3]: "Установка холодильника:
простая — 3 200 ₽, с подключением к электросети — 5 800 ₽,
расширенная — 7 500 ₽..."
[Регламент установки.docx]: "Мастер должен проверить наличие
заземления перед подключением..."
Используй эту информацию в ответе.LLM генерирует ответ
Опираясь на эти материалы. Клиент получает точный ответ по вашей фактуре.
Агент не цитирует документы буквально — он их переформулирует. Чтобы заставить цитировать точно, в промпте добавьте: «Отвечай цитатами из базы знаний, не перефразируй. Если точного ответа в базе нет — так и скажи: "уточню у коллеги"».
Тонкие настройки поиска
В настройках агента можно изменить:
- Количество чанков для поиска (top-K) — по умолчанию 5. Увеличьте до 10-15, если у вас большая база и часто не хватает контекста.
- Порог близости (similarity threshold) — по умолчанию 0.3. Поднимите до 0.5 если видите «мусорные» совпадения. Опустите до 0.2 если ничего не находит.
Поиск вручную — для отладки
Главный инструмент для отладки RAG.
Знание → Коллекция → вкладка «Поиск». Вводите запрос, видите:
- Найденные чанки — в порядке релевантности.
- Score — насколько близко (от 0 до 1, больше — лучше).
- Документ и страница — откуда взят чанк.
Алгоритм отладки «бот отвечает неправильно»
Шаг 1: повторите вопрос в поиске вручную
Найдёт ли платформа правильный чанк на ваш реальный вопрос клиента?
Шаг 2: если НЕ находит правильное
Проблема в индексации или поиске.
Варианты:
- Документ не загружен в эту коллекцию.
- Документ есть, но статус
failed(ошибка индексации). - Документ
indexed, но embedding слабый для вашего языка/домена. - В документе не тот текст — OCR плохо отработал на скане.
Фиксы:
- Проверьте наличие и статус документа.
- Попробуйте лучшую embedding-модель (
bge-m3для русского). - Для сканов — улучшите качество скана или перепечатайте.
Шаг 3: если находит правильное, но агент всё равно отвечает неправильно
Проблема в промпте агента.
- Агент не использует найденное. В системный промпт: «ВСЕГДА используй материалы из базы знаний в ответе. Не игнорируй их.»
- Агент выдумывает поверх найденного. В промпт: «Если материал найден, цитируй его дословно или перефразируй близко. Не добавляй фактов, которых нет в материалах.»
- Агент «перемешивает» материалы из разных мест. Уменьшите top-K с 5 до 3.
Шаг 4: измеряйте точность на реальных кейсах
Соберите 20-30 реальных вопросов клиентов + правильные ответы. Прогоните каждый через бота → посчитайте долю правильных. Это ваша baseline accuracy. Улучшения сверяйте с ней.
Паттерны работы с знанием
Паттерн «живой прайс»
Задача: цены меняются еженедельно, не хочется ручками обновлять Excel.
Решение:
- В CRM / ERP экспортируйте прайс в CSV автоматически (cron).
- В платформе — автоматический
automation-flowпо расписанию: «раз в день скачай CSV → заменяй в коллекцииpricing→ переиндексируй».
Результат: цены всегда актуальные, ручной работы — 0.
Паттерн «версионированный регламент»
Задача: юр. документы меняются, нужна история версий.
Решение:
- Коллекция
legal-current— только актуальные документы. - Коллекция
legal-archive— старые версии с датами. - Юр-бот смотрит только в
legal-current.
При смене документа: старый переезжает в archive, новый кладётся в current. История сохраняется, бот всегда отвечает по актуальному.
Паттерн «многоязычная база»
Задача: клиенты пишут на русском, английском, казахском — нужны ответы на их языке.
Решение:
- Одна коллекция с документами на любом языке — embedding
bge-m3умеет в кросс-языковой поиск. - В промпт агента: «Отвечай на том же языке, на каком задан вопрос».
Агент находит релевантный материал на английском, клиент получает ответ на русском — всё автоматически.
Паттерн «FAQ + инструкции разного уровня»
Задача: одни вопросы требуют короткого ответа, другие — детального разбора.
Решение:
- Две коллекции:
faq-short(короткие ответы) иproduct-docs(длинные инструкции). - В промпт: «Сначала ищи в FAQ — если есть точный ответ, цитируй его коротко. Если FAQ не покрывает — ищи в product-docs и давай развёрнутый ответ.»
Квоты
| План | Макс. документов | Макс. объём | Макс. векторов |
|---|---|---|---|
| Free | 100 | 50 МБ | 10 000 |
| Pro | 10 000 | 5 ГБ | 1 000 000 |
| Enterprise | без лимита | по договору | по договору |
Что такое «векторы»: количество чанков × количество векторов на чанк. Один документ на 100 страниц = ~500 чанков = 500 векторов. На Pro хватает на ~2000 больших PDF.
Частые ошибки
Метрики здоровья базы знаний
Критичные для мониторинга:
| Метрика | Здоровое | Тревога |
|---|---|---|
| Доля вопросов с релевантными чанками | 80-95% | <60% — расширяйте базу |
| Средний score найденных чанков | 0.5-0.8 | <0.3 — embedding слабый |
| Доля галлюцинаций (ответ не соответствует базе) | <5% | >15% — жёстче промпт |
| Время поиска | <200ms | >500ms — огромная база, пересмотрите архитектуру |
| Документов с ошибкой индексации | 0% | >5% — проверьте форматы / OCR |