Когда LLM перестаёт быть чатом и становится backend системой

Когда LLM перестаёт быть чатом и становится backend системой

Недавно проверял, можно ли запускать локальные AI модели на обычном ноутбуке.

После этого возник следующий вопрос "а что происходит когда мы хотим не просто вызвать LLM, а сделать из этого нормальный backend сервис?"

Потому что простой сценарий выглядит красиво: пользователь задал вопрос -> модель ответила.

Но для реального помощника по документации этого мало.

Быстро появляются вопросы:

  • откуда модель взяла ответ;
  • какие документы попали в контекст;
  • какие chunks нашёл retrieval;
  • сколько заняли retrieval и generation;
  • какой request_id искать в логах;
  • что делать, если в документах нет ответа;
  • почему после изменения файла RAG всё ещё отвечает по старому индексу.

Cделал небольшой локальный проект на FastAPI + Ollama, чтобы пройти этот путь руками: documents -> chunks -> embeddings -> vector store -> retrieval -> prompt -> answer.

Самое интересное оказалось не в том как вызвать LLM, а в backend обвязке вокруг неё: sources, timings, rebuild index, negative tests, exact-term guard и честный отказ от генерации если контекста нет.

Главный вывод простой: RAG это не магия и не один prompt. Это pipeline, где каждый этап может ошибиться.

Разобрал весь процесс в статье на Хабре: