Какие фреймворки используются для построения RAG
Что проверяют
Понимаете ли вы, из каких этапов состоит RAG, и видите ли в фреймворке инструмент, а не архитектуру. Следом обычно спрашивают, как вы оценивали качество поиска и ответов и что делали, когда модель выдумывала.
Как отвечать
Идите по конвейеру и называйте инструменты на каждом шаге:
- оркестрация: LangChain с набором интеграций и LangGraph для сценариев с состоянием и агентами; LlamaIndex, сильный в загрузке, разбиении и индексации документов; Haystack с явными конвейерами из компонентов; DSPy, где промпты подбирает оптимизатор;
- эмбеддинги:
sentence-transformersи открытые модели вроде E5 или BGE, в том числе мультиязычные для русского текста; - векторное хранилище: FAISS как библиотека в памяти; Qdrant, Milvus, Weaviate, Chroma как отдельные базы;
pgvector, если данные уже в PostgreSQL; OpenSearch с kNN; - переранжирование: кросс-энкодер поверх нескольких десятков первых кандидатов заметно поднимает точность;
- генерация: API коммерческой модели или своя модель под vLLM;
- оценка: RAGAS с метриками faithfulness, answer relevancy, context precision и context recall плюс свой набор вопросов с эталонными ответами.
Отдельно скажите про гибридный поиск: BM25 и векторы, объединённые через RRF, часто стабильнее чистого векторного поиска, особенно на артикулах, кодах и редких терминах. И про чанкинг: размер фрагмента, перекрытие, заголовки раздела в метаданных влияют на качество сильнее, чем выбор фреймворка.
Хорошо прозвучит трезвая позиция: на прототипе фреймворк экономит время, а в продакшене многие команды оставляют тонкий собственный код, потому что лишние абстракции мешают отладке и быстро меняются между версиями.
Где спотыкаются
Называют фреймворком API языковой модели или библиотеку моделей. Это компоненты, а не средство сборки конвейера.
Не могут объяснить, как измеряли качество. «Ответы стали лучше» без метрик и тестового набора не убеждает.
Сразу ищут проблему в модели. Чаще виноват поиск: нужный фрагмент просто не попал в контекст, и начинать стоит с recall на этапе извлечения.