Понимание встраивания моделей в семантический поиск с нуля
Понимание встраивания моделей в семантический поиск с нуля

Проблемы реализации семантического поиска

Как рекламируется большинством поставщиков векторных поисковых систем,Система семантического поискаиз Есть две основные конструкцииПростой(это ирония) шаг:

  1. Вычисление документа, запрос и встраивание. где-то. Как-то. Ты разбираешься в этом сам.
  2. Загрузите их в векторные поисковые системы и наслаждайтесь более качественным семантическим поиском.

Хорошая модель внедрения имеет решающее значение для семантического поиска.
Хорошая модель внедрения имеет решающее значение для семантического поиска.

Конечная производительность семантического поиска зависит от вашей модели внедрения.но Модель выбора часто считается недосягаемой для большинства первых пользователей.из Объем возможностей。Так что каждый выбирает, как только появится. sentence-transformers/all-MiniLM-L6-v2,И надеяться на лучший результат.

Однако этот подход создает больше проблем, чем дает ответов:

  • Есть ли разница между встраиванием моделей? Опен АИ и Cohere Платная модель лучше?
  • Как они справляются с несколькими языками? Являются ли модели с более чем 1 миллиардом параметров более выгодными?
  • Использовать встраиваниеиз Плотный поиск - один из многих методов семантического поиска.。это лучше, чемSPLADEv2и ELSER Являются ли такие разреженные методы нового века лучше?

Трансформатор: прародитель всех LLM

Исходную архитектуру Transformer можно рассматривать как черный ящик, который преобразует входной текст в выходной текст. Но сами нейронные сети не понимают текст, они понимают только числа — все внутренние преобразования происходят в форме чисел.

Трансформатор состоит из двух основных модулей:

  1. кодер:Принять цифровую формуиз Ввод текста,и генерирует встраиваемое представление входного семантического значения из.
  2. декодер:обратить процесс вспять,Принять встроенное представление,и предсказать следующий текстовый токен

Оригинальная часть изкодеридодекодера архитектуры Transformer
Оригинальная часть изкодеридодекодера архитектуры Transformer

Следовательно, между кодером и декодером существует встроенное представление входа. И входные данные, и внедрение представляют собой числовые векторы, но между ними все же есть существенные различия:

  • Входной вектор представляет собой просто последовательность идентификаторов терминов из предопределенного словаря (размер словаря 32 КБ для BERT), дополненную до фиксированной длины.
  • Вектор внедрения — это входные данныеизвнутреннее представительство。Вот как тебя видит сетьизвходить。Вы можете ожидать, что аналогичные документы будут иметь схожие внутренние представления.
Промежуточное внедрение — это то, как нейронная сеть воспринимает ваши входные данные. вывод декодера упрощен - он выдает следующий токен по вероятности, а не всю фразу
Промежуточное внедрение — это то, как нейронная сеть воспринимает ваши входные данные. вывод декодера упрощен - он выдает следующий токен по вероятности, а не всю фразу

Несколько лет спустя появилось активное семейство различных моделей обработки текста на основе преобразователей с двумя основными независимыми ветвями:

  • Соблюдайте BERT, используйте только трансформаторную часть изкодера. Хорошо умеет классифицировать, обобщать и распознавать объекты.
  • GPT Серия, только декодер. Хорошо справляется с переводами, контролем качества и другими производственными задачами.

генеалогическое древо трансформеров
генеалогическое древо трансформеров

На картинке выше вы можете видеть BERT и GPT между подсемействами моделейизразделять。Традиционно потомки BERT чаще всего использовались в области семантического поиска.

БЕРТ-модель

Модель BERT кажется очень подходящей для нашей задачи семантического поиска, поскольку ее можно упростить до задачи двоичной классификации конкретных запросов, релевантных и нерелевантных документов.

но BERT Вложения изначально не были предназначены для семантического сходства.:Модель обучена прогнозировать большие текстовые массивы.из Блокировать слова。фактически,Похожие тексты имеют схожие вложения,Это хороший естественный побочный эффект.

Предварительное обучение BERT завершено для задачи предсказания токена в маске.
Предварительное обучение BERT завершено для задачи предсказания токена в маске.

но «изначально не предполагалось семантическое сходство» — это всего лишь мнение. Есть ли способ объективно оценить, насколько хорош набор справочных данных?

Тест BEIR

научные статьи “ BEIR: гетерогенный тест для нулевой оценки моделей поиска информации” предложенный IR Метод изэталони Набор данных из набора ссылок. И это делает битву за качество моделей менее интересной: теперь существование имеет Рейтинговый список может сравнить вашу встроенную модель с конкурентами.

Слишком много способов измерить релевантность
Слишком много способов измерить релевантность

