Генерация эмбеддингов (шаг 6)
Отдельный шаг пайплайна после мержа анализа и тегов (шаг 5). В вектор превращается валидированный анализ главы (каркас, инсайты, применение), а не сырой текст — поиск идёт по смыслу, а не по формулировкам.
Модель
- По умолчанию: BAAI/bge-m3 (bge-m3). Мультиязычная модель, хорошая поддержка русского; размерность вектора 1024, лимит контекста 8192 токенов — полный анализ главы обычно укладывается без обрезки. Размер ~1.2GB, ~5–15 сек на главу.
- Лимит входа: 8192 токенов (bge-m3). При превышении — стратегия из
embed_input_spec.txt(truncation или chunk + агрегация). - Альтернативы: nomic-embed-text, evilfreelancer/enbeddrus (для более лёгкого режима). Модель задаётся конфигом; при смене — пересоздание коллекций Qdrant (размерность 1024 для bge-m3).
Вход
Выход шага 5 (мерж): валидированный анализ главы (framework, insights, application) — сериализуется в текст по спецификации embed_input_spec.txt. Теги в вектор не входят; они хранятся в payload Qdrant для фильтрации.
Выход
Вектор эмбеддинга фиксированной размерности (1024 для bge-m3). Сохраняется в Qdrant в коллекции chapter_analyses (коллекция создаётся с size=1024) вместе с payload (book_id, chapter_id, validation_score, tags и т.д.).
Спецификация входа
| Файл | Назначение |
|---|---|
| embed_input_spec.txt | Рецепт построения текста для эмбеддинга: какие поля, порядок, приоритет при truncation |
Подстановки при построении текста
{framework}— сериализованный блок framework (принципы, terms, chains){insights}— сериализованный блок insights{application}— сериализованный блок application
Ограничения и limitations в эмбеддинг по умолчанию не включаются (опционально — в конфиге). Теги — только в payload, не в тексте для эмбеддинга.
Использование
Вызывается после шага 5 (мерж анализа и тегов). Модель задаётся конфигом (env/конфиг); смена модели не меняет формат хранения в Qdrant, при смене — пересчёт эмбеддингов по необходимости.