Контексты и RAG — руководство пользователя | YoBench
Как пользоваться модулем «Контексты и RAG» в YoBench: загрузка PDF/DOCX/XLSX, эмбеддинг-провайдеры, LanceDB, подключение к AI-чату.
Что такое модуль «Контексты и RAG»
Модуль превращает ваши документы в базы знаний, доступные AI-чату. Вы создаёте контекст, загружаете в него файлы (PDF, DOCX, XLSX, CSV, изображения) или текст, модуль автоматически режет содержимое на чанки, считает эмбеддинги через выбранный провайдер и сохраняет векторы в локальный LanceDB. При обращении к чату YoBench ищет релевантные чанки и подставляет их в system prompt — модель отвечает по вашим документам, а не из общих знаний.
Что вы получаете:
- Именованные базы знаний — отдельный контекст под каждый проект/тему.
- Поддерживаемые форматы — PDF, DOCX, XLSX/XLS, CSV, TXT, MD, изображения (PNG, JPG, GIF, WebP). Изображения и PDF проходят через встроенный OCR; XLSX/CSV конвертируются в плоский текст по листам.
- Локальный LanceDB — векторы хранятся в
userData/lancedb/, отдельная таблица на каждый контекст (ctx_{id}). - Несколько эмбеддинг-провайдеров — OpenAI, LM Studio, Ollama (любой OpenAI-совместимый эндпоинт). Активен один провайдер; смена → все контексты помечаются
staleи асинхронно переиндексируются. - Подключение к AI-чату — найденные чанки автоматически подставляются в system prompt при первой реплике диалога.
Структура данных
- Контекст —
name,embedding_provider_id,embedding_model(snapshot модели),vectorization_status(ready/stale/indexing/error). - Items контекста — единицы загруженного содержимого: тип (
text/file/image/module_ref),content, метаданные файла,chunk_count. - Векторы (LanceDB) — таблица
ctx_{id}со столбцамиitem_id,chunk_index,text,vector.
Эмбеддинг-провайдеры
В Менеджер контекстов → Embedding-провайдеры добавляете провайдер:
- Имя — произвольная метка.
- Base URL — OpenAI-совместимый
/v1/embeddings-эндпоинт. Примеры:- OpenAI:
https://api.openai.com/v1, модельtext-embedding-3-small. - LM Studio (локально):
http://localhost:1234/v1, модельtext-embedding-nomic-embed-text-v1.5. - Ollama (локально):
http://localhost:11434/v1, модельbge-m3.
- OpenAI:
- API key — если требуется (для локальных серверов часто пустой).
- Модель — имя эмбеддинг-модели на сервере.
Один провайдер помечается активным — он используется для всех контекстов. При смене активного провайдера или модели все существующие контексты помечаются stale и в фоне переиндексируются.
Чанкинг и поиск
Параметры чанкинга зашиты в код:
- Heading-aware чанкинг — для Markdown и структурированного текста сплиттер использует заголовки как точки разреза, чтобы чанк оставался смысловой единицей. Для обычного текста — fallback на чанки фиксированного размера.
- Перекрытие между соседними чанками — сохраняет контекст на стыке.
- Top-K при поиске — по умолчанию 5 чанков на запрос.
Эти параметры не вынесены в UI — они подобраны под типичные модели и большинство нагрузок.
Режимы поиска
Каждая сессия чата выбирает один из двух режимов поиска:
- Быстрый (по умолчанию) — гибридный поиск (vector + keyword) по контексту. Возвращает результат за доли секунды; подходит для повседневных вопросов.
- Точный — тот же гибридный поиск, после которого reranker переупорядочивает топ-кандидатов по релевантности. Чуть медленнее, заметно лучше на длинных или неоднозначных запросах.
Поддерживаемые форматы
| Тип | Что делает модуль |
|---|---|
| OCR через встроенный сервис, извлечение текста по страницам. | |
| DOCX | Извлечение plain text через mammoth. |
| XLSX, XLS, CSV | Конвертация листов в CSV-текст и склеивание. |
| TXT, MD | Чтение «как есть». |
| PNG, JPG, GIF, WebP | OCR-распознавание текста на изображении. |
Подключение к AI-чату
В AI Chat выбираете контекст для беседы. При первой реплике пользователя модуль:
- Передаёт ваш запрос как поисковую фразу в LanceDB.
- Получает top-K чанков из контекста.
- Форматирует их в Markdown-блок (
# Reference context: {name}+## [N] {title}+ текст). - Подставляет в system prompt вместе с заголовком и инструкцией.
На следующих итерациях диалога retrieval не повторяется (контекст уже в system prompt).
Условия пропуска retrieval:
- Контекст в статусе
indexing(ещё не готов). - Нет активного эмбеддинг-провайдера.
- Snapshot модели в контексте не совпадает с активной (после смены провайдера) — нужно дождаться окончания переиндексации.
В таких случаях чат продолжает работать, но без подстановки контекста.
Глобальные настройки
Отдельных ключей context* в общих настройках нет — вся конфигурация хранится в БД (таблицы embedding_providers и contexts). Управляется через сам модуль.
Флоу использования
1. Подключите эмбеддинг-провайдер
- Откройте Менеджер контекстов в левом меню.
- Перейдите в Embedding-провайдеры.
- Добавьте провайдер: имя, Base URL, API key, модель.
- Сделайте его активным.
2. Создайте контекст
- На главной модуля нажмите Новый контекст.
- Введите имя (например, «Документация продукта», «Юридическая база»).
- Сохраните.
3. Загрузите документы
- В контексте нажмите Добавить файл или перетащите файл на панель.
- Поддерживаемые форматы: PDF, DOCX, XLSX, CSV, TXT, MD, PNG/JPG/GIF/WebP.
- Также можно вставить текст напрямую или подключить статью через RSS-модуль.
- Дождитесь завершения индексации (бейдж переключится на «Векторы актуальны»).
4. Подключите контекст к чату
В AI Chat выберите контекст в настройках сессии. Дальше пишите вопросы — модель будет отвечать по вашим документам.
5. Управляйте контекстом
- Удалить элемент — убрать конкретный документ из контекста.
- Переиндексировать — принудительный rebuild векторов для контекста.
- Удалить контекст — удаление вместе с векторной таблицей в LanceDB.
Что дальше
- Настройте AI-провайдеров для генерации ответов.
- Используйте RSS-модуль, чтобы пополнять контексты статьями.
- В Веб-парсере можно собрать данные сайта в JSON и тоже импортировать в контекст.
Помощь и обратная связь
Хотели бы локальные эмбеддинги по умолчанию или гибкий чанкинг из UI? Напишите нам через форму обратной связи.