Скачать

Контексты и 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.
  • API key — если требуется (для локальных серверов часто пустой).
  • Модель — имя эмбеддинг-модели на сервере.

Один провайдер помечается активным — он используется для всех контекстов. При смене активного провайдера или модели все существующие контексты помечаются stale и в фоне переиндексируются.

Чанкинг и поиск

Параметры чанкинга зашиты в код:

  • Heading-aware чанкинг — для Markdown и структурированного текста сплиттер использует заголовки как точки разреза, чтобы чанк оставался смысловой единицей. Для обычного текста — fallback на чанки фиксированного размера.
  • Перекрытие между соседними чанками — сохраняет контекст на стыке.
  • Top-K при поиске — по умолчанию 5 чанков на запрос.

Эти параметры не вынесены в UI — они подобраны под типичные модели и большинство нагрузок.

Режимы поиска

Каждая сессия чата выбирает один из двух режимов поиска:

  • Быстрый (по умолчанию) — гибридный поиск (vector + keyword) по контексту. Возвращает результат за доли секунды; подходит для повседневных вопросов.
  • Точный — тот же гибридный поиск, после которого reranker переупорядочивает топ-кандидатов по релевантности. Чуть медленнее, заметно лучше на длинных или неоднозначных запросах.

Поддерживаемые форматы

Тип Что делает модуль
PDF OCR через встроенный сервис, извлечение текста по страницам.
DOCX Извлечение plain text через mammoth.
XLSX, XLS, CSV Конвертация листов в CSV-текст и склеивание.
TXT, MD Чтение «как есть».
PNG, JPG, GIF, WebP OCR-распознавание текста на изображении.

Подключение к AI-чату

В AI Chat выбираете контекст для беседы. При первой реплике пользователя модуль:

  1. Передаёт ваш запрос как поисковую фразу в LanceDB.
  2. Получает top-K чанков из контекста.
  3. Форматирует их в Markdown-блок (# Reference context: {name} + ## [N] {title} + текст).
  4. Подставляет в system prompt вместе с заголовком и инструкцией.

На следующих итерациях диалога retrieval не повторяется (контекст уже в system prompt).

Условия пропуска retrieval:

  • Контекст в статусе indexing (ещё не готов).
  • Нет активного эмбеддинг-провайдера.
  • Snapshot модели в контексте не совпадает с активной (после смены провайдера) — нужно дождаться окончания переиндексации.

В таких случаях чат продолжает работать, но без подстановки контекста.

Глобальные настройки

Отдельных ключей context* в общих настройках нет — вся конфигурация хранится в БД (таблицы embedding_providers и contexts). Управляется через сам модуль.

Флоу использования

1. Подключите эмбеддинг-провайдер

  1. Откройте Менеджер контекстов в левом меню.
  2. Перейдите в Embedding-провайдеры.
  3. Добавьте провайдер: имя, Base URL, API key, модель.
  4. Сделайте его активным.

2. Создайте контекст

  1. На главной модуля нажмите Новый контекст.
  2. Введите имя (например, «Документация продукта», «Юридическая база»).
  3. Сохраните.

3. Загрузите документы

  1. В контексте нажмите Добавить файл или перетащите файл на панель.
  2. Поддерживаемые форматы: PDF, DOCX, XLSX, CSV, TXT, MD, PNG/JPG/GIF/WebP.
  3. Также можно вставить текст напрямую или подключить статью через RSS-модуль.
  4. Дождитесь завершения индексации (бейдж переключится на «Векторы актуальны»).

4. Подключите контекст к чату

В AI Chat выберите контекст в настройках сессии. Дальше пишите вопросы — модель будет отвечать по вашим документам.

5. Управляйте контекстом

  • Удалить элемент — убрать конкретный документ из контекста.
  • Переиндексировать — принудительный rebuild векторов для контекста.
  • Удалить контекст — удаление вместе с векторной таблицей в LanceDB.

Что дальше

  • Настройте AI-провайдеров для генерации ответов.
  • Используйте RSS-модуль, чтобы пополнять контексты статьями.
  • В Веб-парсере можно собрать данные сайта в JSON и тоже импортировать в контекст.

Помощь и обратная связь

Хотели бы локальные эмбеддинги по умолчанию или гибкий чанкинг из UI? Напишите нам через форму обратной связи.