Milvus · Milvus 2.6
Бот поддержки RUTUBE отвечает по FAQ: раз в 60 минут Airflow забирает свежие статьи, режет на фрагменты и обновляет эмбеддинги в Milvus. Эмбеддинги считает модель FRIDA.
Допустим, на вопросы вроде «как подключить монетизацию» бот отвечает хорошо, а на «ошибка 4012 при загрузке» — плохо: фрагмент с кодом 4012 в базе есть, но в топ-5 приходят общие статьи про загрузку видео. Плотный вектор хорошо ловит смысл, а точное совпадение номера почти не учитывает.
В работе: RAG по базе знаний: поиск, который учитывает и смысл, и точные слова.
Источник: блог RUTUBE на Хабре: RAG-бот поддержки на Milvus. Условие пересказано своими словами.
Как устроить поиск в Milvus, чтобы фрагмент с кодом 4012 попадал в выдачу, а смысловой поиск не пострадал?
- Добавить в коллекцию sparse-поле, которое заполняет встроенная функция BM25 из текста, и искать через hybrid_search по двум полям с RRFRanker
- Оставить только dense-поиск, но поднять limit с 5 до 100
- Добавить к поиску скалярный фильтр text like "%4012%"
- Сделать два отдельных search — по dense-полю и по BM25 — и отсортировать общий список по distance