Локальный RAG на FastAPI и Ollama: от простого вызова LLM к production backend
Хабр-разработчик показывает, как превратить одиночный вызов Ollama в полноценную RAG-систему. К простому POST /ask добавляются request_id для трассировки, sources — список документных фрагментов в контексте, timings по этапам, endpoint для пересборки индекса и negative tests. Стек локальный: FastAPI + Ollama, без внешних API.
AI-обработка оригинала Habr AI; редакция Hamidun News
Разработчик на Хабре разбирает конкретный момент: когда одиночный вызов локальной модели перестаёт хватать — и что нужно добавить, чтобы получить настоящую backend-систему.
Когда простого вызова мало Первая версия выглядит очевидно: frontend отправляет вопрос,
FastAPI принимает POST /ask, backend дёргает Ollama и возвращает строку с ответом. Для демо хватает. Для помощника по документации — нет. Вопросы появляются сразу: на какие документы опирается ответ? Какие фрагменты попали в prompt? Почему один запрос обрабатывается две секунды, а другой — пятнадцать? Что происходит, если индекс не обновлялся три недели? Ответить на них простым вызовом LLM невозможно.
Что добавляет backend-слой Автор вводит компоненты по одному, объясняя конкретную проблему,
которую решает каждый: request_id — уникальный идентификатор запроса для корреляции логов и отладки конкретного сбоя sources — список документных фрагментов, которые попали в контекст модели, с указанием источника timings — разбивка времени по этапам: поиск в индексе, формирование prompt, генерация ответа rebuild index — отдельный endpoint для пересборки индекса без перезапуска сервиса * negative tests — проверка поведения при пустом корпусе, вопросах вне тематики и устаревшем индексе Стек полностью локальный: FastAPI для HTTP-слоя, Ollama для генерации, собственные эмбеддинги. Никаких внешних API-ключей.
API-контракт как граница системы Один из ключевых тезисов статьи — важность явного контракта на уровне ответа.
Когда /ask возвращает только строку, сервис остаётся чёрным ящиком. Как только ответ включает request_id, sources, timings и статус индекса — появляется возможность мониторить, отлаживать и улучшать.
«Показываю не как вообще устроен RAG, а путь от простого вызова локальной LLM к небольшому backend-проекту с API-контрактом, логированием, sources, timings и честными ограничениями».
Такой подход меняет отношение к сервису: вместо «модель как-то отвечает» появляется «система ведёт себя предсказуемо».
Честность про ограничения Автор явно перечисляет, чего нет в проекте: авторизации, кеширования,
поддержки многопользовательской нагрузки, CI/CD. Это делает статью полезнее большинства туториалов, где раздел с ограничениями либо отсутствует, либо сводится к дежурной фразе. Negative tests — отдельная тема. Проверяется поведение при пустом корпусе документов, при вопросах без релевантного контента в индексе и при обращении к индексу после добавления новых файлов без пересборки. Минимальный набор, но уже позволяет понять, где именно система даёт сбой.
Что это значит Статья закрывает конкретный пробел: большинство материалов про RAG либо
объясняют теорию, либо показывают «hello world» с LangChain. Здесь — работающий локальный сервис с observability-инструментами, который можно взять за основу реального проекта.
- 12 нояб. 2026 г.n8n выпустила Nod — open-source агента, который работает на вашем компьютере
- 12 нояб. 2026 г.Claude Code и Codex режут реверс-инжиниринг: OpenAI банила аккаунты по ошибке
- 12 нояб. 2026 г.QA-инженеры SpaceWeb поручили ИИ писать автотесты: рабочий скрипт за 50 минут
- 12 нояб. 2026 г.MiniMax открыла веса H3-Image: 4K-картинки за 10–16 секунд и 16 референсов
Протестируйте новые LLM и мультимодальные модели в одном окне
Платформа Nomad AI (nomadnet.ai) даёт прямой доступ к Claude Opus 5.5, GPT-6, Gemini 3.1, DeepSeek и автономным агентам без VPN, зарубежных карт и зоопарка подписок.
Главное из мира ИИ — раз в неделю
7 ключевых событий недели, отобранных вручную. Без шума, репостов и пресс-релизов.
Готово! Проверьте почту — мы отправили подтверждение.