
Где заканчивается вызов LLM и начинается backend система: локальный RAG на FastAPI и Ollama
AndrejGV 57 минут назад Где заканчивается вызов LLM и начинается backend система: локальный RAG на FastAPI и Ollama Средний 12 мин 2.1K Python * Искусственный интеллект Машинное обучение * Open source * Проектирование...
Anthropic — What company has the best second artificial intelligence model at the end of June?
Вот важная новость с фронта ИИ: AndrejGV 57 минут назад Где заканчивается вызов LLM и начинается backend система: локальный RAG на FastAPI и Ollama Средний 12 мин 2. 1K Python * Искусственный интеллект Машинное обучение * Open source * Проектирование API * Кейс На практике хотел понять где заканчивается простой вызов локальной LLM и начинается backend система: с API контрактом, логированием, request_id, источниками, индексом документов, диагностикой и честными ограничениями. Сначала проект выглядел просто: frontend отправляет вопрос, FastAPI принимает POST /ask, backend вызывает локальную модель через Ollama и возвращает ответ.
Это уже работало, но стало понятно такой вариант ещё нельзя назвать системой по документации. Модель отвечает, но непонятно на что она опирается, откуда взяла ответ, сколько времени занял каждый этап и что делать если документы изменились. В статье описисоваю не "как вообще устроен RAG" а как постепенно превращал простой вызов локальной LLM в небольшой backend/RAG проект.
Технические детали
Без претензии на production ready, но с инженерными акцентами: API, наблюдаемость, источники, индекс, ошибки и ограничения. Зачем делал локального AI помощникаИдея проекта была простой, сделать локального помощника по документации. Документы лежат в папке documents/, пользователь задаёт вопрос, backend ищет релевантные фрагменты и передаёт их в локальную LLM через Ollama.
Стек получился таким:frontend на HTML/CSS/JS;backend на FastAPI;Ollama для локального запуска моделей;gpt-oss:20b для генерации ответа;embeddinggemma для embeddings;Markdown/TXT документы в локальной папке;in memory vector store для первого варианта RAG. Начал с backend: явного API, валидации запроса, request_id, логирования и измерения времени. Frontend нужен чтобы удобно отправлять вопросы и смотреть результат, но основная инженерная часть находится на стороне backend.
Первая схема была такой:Пользователь задаёт вопрос | v Frontend отправляет POST /ask | v FastAPI принимает запрос | v Создаётся request_id | v Запрос логируется | v Backend вызывает локальную LLM через Ollama | v Ответ возвращается во frontend | v Результат логируетсяНа этом этапе помощник уже отвечал, но по сути это всё ещё был обычный "чат с моделью". Документы в процессе не участвовали. Почему простой вызов LLM это ещё не системаПростой вызов LLM выглядит заманчиво отправил prompt, получил answer.
Но для помощника по документации этого недостаточно. Проблемы быстро становятся очевидными:модель не знает локальные документы, если не передать их в контекст;ответ нельзя проверить по источникам;непонятно, что попало в prompt;сложно связать ответ пользователя с логами backend;если ответ медленный, непонятно где именно тратится время;если документ изменился, непонятно обновился ли индекс;если модели нет ответа, она всё равно может попытаться ответить. Поэтому решил двигаться не сразу к "полноценному RAG" а небольшими шагами.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