Тест BEIR предложенный SET 19 другой IR Набор данных и используется для оценки качества поиска всеми механизмами.

оригинальный Диссертация такжесуществовать Ко всему набору данных было применено несколько базовых методов.эталонтест。2021Год Приходите виз Главный вывод заключается в том,BM25 – вневременная технологияимощныйизбазовый уровень。

позже BEIR быть объединены в более широкуюизэталонв комплекте:MTEB, крупномасштабный тест для встраивания текста。Запустить его очень просто(если у тебя есть 128GB оперативная память, современная GPU и 8 часов свободного времени):

Язык кода:python
кодКоличество запусков:0
копировать
from mteb import MTEB
from sentence_transformers import SentenceTransformer

# load the model
model = SentenceTransformer("sentence-transformers/all-MiniLM-L6-v2")

# run a subset of all benchmarks
evaluation = MTEB(tasks=["MSMARCO"])
results = evaluation.run(model, output_folder="results")

Как мы уже говорили ранее, давайте вернемся к центральной идее статьи: «исходное встраивание BERT нельзя использовать для семантического поиска». если мы будем bert-base-uncased(языковая модель)ина высшем уровнеиз Модель преобразования предложений all-MiniLM-L6-v2 а также all-mpnet-base-v2 Собрав все это вместе и протестировав на бенчмарке BEIR/MTEB, мы получаем следующие цифры:

Из этой таблицы можно сделать два очевидных вывода:

  • исходныйоригинальныйВложения BERT предназначены для предсказания следующего слова, а не для семантического поиска.и Сходство документов。сейчассуществовать Вы можете понять, почему。
  • BM25 остается сильным базовым показателем——Даже с поправкой на смысловое сходство.из大规模 MPNET Модели тоже не всегда могут победить

но почему производительность аналогичных моделей встраивания настолько различна в задачах семантического поиска?

Рейтинговый список

Текущий (2023 г.) Год 6 月)МТЕБ/БЭИР эталон Рейтинговый Список выглядит полным неизвестных имён:

SBERT Модельсуществовать BEIR Входит в набор задач 18 выше
SBERT Модельсуществовать BEIR Входит в набор задач 18 выше

Мы можем Подвести итоги на данный момент самый продвинутый из семантического поиска:

  • SBERT Спецификация(s-MiniLM-L6-v2;s-MiniLM-L12-v2 и all-mpnet-base-v2) имеет хороший баланс между простотой и качеством ранжирования.
  • SGPT (5.8B, 2.7B, 1.3B) — это Ло Ра.тонкая настройкаиз Открытый исходный код GPT-NeoX Последняя версия модели ранжирования
  • GTR-T5да Google Модель внедрения с открытым исходным кодом для семантического поиска с использованием T5 LLM в качестве основы.
  • E5(v1 и в2) Да Microsoft Последняя модель встраивания.

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

  • производительность。Модель越小,Чем ниже задержка поиска,Скорость индексирования выше。огромныйиз SGPT и GTR Модель может существовать только дорого из GPU беги дальше.
  • размер。Модель中из Чем больше количество параметров,Чем лучше качество поиска。all-MiniLM-L6-v2 Отличная модель, но она слишком мала для использования. 10M Параметры фиксируют все семантические различия при поиске.

Поиск баланса между размером и размером имеет решающее значение для создания отличных моделей внедрения.

Встраивание и разреженный поиск

Встраивание — один из многих способов проведения поиска. старый BM25 По-прежнему сильная база, и есть несколько новых «редких» методов поиска, например. SPLADEv2 и ColBERT - 结合了分词术语搜索инейронная сетьиз Преимущества。

В таблице ниже мы попытались объединить все общедоступные оценки BEIR из нескольких источников:

  • Хранилище результатов MTEB Содержит Рейтинговый списокиспользуется визвсеоригинальный Фракция。оно также включает в себяOpenAI商用嵌入Модельиз Фракция,В том числе последняя модель Изада-2.
  • ArXivиз Бумажные обложки для препринтовColBERTSPLADEv2 и BEIR Содержание статьи.
  • поставщикиз Сообщение в блоге представляетVespa о внедрении ColBERTизсодержание,а ТакжеElasticО программе ELSER содержание.

Если эта таблица опубликована два года назад BEIR таблица для сравнения, вы можете заметить BM25 Считается сильной базой - ноBM25 существует 2023 Год больше не является явным победителем

另一个观察结果даразреженный (например, ELSER и SPLADev2) и интенсивный (E5) методы поиска качественно существуют очень близко。поэтому,В этой области нет явного победителя,но здорово видеть такую ​​большую конкуренцию.

