Milvus · Milvus 2.6
Внутренний помощник ЮMoney отвечает по корпоративной Wiki. Эмбеддинги FRIDA лежат в Milvus, индекс HNSW, близость — косинус.
Индекса два. В chunks — фрагменты страниц. В questions — вопросы, которые LLM придумала к каждому фрагменту. Сотрудник спрашивает «как оформить отпуск за свой счёт», и ближе всего оказывается синтетический вопрос «Как взять отпуск без сохранения зарплаты?». В LLM нужно отдать текст фрагмента, из которого этот вопрос сделан.
В работе: RAG по внутренней документации: поиск по вопросам с переходом к исходному фрагменту.
Как проверяем
Движка Milvus в браузере пока нет, поэтому здесь не запрос, а выбор решения. Выберите один вариант. После ответа — почему каждый вариант верный или нет. Ответ один на подход: после него показываем разбор.
Источник: блог ЮMoney на Хабре: внутренний ИИ-помощник по корпоративной Wiki. Условие пересказано своими словами.
Давали на собеседовании?
Как связать найденные вопросы с фрагментами?
- Добавить в questions скалярное поле chunk_id. После search по questions взять chunk_id из output_fields и забрать фрагменты одним query(filter="id in [...]") по chunks, повторы убрать
- Взять эмбеддинг найденного вопроса и вторым векторным поиском найти ближайший фрагмент в chunks
- Отдать в LLM сами найденные синтетические вопросы
- Хранить всё в одной коллекции: вектор фрагмента усреднить с векторами его вопросов