Форк проекта notebookllama с упором на локальный запуск (без платных облачных LLM по умолчанию), улучшенный вывод майндмэпов и быстрый hybrid‑режим.
Исходный проект: github.com/run-llama/notebookllama
- Python 3.10+ (рекомендуется 3.13+)
- Docker и Docker Compose (для PostgreSQL и других сервисов)
- Ollama (для локальной LLM обработки) - установка
- Рекомендуется создать виртуальное окружение и установить зависимости (
pip install -r requirements.txt). - Для более надёжного извлечения текста из PDF установите
pdfplumber(опционально).
На macOS / Linux можно установить uv по инструкции проекта; для Windows следуйте официальной документации uv.
- Создайте и активируйте виртуальное окружение, затем установите зависимости:
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt- Создайте файл
.envс настройками PostgreSQL:
# Скопируйте .env.example или создайте вручную
# Минимальные настройки:
pgql_user=postgres
pgql_psw=postgres
pgql_db=notebookllama- Запустите локальные сервисы (PostgreSQL, Jaeger, Adminer):
docker compose up -d- Установите и запустите Ollama (если еще не установлен):
# Скачайте Ollama с https://ollama.ai и установите
# Затем скачайте модель:
ollama pull mistral
# Или другую модель:
ollama pull llama3.1:8b- Запустите Streamlit (рекомендуется запускать как модуль):
$env:PYTHONPATH = 'src'
$env:PGCLIENTENCODING = 'UTF8'
python -m streamlit run src/notebookllama/Home.pyОткройте http://localhost:8501/ в браузере.
В PowerShell (в корне репозитория):
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
docker compose up -d
ollama pull mistral # если еще не установлена
$env:PYTHONPATH = 'src'
$env:PGCLIENTENCODING = 'UTF8'
python -m streamlit run src/notebookllama/Home.pyВ sidebar (левая панель) приложения доступен выбор модели Ollama для обработки документов:
- Ollama Model Settings — выбор модели для основной обработки (summaries, mind maps, Q&A)
- Доступные модели загружаются автоматически из вашей установки Ollama
- По умолчанию используется
mistral, но можно выбрать любую установленную модель
Важно: Модели Ollama используются для качественной обработки документов. HuggingFace модели в sidebar — это только fallback на случай, если Ollama недоступен.
Режим "hybrid" показывает мгновенный extractive‑результат (локальный, быстрый) и одновременно запускает фоновый LLM‑рефайн для более структурированного и подробного вывода.
Основные элементы:
- UI-кнопка: "Extractive + LLM refine" — показывает extractive сразу и запускает рефайн в фоне.
- Sidebar опция: "Always use extractive by default (fast)" — при включении обычная обработка будет выполнять только extractive путь.
- Sidebar опция: "Auto-apply LLM refine result when ready" — при включении refined результат автоматически заменит extractive вывод; иначе появится превью с кнопками "Apply" / "Dismiss".
Техническая заметка: фоновая задача записывает результат в временный JSON‑файл; основной поток UI периодически проверяет этот файл и аккуратно применяет результат в session_state — это снижает риск гонок между потоками.
- Ollama Model (for document processing) — выбор модели Ollama для обработки документов
- Модели загружаются автоматически из вашей установки Ollama
- Используется для генерации summaries, mind maps, Q&A
Панель слева позволяет настроить поведение fallback‑модели HuggingFace (если Ollama недоступен), выбрать модель, предзагрузить её и задать параметры генерации (temperature, max_tokens, top_k, top_p, do_sample).
Рекомендация для быстрых CPU‑тестов: модель distilgpt2, temperature=0.0, max_tokens=256, do_sample=false.
Приложение использует PostgreSQL для хранения обработанных документов. База данных создается автоматически при первом запуске Docker контейнера.
Настройки указываются в файле .env:
pgql_user=postgres
pgql_psw=postgres
pgql_db=notebookllama
Для просмотра данных в базе можно использовать:
- Adminer (веб-интерфейс): http://localhost:8080
- Система: PostgreSQL
- Сервер: postgres (или localhost)
- Пользователь: postgres
- Пароль: postgres
- База данных: notebookllama
- База данных создается автоматически с кодировкой UTF8
- Таблицы создаются автоматически при первом использовании
- Все данные обрабатываются с правильной кодировкой UTF-8
- Добавлена обработка ошибок кодировки при чтении файлов
- Улучшена работа с PostgreSQL (явная установка UTF-8 кодировки)
- Исправлена обработка BOM в файлах
- Добавлена переменная окружения
PGCLIENTENCODING=UTF8
- Добавлен выбор модели Ollama в sidebar
- Все запросы к Ollama используют выбранную модель
- Автоматическая загрузка списка доступных моделей
- Безопасная обработка данных при чтении из PostgreSQL
- Автоматическое создание базы данных с правильной кодировкой
- Обработка ошибок подключения с повторными попытками
- Параметры LLM/тасков можно указать в
config.yamlили через переменные окружения. - Если используете облачные сервисы, добавьте соответствующие ключи в
.env(HUGGINGFACE_API_KEY,LLAMACLOUD_API_KEYи т.д.). - Переменная окружения
OLLAMA_MODELустанавливается автоматически при выборе модели в sidebar.
- Убедитесь, что Ollama запущен:
ollama serve - Проверьте доступность:
curl http://localhost:11434/api/tags - Если Ollama не запущен, запустите его и обновите страницу в браузере
- Убедитесь, что база данных создана с кодировкой UTF8
- Проверьте, что переменная
PGCLIENTENCODING=UTF8установлена - Пересоздайте базу данных:
docker compose down→ удалите томinstrumentation_pgdata→docker compose up -d
- Убедитесь, что используете LLM режим, а не только extractive
- Выключите опцию "Always use extractive by default (fast)" в sidebar
- Используйте кнопку "Process Document" для полной LLM обработки
- Или используйте "Extractive + LLM refine" для hybrid режима
Проект распространяется под лицензией MIT. Подробнее: ./LICENSE