Личный взгляд автора на спор между разреженными и плотными методами поиска:

  • Интенсивный поиск более перспективен в будущем。от SBERT обновить до E5 Только 10 ХОРОШОкод,Качество поиска значительно улучшилось. И ваша векторная поисковая система остается неизменной,Никакого дополнительного проектирования не требуется.
  • Разреженный поиск вызывает меньше галлюцинаций.,И может обрабатывать точное соответствие и соответствие ключевых слов. NDCG@10 — единственные критерии измерения качества поиска.

от OpenAI С этой точки зрения между любовью и ненавистью есть только одно. 0.08 точка из разницы
от OpenAI С этой точки зрения между любовью и ненавистью есть только одно. 0.08 точка из разницы

но дебаты продолжаются, и мы будем держать вас в курсе последних событий.

Скрытые расходы на большие модели

Принято считать, что чем больше модель, тем лучше качество ее поиска. от MTEB Рейтинговый Это хорошо видно по списку,но它忽略了服务这些Модельизпростотаидешевый Секс – это важно и практично.изособенность。

Встроенные модели должны быть доступны как онлайн, так и офлайн.
Встроенные модели должны быть доступны как онлайн, так и офлайн.

По сути, вам нужно запустить модель внедрения дважды:

  • Фаза индексирования отключена。这да一个批处理作业,Нужна высокая пропускная способность,но Нечувствителен к задержкам.
  • Встроить поисковый запрос в строку существования в каждом поисковом запросе

картина SBERT и E5 Таким образом, маленькая модель может разумно существовать без задержек и легко существовать в рамках бюджета. CPU Запустить но, если параметры превышают 500M(SGPT ситуации), вы не можете избежать использования графический процессор. сейчас GPU Дорогой.

Чтобы увидеть реальные цифры задержки, мы существуем https://github.com/shuttie/embed-benchmark, обеспечивающий JMH маленьких ONNX Основа рассуждений:

SBERT/E5 Модели с разной длиной документа ONNX Задержка вывода (в миллисекундах). Процессор: 16-ядерный Ryzen7/2600. Видеокарта: RTX3060Ti
SBERT/E5 Модели с разной длиной документа ONNX Задержка вывода (в миллисекундах). Процессор: 16-ядерный Ryzen7/2600. Видеокарта: RTX3060Ti

Как видно из таблицы:

  • Существует линейная зависимость между количеством параметров и задержкой на CPU и GPU.。для краткостииз 4 Словесный запрос, картина SGPT-1.3B такиз大型Модель预计延迟为200 миллисекунд,Зачастую этого оказывается слишком много для рабочих нагрузок, связанных с клиентами.
  • Компромисс задержки/стоимости/качества。тыиз Семантический поиск быстрый、дешевый、точный —— У вас не может быть всех троих, вы можете выбрать только два из них.

Многоязычная модель

Не только мир говорит на английском языке, но и большинство моделей и оценочных систем работают только на английском языке:

  • Оригинальный словарный запас BERT в основном обучается на английских данных.,существование обучения на других языках достаточно слабое.
  • Почти все модели внедрения обучаются на существующем корпусе английских текстов.,Поэтому они оба слегка предвзято относятся к корпусам английских текстов.

Это происходит, если вы передаете в токенизатор BERT текст не на английском языке:

Язык кода:python
кодКоличество запусков:0
копировать
from transformers import BertTokenizer, AutoTokenizer

bert = BertTokenizer.from_pretrained("bert-base-uncased")
e5 = AutoTokenizer.from_pretrained('intfloat/multilingual-e5-base')

en = bert.encode("There is not only English language")
print(bert.convert_ids_to_tokens(en))
# ['[CLS]', 'there', 'is', 'not', 'only', 'english', 'language', '[SEP]']

de = bert.encode("Es gibt nicht nur die englische Sprache")
print(bert.convert_ids_to_tokens(de))
# ['[CLS]', 'es', 'gi', '##bt', 'nic', '##ht', 'nur', 'die', 'eng', '##lis', '##che', 'sp', '##rac', '##he', '[SEP]']

de2 = e5.encode("Es gibt nicht nur die englische Sprache")
print(e5.convert_ids_to_tokens(de2))
# ['<s>', '▁Es', '▁gibt', '▁nicht', '▁nur', '▁die', '▁englische', '▁Sprache', '</s>']

Токенизатор BERT не может правильно обрабатывать немецкие слова как отдельные токены и должен быть разделен на подслова. Для сравнения, многоязычный токенизатор XLM обрабатывает то же предложение гораздо лучше.

К счастью, большинство моделей, упомянутых в этой статье, доступны на нескольких языках:

Подвести итог

