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

Урок 61 из 299 курса «OpenAI Cookbook»: официальный курс OpenAI Academy (ОпенАИ) на русском языке. Урок входит в платный доступ; первые уроки курса бесплатно.

О чём урок

Этот notebook представляет примеры использования кросс-энкодера для переранжирования результатов поиска. Это распространенный сценарий использования среди наших клиентов, когда вы реализовали семантический поиск с использованием embeddings (полученных с помощью bi-encoder), но результаты не так точны, как того требует ваш сценарий использования. Возможная причина заключается в наличии бизнес-правила, которое можно использовать для переранжирования документов, например, по давности или популярности документа. Однако часто существуют тонкие, предметно-ориентированные правила, которые помогают определить релевантность, и именно здесь кросс-энкодер может быть полезен. Кросс-энкодеры точнее, чем bi-encoder'ы, но плохо масштабируются, поэтому их использование для переупорядочивания сокращенного списка, полученного семантическим поиском, является идеальным сценарием использования. Рассмотрим задачу поиска с D документами и Q запросами. Метод полного перебора для вычисления попарной релевантности является дорогостоящим; его стоимость масштабируется как D * Q. Это известно как cross-encoding. Более быстрый подход — это поиск на основе embeddings, при котором embedding вычисляется один раз для каждого документа и запроса, а затем многократно используется для недорогого вычисления попарной релевантности. Поскольку embeddings вычисляются только один раз, их стоимость масштабируется как D + Q. Это известно как bi-encoding. Хотя поиск на основе embeddings быстрее, качество может быть хуже. Чтобы получить лучшее от обоих подходов, один из распространенных подходов — использовать embeddings (или другой bi-encoder) для недорогого выявления лучших кандидатов, а затем использовать GPT (или другой cross-encoder) для дорогостоящего переранжирования этих лучших кандидатов. Стоимость этого гибридного подхода масштабируется как (D + Q) * cost of embedding + (N * Q) * cost of re-ranking, где N — количество переранжированных кандидатов. Чтобы проиллюстрировать этот подход, мы будем использовать text-davinci-003 с включенным logprobs для создания кросс-энкодера на базе GPT. Наши модели GPT обладают глубоким общим пониманием языка, что при fine-tuning с помощью нескольких few-shot примеров может предоставить простой и эффективный вариант cross-encoding. Этот notebook основан на замечательной статье Weaviate и этом превосходном объяснении bi-encoder'ов против кросс-энкодеров от Sentence Transformers.

План урока

  1. Пример
  2. Пошаговое руководство
  3. Поиск
  4. Кросс-энкодер
  5. Заключение
  6. Дальнейшие шаги

Урок входит в полный доступ. Полный текст и видео открываются после оплаты. Первые уроки каждого курса бесплатны.

Урок входит в темы

Полезные гиды