Все мы тонем в документах. Отчеты в PDF, научные статьи, рабочая документация, сохраненные веб-страницы — информационный хаос стал нормой. Google попытался решить эту проблему с помощью NotebookLM, удобного инструмента для создания базы знаний из своих файлов. Штука неплохая, но, как и все продукты больших корпораций, живет в своей закрытой экосистеме. Хочешь кастомизации? Другой LLM-провайдер? Работа локально? Забудь.
Но свято место пусто не бывает. Недавно в open-source выкатили NotebookLlama — проект, который не просто копирует функционал гугловского собрата, а предлагает гораздо большую гибкость и мощь. Это инструмент, который можно развернуть у себя, доработать под свои нужды и полностью контролировать.
Давайте чисто технически разберемся, что это за зверь, как он устроен под капотом и как его поднять для личного пользования.
Что это вообще такое?
Если коротко, NotebookLlama — это ваш персональный аналитический центр для работы с документами. Вы "скармливаете" ему пачку файлов (PDF, MD, DOCX и т.д.), а он их обрабатывает и превращает в интерактивную базу знаний.
Вот ключевые возможности, которые он предоставляет:
- Централизованная база знаний: Загружайте множество документов, чтобы создать единое пространство для поиска и анализа.
- Автоматическая саммаризация: Система сама выделит ключевые моменты, сгенерирует краткое содержание и основные тезисы в виде буллет-поинтов.
- Интерактивные Mind Maps: Для визуалов — это просто киллер-фича. Проект строит граф связей между основными сущностями из документов, помогая уловить общую картину.
- Чат с документами: Встроенный ИИ-агент, который может отвечать на вопросы, основываясь исключительно на содержании загруженных файлов. Никаких галлюцинаций — только факты из ваших источников.
- Генерация подкастов: Звучит дико, но это так. Можно взять обработанный текст и сгенерировать из него аудио-версию в формате диалога двух спикеров. Для этого используется API ElevenLabs.
- Аналитика и метрики: Для тех, кто любит все контролировать, есть интеграция с OpenTelemetry для отслеживания производительности и процессов.
Звучит солидно. Но как это все работает вместе?
Заглянем под капот: Архитектура и технологии
На первый взгляд, это типичный современный AI-проект на Python, но дьявол, как всегда, в деталях.
Frontend: Вся пользовательская часть построена на Streamlit. Это популярный выбор для быстрого создания интерактивных веб-приложений для data science и AI, и здесь он отлично справляется со своей задачей.
Backend и "мозги": Ядром всей системы является связка из фреймворков от LlamaIndex. В частности, LlamaParse для "умного" парсинга документов (он умеет корректно извлекать текст, таблицы и даже изображения) и LlamaCloud для индексации и хранения данных.
[!INFO] Важный момент: хотя проект и open-source, для парсинга документов он по умолчанию использует облачный сервис LlamaCloud. Это компромисс между полным "суверенитетом" и качеством. LlamaParse работает на порядок лучше большинства локальных парсеров PDF, так что этот компромисс оправдан.
Оркестрация: Для управления задачами (обработать файл, сгенерировать mind map, ответить на вопрос) используется FastMCP (
mcp
в коде). Это фреймворк для создания и вызова "инструментов" (tools) — по сути, оберток над функциями, которые может вызывать LLM.Генерация контента: За генерацию текста, ответов и структурированных данных (вроде узлов для mind map) отвечает OpenAI. Для генерации аудио, как я уже упоминал, — ElevenLabs.
Визуализация: Майнд-карты строятся с помощью библиотеки Pyvis, которая в свою очередь использует
vis.js
для рендеринга интерактивных графов в браузере.Наблюдаемость (Observability): Для отслеживания работы всех компонентов используется OpenTelemetry, а для визуализации трейсов — Jaeger. Все это запускается в Docker, что очень удобно.
В сухом остатке мы имеем грамотно спроектированную систему, где каждая часть отвечает за свою задачу. Это не монолитный скрипт, а набор взаимодействующих сервисов, что и делает проект таким гибким.
Пошаговая установка: Поднимаем свой личный NotebookLM
Хватит теории, давайте к практике. Развернуть NotebookLlama у себя не так уж и сложно, если следовать инструкции.
Шаг 1: Подготовка окружения
Вам понадобится:
git
для клонирования репозитория.uv
— современный и очень быстрый менеджер пакетов для Python. Если еще не используете, крайне советую.Docker
иdocker-compose
для запуска вспомогательных сервисов.
Шаг 2: Клонирование и установка зависимостей
Открываем терминал и поехали:
# Клонируем репозиторий
git clone https://github.com/run-llama/notebookllama
# Переходим в папку проекта
cd notebookllama/
# Устанавливаем все зависимости с помощью uv
uv sync
Шаг 3: Настройка API-ключей
Это самый важный шаг. Вам нужно получить три ключа и прописать их в конфигурационном файле.
- Скопируйте пример файла
.env.example
:mv .env.example .env
- Откройте файл
.env
в вашем любимом редакторе. - Вставьте свои ключи:
OPENAI_API_KEY
: Берется на платформе OpenAI. Нужен для работы LLM.LLAMACLOUD_API_KEY
: Получается в дашборде LlamaCloud. Нужен для парсинга и индексации документов.ELEVENLABS_API_KEY
: Находится в настройках ElevenLabs. Нужен для фичи с генерацией подкастов.
Шаг 4: Первичная настройка LlamaCloud
Теперь нужно выполнить два скрипта, которые подготовят вашу облачную среду в LlamaCloud.
# Создает агента для извлечения структурированных данных
uv run python tools/create_llama_extract_agent.py
# Создает пайплайн для обработки и индексации документов
uv run python tools/create_llama_cloud_index.py
Эти скрипты выполняются один раз. Они настраивают все необходимое для работы с вашими файлами.
Шаг 5: Запуск вспомогательных сервисов
Теперь поднимем Jaeger и Postgres через Docker.
docker compose up -d
Эта команда в фоновом режиме запустит два контейнера, необходимых для сбора и хранения телеметрии.
Шаг 6: Запуск приложения
Все готово к запуску. Нам нужно запустить два процесса в двух разных терминалах.
В первом терминале (запускаем backend-сервер):
uv run python src/notebookllama/server.py
Во втором терминале (запускаем Streamlit UI):
# Сначала активируем виртуальное окружение, созданное uv
source .venv/bin/activate
# (Для Windows команда будет .\.venv\Scripts\activate)
# Запускаем приложение
streamlit run src/notebookllama/Home.py
[!TIP] Если все прошло успешно, в терминале появится ссылка
http://localhost:8501
. Открывайте ее в браузере и начинайте загружать свои документы.
Что в итоге?
NotebookLlama не пытается изобрести велосипед, а грамотно комбинирует лучшие в своем классе инструменты (LlamaCloud, OpenAI, Streamlit) в одном гибком рении.
Плюсы:
- Функциональность: Делает все, что и NotebookLM.
- Гибкость: Вы можете заменить любой компонент. Хотите использовать другого LLM-провайдера? Пожалуйста. Нужна другая база данных? Не проблема.
- Полный контроль: Это ваш личный инстанс. Никто не будет следить за вашими данными или ограничивать вас лимитами (кроме лимитов самих API).
Минусы:
- Порог входа: Требует определенных технических навыков для установки и настройки.
- Зависимость от API: "Бесплатность" условная. Вам все равно придется платить за использование API OpenAI, LlamaCloud и ElevenLabs, если ваши объемы превысят бесплатные лимиты.
В целом, NotebookLlama — это хороший инструмент для разработчиков, аналитиков, исследователей и всех, кто работает с большими объемами текстовой информации и хочет иметь собственный, полностью кастомизируемый инструмент. И альтернатива для тех, кто предпочитает строить, а не просто пользоваться готовым.