Как развернуть RAG: FastAPI, Qdrant, ranker и vLLM
В production RAG есть FastAPI, vector DB, ranker service, MLflow, Docker и self-hosted LLM. Как описать путь запроса и зоны ответственности сервисов?
Ответить самому
Сначала сформулируйте ответ как на собеседовании, затем откройте разбор и оцените себя.
Короткий ответ
API принимает вопрос, проверяет доступ, нормализует query, запускает BM25/dense retrieval, reranker, context assembly, vLLM generation, citations, fallback и logging.
Полный разбор
Production request начинается в API. Сервис проверяет пользователя и права доступа к документам, нормализует запрос, добавляет metadata filters и запускает retrieval. Lexical/BM25 слой ловит точные юридические формулировки, Qdrant или другой vector DB возвращает semantic candidates.
Ranker service получает top-K chunks, query и metadata, затем выбирает финальный порядок. Context builder собирает prompt: короткая инструкция, выбранные chunks, ссылки на источники и правило "не отвечать без поддержки в контексте". vLLM или другой self-hosted inference отвечает, а API возвращает текст, citations, confidence/fallback reason и trace id.
MLflow хранит версии embedding model, reranker и generation config. Логи сохраняют latency по stage, top chunks, версии моделей, fallback, ошибки, стоимость и feedback. Эти данные нужны для regression, rollback и анализа качества после запуска.
Теория
RAG serving - это несколько сервисов с разными SLO. Разделение retrieval, reranking, generation и logging помогает понимать, где сломалось качество или latency.