Назад к подготовке

Как обучать sentence embeddings

Нужно получить хорошие embeddings предложений для retrieval/semantic search. Какие данные и loss использовать?

Ответить самому

Сначала сформулируйте ответ как на собеседовании, затем откройте разбор и оцените себя.

Загрузка

Короткий ответ

Нужны positive/negative пары или triplets; типичный loss - contrastive / multiple negatives ranking loss / triplet loss.

Полный разбор

Для semantic retrieval модель должна сближать тексты с одинаковым смыслом и разносить нерелевантные. Данные могут быть query-document клики, пары вопрос-ответ, paraphrase pairs, NLI entailment pairs или доменная разметка релевантности.

Один из практичных вариантов - bi-encoder: кодируем query и document отдельно, считаем cosine/dot product. Loss может быть multiple negatives ranking loss: правильный документ в batch является positive, остальные документы в batch - negatives. Для более контролируемой постановки используют triplet loss: anchor, positive, negative.

Качество embeddings нужно проверять retrieval-метриками: Recall@K, MRR, NDCG, а не только loss на train.

Типичные ошибки

  • Обучать embeddings только классификацией без retrieval eval.
  • Не подбирать hard negatives.
  • Смешивать cross-encoder и bi-encoder inference cost.

Как отвечать на собеседовании

  • Назови multiple negatives ranking loss.
  • Обязательно скажи про hard negatives и Recall@K.