Подводя итог, основные выводы этой статьи заключаются в следующем:

  • BM25существовать нелегко превзойти с точки зрения качества поиска.。Учитывая, что это не требует никаких корректировок.,并且ты可以существовать 3 Создайте его за несколько минут Elasticsearch кластер - существовать 2023 Год полагается на то, что это еще осуществимо из.
  • недавносуществоватьредкийиплотный мириз Поле поискаПроисходит большой прогресс.SGPTиE5из История еще не1Год,SPLADEи ELSER из История легче.
  • Среди разреженных/плотных методов нет единого победителя, но IR Отрасль объединяется в один инструмент бенчмаркинга, MTEB/BEIR Комплект приходитИзмерьте качество поиска.

Источник этой статьи: https://blog.metarank.ai/from-zero-to-semantic-search-embedding-model-592e16d94b61.

boy illustration
Углубленный анализ переполнения памяти CUDA: OutOfMemoryError: CUDA не хватает памяти. Попыталась выделить 3,21 Ги Б (GPU 0; всего 8,00 Ги Б).
boy illustration
[Решено] ошибка установки conda. Среда решения: не удалось выполнить первоначальное зависание. Повторная попытка с помощью файла (графическое руководство).
boy illustration
Прочитайте нейросетевую модель Трансформера в одной статье
boy illustration
.ART Теплые зимние предложения уже открыты
boy illustration
Сравнительная таблица описания кодов ошибок Amap
boy illustration
Уведомление о последних правилах Points Mall в декабре 2022 года.
boy illustration
Даже новички могут быстро приступить к работе с легким сервером приложений.
boy illustration
Взгляд на RSAC 2024|Защита конфиденциальности в эпоху больших моделей
boy illustration
Вы используете ИИ каждый день и до сих пор не знаете, как ИИ дает обратную связь? Одна статья для понимания реализации в коде Python общих функций потерь генеративных моделей + анализ принципов расчета.
boy illustration
Используйте (внутренний) почтовый ящик для образовательных учреждений, чтобы использовать Microsoft Family Bucket (1T дискового пространства на одном диске и версию Office 365 для образовательных учреждений)
boy illustration
Руководство по началу работы с оперативным проектом (7) Практическое сочетание оперативного письма — оперативного письма на основе интеллектуальной системы вопросов и ответов службы поддержки клиентов
boy illustration
[docker] Версия сервера «Чтение 3» — создайте свою собственную программу чтения веб-текста
boy illustration
Обзор Cloud-init и этапы создания в рамках PVE
boy illustration
Корпоративные пользователи используют пакет регистрационных ресурсов для регистрации ICP для веб-сайта и активации оплаты WeChat H5 (с кодом платежного узла версии API V3)
boy illustration
Подробное объяснение таких показателей производительности с высоким уровнем параллелизма, как QPS, TPS, RT и пропускная способность.
boy illustration
Удачи в конкурсе Python Essay Challenge, станьте первым, кто испытает новую функцию сообщества [Запускать блоки кода онлайн] и выиграйте множество изысканных подарков!
boy illustration
[Техническая посадка травы] Кровавая рвота и отделка позволяют вам необычным образом ощипывать гусиные перья! Не распространяйте информацию! ! !
boy illustration
[Официальное ограниченное по времени мероприятие] Сейчас ноябрь, напишите и получите приз
boy illustration
Прочтите это в одной статье: Учебник для няни по созданию сервера Huanshou Parlu на базе CVM-сервера.
boy illustration
Cloud Native | Что такое CRD (настраиваемые определения ресурсов) в K8s?
boy illustration
Как использовать Cloudflare CDN для настройки узла (CF самостоятельно выбирает IP) Гонконг, Китай/Азия узел/сводка и рекомендации внутреннего высокоскоростного IP-сегмента
boy illustration
Дополнительные правила вознаграждения амбассадоров акции в марте 2023 г.
boy illustration
Можно ли открыть частный сервер Phantom Beast Palu одним щелчком мыши? Супер простой урок для начинающих! (Прилагается метод обновления сервера)
boy illustration
[Играйте с Phantom Beast Palu] Обновите игровой сервер Phantom Beast Pallu одним щелчком мыши
boy illustration
Maotouhu делится: последний доступный внутри страны адрес склада исходного образа Docker 2024 года (обновлено 1 декабря)
boy illustration
Кодирование Base64 в MultipartFile
boy illustration
5 точек расширения SpringBoot, супер практично!
boy illustration
Глубокое понимание сопоставления индексов Elasticsearch.
boy illustration
15 рекомендуемых платформ разработки с нулевым кодом корпоративного уровня. Всегда найдется та, которая вам понравится.
boy illustration
Аннотация EasyExcel позволяет экспортировать с сохранением двух десятичных знаков.