Локальный инструмент RAG, созданный с использованием Nemotron Nano 9B v2 и вызова инструментов vLLM

Технические детали реализации
Разработчик поделился своим подходом к созданию локального инструмента для исследований RAG, который полностью работает на одном GPU. Весь бэкенд содержится в одном файле app.py.
Стек и конфигурация
Инструмент использует Nemotron Nano 9B v2 Japanese на vLLM с квантованием FP16, работая на GPU RTX 5090. Бэкенд сочетает FastAPI + SQLite FTS5 + Jinja2. Для вызова инструментов разработчик использует официальные плагины-парсеры NVIDIA, в частности --tool-call-parser nemotron_json и --tool-parser-plugin, отмечая, что Nemotron v2 требует пользовательские плагины-парсеры, а не встроенные парсеры vLLM (которые предназначены для v3).
Ключевые проектные решения
Система реализует двухэтапный процесс извлечение → выполнение:
- Когда задаётся вопрос, система сначала извлекает двуязычные ключевые слова (английские и японские) через LLM
- Запускает поиск FTS5 по локальным источникам И поиск в вебе через DuckDuckGo параллельно
- Показывает результаты с флажками для выбора пользователем
- Только после выбора пользователя генерирует окончательный ответ
Такой подход позволяет избежать сброса контекста в 100к+ токенов и надежды, что модель сама во всём разберётся.
Производительность и особенности
- Вызов инструментов: Модель самостоятельно решает, когда искать в вебе, что работает удивительно хорошо при температуре 0.1
- Прогрев кэша префикса: Вместо кэширования всего при загрузке источника, KV-кэш прогревается, когда пользователь видит предпросмотр источника. К моменту нажатия Execute префикс уже закэширован с использованием
--enable-prefix-cachingна vLLM - Двуязычный поиск FTS5: Запрос пользователя → Nemotron извлекает ключевые слова на английском и японском → OR-объединённый запрос FTS5 MATCH, эффективный для многоязычных патентных/исследовательских данных
Показатели производительности
- ~80-120 токенов/с на выводе
- 8192 максимальных токенов
- Извлечение источников: ~3-5с (извлечение ключевых слов + FTS5 + DDG параллельно)
- Полный ответ с 5 источниками + 3 веб-результатами: ~50с для подробного ответа на RTX 5090
Установка и источник
Исходный код доступен по адресу https://github.com/soy-tuber/SoyLM. Это однодокументное приложение, которое можно установить с помощью uv pip install -r requirements.txt. Обратите внимание, что оно требует vLLM с плагинами-парсерами Nemotron отдельно.
📖 Read the full source: r/LocalLLaMA
👀 Смотрите также

OpenObscure: Открытый локальный брандмауэр конфиденциальности для ИИ-агентов
OpenObscure — это открытый межсетевой экран для защиты приватности, работающий на устройстве и располагающийся между ИИ-агентами и провайдерами языковых моделей. Он использует FF1 Format-Preserving Encryption для шифрования персональных данных перед отправкой запроса с вашего устройства. Включает обнаружение PII с полнотой 99,7%, сканирование когнитивного межсетевого экрана и работает на macOS/Linux/Windows с поддержкой iOS/Android.

Управление кодом Claude удаленно: Продолжение локальных сессий с любого устройства
Claude Code Remote Control позволяет продолжить локальные сессии Claude Code с других устройств, таких как телефоны или браузеры, сохраняя всё запущенным на вашем компьютере. Доступно в режиме исследовательского предпросмотра для планов Pro и Max, требует настройки аутентификации и доверия к рабочему пространству.

Приложение для многоагентных дебатов, созданное с использованием Claude, ElevenLabs и Flux
Разработчик создал приложение для дебатов, в котором Claude генерирует аргументы для двух персонажей на любую тему, а ИИ-судья оценивает и выбирает победителя. Приложение добавляет голос через ElevenLabs и изображения через Flux, создавая атмосферу дебатного шоу.

Измерение затрат токенов на нецелевые действия в Claude Code: Метрика «незаявленного намерения»
Разработчик создал метрику для измерения вычислительных затрат на непредусмотренные пути выполнения в сессиях Claude Code, обнаружив, что 22,8% токенов уходило на постороннюю работу.