Гибридный поиск проиграл чистым векторам: как я строил RAG-бота и мерил качество
Эксперт попросил бота, который отвечает его голосом только по собственным материалам — курсам в PDF, расшифровкам видео и записям занятий. Если ответа в данных нет, бот должен честно отправить к живому эксперту. Автор реализовал такого бота на Python с Telegram-интерфейсом, но главной проблемой оказался не промптинг, а поиск: на первых живых вопросах бот не находил нужный материал.
Для замера качества построили стенд с метриками recall@6 и MRR. Вопреки популярным рекомендациям, гибридный поиск (сочетание векторного и ключевого) показал худший результат, чем чистый векторный. Точные цифры и детали эксперимента автор раскрывает в статье, но основной вывод — не всегда «гибрид» лучше, всё зависит от данных и задачи.
Кроме того, когда упёрлись в лимиты провайдера эмбеддингов, пришлось менять архитектуру и оптимизировать запросы. Код из статьи взят из рабочих файлов (лишнее убрано), а примеры вопросов — вымышленные, так как заказчик согласился на публикацию только без указания его имени, материалов и темы.