Войти Регистрация
Data base

269. Нашли синтетический вопрос, а нужен фрагмент Wiki

Средняя

Milvus · Milvus 2.6

Внутренний помощник ЮMoney отвечает по корпоративной Wiki. Эмбеддинги FRIDA лежат в Milvus, индекс HNSW, близость — косинус.

Индекса два. В chunks — фрагменты страниц. В questions — вопросы, которые LLM придумала к каждому фрагменту. Сотрудник спрашивает «как оформить отпуск за свой счёт», и ближе всего оказывается синтетический вопрос «Как взять отпуск без сохранения зарплаты?». В LLM нужно отдать текст фрагмента, из которого этот вопрос сделан.

В работе: RAG по внутренней документации: поиск по вопросам с переходом к исходному фрагменту.

Как проверяем Движка Milvus в браузере пока нет, поэтому здесь не запрос, а выбор решения. Выберите один вариант. После ответа — почему каждый вариант верный или нет. Ответ один на подход: после него показываем разбор.
RAGдве коллекциискалярное поле-ссылкаquery по ключам

Источник: блог ЮMoney на Хабре: внутренний ИИ-помощник по корпоративной Wiki. Условие пересказано своими словами.

Как связать найденные вопросы с фрагментами?

  • Добавить в questions скалярное поле chunk_id. После search по questions взять chunk_id из output_fields и забрать фрагменты одним query(filter="id in [...]") по chunks, повторы убрать
  • Взять эмбеддинг найденного вопроса и вторым векторным поиском найти ближайший фрагмент в chunks
  • Отдать в LLM сами найденные синтетические вопросы
  • Хранить всё в одной коллекции: вектор фрагмента усреднить с векторами его вопросов