This commit is contained in:
2026-02-01 17:01:21 +03:00
commit 9575eaf8ee
144 changed files with 24025 additions and 0 deletions

51
docs/cpu-time-estimate.md Normal file
View File

@@ -0,0 +1,51 @@
# Оценка времени пайплайна на CPU (Ollama, qwen3:14b)
Оценка основана на архитектуре (этапы 14 — вызовы LLM) и замере: **один блок framework на CPU ≈ 15+ минут** (до ответа или до 500).
## Время на GPU (из ARCHITECTURE_SUMMARY)
| Этап | Вызовы | Время на GPU |
|------|--------|----------------|
| 1. Анализ по блокам | 4 (framework, insights, application, limitations) | ~25 мин на главу |
| 2. Валидация блоков | 4 | ~30 сек на блок → ~2 мин |
| 2b. Финальная валидация | 1 | ~3060 сек |
| 3. Извлечение тегов | 1 | ~12 мин |
| 4. Валидация тегов | 1 | ~2030 сек |
| 6. Эмбеддинги (bge-m3) | 1 | ~515 сек |
| **Итого на главу (GPU)** | | **~611 мин** |
## Коэффициент замедления CPU vs GPU
- **«Тяжёлые» вызовы** (длинный контекст: глава + промпт): на GPU ~0.51.5 мин, на CPU по замеру **≥15 мин** → ориентир **1525 мин** на один такой вызов на CPU.
- **«Лёгкие» вызовы** (валидация, короткий контекст): на GPU ~30 сек, на CPU грубо **36 мин** (в 610 раз дольше).
Используем для расчёта:
- тяжёлый вызов (этапы 1 и 3): **20 мин** на CPU;
- лёгкий вызов (этапы 2, 2b, 4): **4 мин** на CPU;
- эмбеддинги (bge-m3): **1 мин** на CPU.
## Время на одну главу (CPU)
| Этап | Кол-во вызовов | Тип | Время (CPU) |
|------|-----------------|-----|-------------|
| 1. Анализ по блокам | 4 | тяжёлый | 4 × 20 = **80 мин** |
| 2. Валидация блоков | 4 | лёгкий | 4 × 4 = **16 мин** |
| 2b. Финальная валидация | 1 | лёгкий | **4 мин** |
| 3. Извлечение тегов | 1 | тяжёлый | **20 мин** |
| 4. Валидация тегов | 1 | лёгкий | **4 мин** |
| 5. Мерж | — | без LLM | < 1 мин |
| 6. Эмбеддинги | 1 | bge-m3 | **1 мин** |
| 78. Qdrant, Postgres | | без LLM | < 1 мин |
| **Итого на одну главу** | | | ** 126 мин 2 ч 6 мин** |
Укрупнённо: **~22.5 часа на одну главу** на CPU (с запасом на retry и вариативность).
## Время на книгу (CPU)
| Глав в книге | Оценка времени (CPU) |
|--------------|----------------------|
| 10 | ~2025 ч |
| 20 | ~4050 ч |
| 30 | ~6075 ч |
Итого: **полная книга на CPU может занимать десятки часов**; один запуск на всю книгу без GPU обычно неудобен (дни работы, риск обрыва). Имеет смысл либо ставить GPU/Apple Silicon, либо гонять по одной главе и планировать долгие прогоны.

57
docs/ollama-models.md Normal file
View File

@@ -0,0 +1,57 @@
# Модели Ollama для пайплайна
Используются две модели:
| Назначение | Модель в Ollama | Команда pull | Примечание |
|------------|-----------------|--------------|------------|
| LLM: анализ и валидация (шаги 14) | `qwen3:14b` | `ollama pull qwen3:14b` | ~9.3 GB (Q4_K_M). Ближе к 8bit: `qwen3:14b-q8_0` (~16 GB). |
| Эмбеддинги (шаг 6) | `bge-m3` | `ollama pull bge-m3` | ~1.2 GB, размерность 1024, контекст 8192. |
## Загрузка моделей при работе через Docker
1. Запустите контейнер Ollama:
```bash
docker compose up -d ollama
```
2. Дождитесь готовности (healthcheck), затем загрузите модели **внутри контейнера**:
```bash
# LLM для анализа глав и валидации
docker exec -it ollama ollama pull qwen3:14b
# Модель эмбеддингов
docker exec -it ollama ollama pull bge-m3
```
3. Проверка списка моделей:
```bash
docker exec ollama ollama list
```
или через API:
```bash
curl http://localhost:11434/api/tags
```
## Варианты LLM
- **qwen3:14b** — по умолчанию, меньше по размеру (~9.3 GB).
- **qwen3:14b-q8_0** — выше качество, ближе к «8bit» из архитектуры (~16 GB).
В коде пайплайна имя модели задаётся конфигом (например, `OLLAMA_LLM_MODEL=qwen3:14b`).
## Локальный Ollama (без Docker)
Если Ollama установлен локально:
```bash
ollama pull qwen3:14b
ollama pull bge-m3
ollama list
```
В `docker-compose` сервис `ollama` тогда можно не поднимать; скрипты должны обращаться к `http://localhost:11434`.