LITE SOFT DEV
СервераNEURO CORE

RAG-пайплайн

Как база знаний пополняется документами и как строится ответ ассистента.

RAG, не fine-tuning: веса Qwen3 не меняются. Обновляется база документов — текст и мета чанков в MongoDB, векторы в Qdrant. Две ветки: ingest (документ → чанки → векторы) и answer (вопрос → поиск → ответ).

Ветка ingest: пополнение базы знаний

Администратор загружает файл через портал или кладёт его в папку private_knowledge — оба пути ставят одну задачу ingest:document в очередь Asynq (см. Realtime).

Форматы: PDF, DOCX, TXT, XLSX, Markdown.

Парсинг

Worker извлекает текст и метаданные из документа по формату.

Нарезка на чанки

По смыслу — заголовки и абзацы, не фиксированные байты. Размер ~500–1000 токенов с перекрытием 10–15%, чтобы не рвать контекст. Таблицы — по строкам и логическим блокам.

Векторизация

Qwen3-Embedding через vLLM, батчами. Одна и та же модель для документов и вопросов — иначе векторные пространства не совпадут.

Сохранение в два хранилища

Текст и мета чанка → MongoDB, вектор → Qdrant. Связь — общий chunk_id. Статус «обработан» — в реестре documents.

Идемпотентность ingest

Ingest идемпотентен: повторная обработка doc_id сначала удаляет старые чанки в обеих базах, затем пишет новые. Задача может выполниться дважды — дублей быть не должно.

Ветка answer: ответ на вопрос

ШагЧто происходитПараметры
EmbeddingВектор вопроса через Qwen3-Embedding1 вызов на вопрос
ПоискQdrant возвращает кандидатов с текстом в payloadK ≈ 20–40
Rerankbge-reranker-v2-m3 пересортировывает пары (вопрос, чанк)N ≈ 4–8
ПромптСистемная инструкция сценария + чанки + историябез ПДн
ГенерацияQwen3-32B в режиме streamтокены сразу наружу
СохранениеДиалог, интересы, sabotage_score, analytics_tagsMongoDB
Качество ретрива

Rerank важнее большого K: сначала качество отбора top-N, потом рост числа кандидатов. Пустой или слабый ретрив → честный ответ «нет данных», не галлюцинация.

Сценарии и ограничения диалога

Промпт собирается под scenario — профориентация, курс, возможности региона:

  • 8–10 основных вопросов, по одному, не больше одного уточнения на шаг;
  • рекомендации — варианты: 1–3 профиля, 3–7 профессий, маршруты;
  • язык соответствует возрасту, без диагнозов и решений за ребёнка;
  • антисаботаж: пустые и несерьёзные ответы повышают sabotage_score.

Модерация

ТребованиеРеализация
ОбезличиваниеGo на портале, до /v1/chat
Фильтрация запрещённогоNEURO CORE Service
Журнал диалоговMongoDB
Аварийное отключениеNEURO CORE off → портал работает без чата

On this page