Ответ вслух Senior Эмбеддинги и fine-tuning обновлено

Семантический поиск на эмбеддингах

Вопрос

Нужно сделать семантический поиск по базе знаний компании (200 тыс. документов). Как устроите систему на эмбеддингах?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Документы режу на фрагменты по 200-500 токенов с перекрытием, сохраняю заголовки и метаданные для фильтров. Беру хорошую мультиязычную модель эмбеддингов (би-энкодер): вопрос и фрагмент кодируются отдельно, поэтому фрагменты можно закодировать заранее.

Что должно прозвучать в ответе

  • Нарезка документов на фрагменты с перекрытием, метаданные

  • Модель эмбеддингов: готовая мультиязычная, при необходимости дообучить контрастивно на своих парах

  • Векторный индекс (HNSW), гибрид с BM25

  • Переранжирование кросс-энкодером топ-кандидатов

  • Оценка: размеченные запросы, recall@k, NDCG, онлайн-клики; обновление индекса

Что могут спросить следом

  • Почему кросс-энкодер точнее би-энкодера, но не годится для первого этапа?
  • Как собрать обучающие пары без разметчиков?

Разбор

Документы режу на фрагменты по 200-500 токенов с перекрытием, сохраняю заголовки и метаданные для фильтров. Беру хорошую мультиязычную модель эмбеддингов (би-энкодер): вопрос и фрагмент кодируются отдельно, поэтому фрагменты можно закодировать заранее. Векторы нормирую и кладу в ANN-индекс, например HNSW. Чисто векторный поиск плохо ловит точные термины, артикулы и коды, поэтому делаю гибрид с BM25 и объединяю списки, например через reciprocal rank fusion. Топ-50 кандидатов переранжирую кросс-энкодером: он видит вопрос и документ вместе и точнее, но слишком дорог для всей базы. Качество оцениваю на наборе размеченных запросов: recall@k первого этапа и NDCG после переранжирования, онлайн смотрю клики и успешные сессии. Если качество не устраивает, дообучаю модель эмбеддингов контрастивно на своих парах: их можно собрать из логов поиска, заголовков и разделов, сгенерировать вопросы к фрагментам. Индекс обновляю инкрементально при изменении документов.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.