# Модели Ollama для пайплайна

Используются две модели:

| Назначение | Модель в Ollama | Команда pull | Примечание |
|------------|-----------------|--------------|------------|
| LLM: анализ и валидация (шаги 1–4) | `qwen3:14b-q8_0` | `ollama pull qwen3:14b-q8_0` | ~16 GB (Q8). Легче: `qwen3:14b` (~9.3 GB, Q4_K_M). |
| Эмбеддинги (шаг 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-q8_0

   # Модель эмбеддингов
   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-q8_0** — по умолчанию, выше качество, меньше галлюцинаций (~16 GB).
- **qwen3:14b** — легче по размеру (~9.3 GB, Q4_K_M).

В коде пайплайна имя модели задаётся конфигом (например, `OLLAMA_LLM_MODEL=qwen3:14b-q8_0`).

## Параметры генерации (options) для LLM

Для стабильного структурированного вывода (JSON framework) в `run_framework_ollama.py` передаётся блок `options`:

| Параметр       | Значение | Назначение |
|----------------|----------|------------|
| `temperature`  | 0.3      | Ниже = детерминированнее ответ, меньше смены языка и «творчества». Для извлечения frame лучше 0.2–0.5. |
| `num_ctx`      | 9000     | Размер контекста (токены). Совпадает с OLLAMA_NUM_CTX в docker-compose. |
| `repeat_penalty` | 1.1    | Снижает повторения в тексте. |

Изменить можно в коде (`OLLAMA_OPTIONS`) или через переменные окружения, если скрипт будет их читать.

## Локальный Ollama (без Docker)

Если Ollama установлен локально:

```bash
ollama pull qwen3:14b-q8_0
ollama pull bge-m3
ollama list
```

В `docker-compose` сервис `ollama` тогда можно не поднимать; скрипты должны обращаться к `http://localhost:11434`.
