Обучение текстовых эмбеддингов с Jina AI
Недавно на Berlin Unstructured Data Meetup мы услышали от Bo Wang о training state state-of-the-art general text embeddings. Текстовые эмбеддинги уже приводят в действие современный векторный поиск и системы Retrieval-Augmented Generation (RAG). Wang помогает нам понять тонкости разработки state-of-the-art текстовых эмбеддингов с основным фокусом на эмбеддингах Jina.
Посмотрите запись выступления Bo Wang на Youtube
Почему вам стоит обратить внимание на текстовые эмбеддинги Jina?
Выпуск Jina-Embeddings-V2 произвел фурор в AI-сообществе, набрав более 3 миллионов загрузок на Hugging Face. Эта модель была интегрирована во множество AI-фреймворков, таких как LangChain и LlamaIndex, а также в векторные базы данных, такие как Milvus и Zilliz Cloud. Ажиотаж вокруг эмбеддингов Jina даже достиг вершины Hacker News, вызвав обширные споры и обсуждения об энкодерах с длинным контекстом. Эмбеддинги Jina тесно конкурируют с эмбеддингами OpenAI, одними из лучших в индустрии.
Имея это в виду, давайте углубимся в выступление Wang о тонкостях разработки текстовых эмбеддингов Jina.
Эволюция от дообучения к обучению моделей эмбеддингов в масштабе
Jina AI не начинала с обучения собственной модели эмбеддингов. Вместо этого она начала с дообучения уже существующих моделей, таких как BERT. Дообученные модели показали себя лучше, чем существующие. Давайте посмотрим на статистику. Значение delta в конце показывает, насколько хорошо дообученная модель работает по сравнению с исходной предобученной моделью.
Сравнение производительности между предобученными и дообученными моделями
Как видите, все дообученные модели значительно улучшились, что означает, что алгоритм работал хорошо. Но был ли продукт хорошо принят технологической индустрией? Простой ответ — нет.
Это было время, когда индустрия, даже поисковая индустрия, медленно двигалась в сторону векторов и только начала использовать предобученные модели эмбеддингов. Однако она не была готова к дообучению моделей эмбеддингов. Модели эмбеддингов также не получили широкого распространения в других отраслях, поскольку не существовало ни LLM, ни RAG-систем.
Таким образом, хотя дообучение позволило Jina AI добиться постепенных улучшений, они вскоре поняли, что индустрия не готова к методам дообучения. Это осознание побудило их взяться за амбициозную задачу: обучить свою модель эмбеддингов с нуля. Они верили, что разработка собственного решения позволит им расширить границы возможного.
Создание Jina-Embeddings-V1
Создание Jina-Embeddings-V1 включало следование комплексному подходу. Wang проводит нас через использованный подход:
Исследование state-of-the-art моделей: Первый шаг — изучение передовых моделей эмбеддингов, включая minilm, mpnet, sentence-t5, GTR и instructors от технологических гигантов, таких как Microsoft и Google. Этот подход помогает понять сильные стороны и ограничения существующих решений и определить области, которые нуждаются в улучшении.
Сбор огромного обучающего датасета: Следующий шаг — собрать огромный датасет. Jina AI использовала 2 миллиарда записей англоязычных обучающих данных. Этот массивный корпус необходим для обучения высококачественной модели эмбеддингов общего назначения, способной справляться с широким спектром задач и доменов.
Обширная очистка и курирование данных: Чтобы обеспечить качество обучающих данных, выполняются масштабные процессы очистки и курирования данных, включая дедупликацию, определение языка и фильтрацию качества. После этого строгого процесса у Jina AI осталось 400 миллионов высококачественных записей данных для предварительного обучения и 5 миллионов строк размеченных людьми данных для дообучения.
Рефакторинг для распределённого обучения: Jina AI провела рефакторинг своей кодовой базы Finetuner, чтобы обеспечить эффективное крупномасштабное обучение моделей и поддержать распределённое обучение на нескольких узлах и GPU. Эта масштабируемая инфраструктура имеет решающее значение для обучения моделей на таком массивном наборе данных.
Модель оказалась успешной, но не выделялась среди всех остальных моделей в отрасли, поскольку имела ограниченную длину контекста. Чтобы решить это ограничение, Jina AI обучила Jina-Embeddings-V2.
Представляем Jina-Embeddings-V2: короткое обучение, длинный inference
Чтобы преодолеть барьер в 512 токенов и достичь своей цели по обработке более длинных последовательностей, Jina AI представляет Jina-Embeddings-V2, модель эмбеддингов, которая может обрабатывать последовательности длиной до 8 192 токенов во время inference, обучаясь на более коротких последовательностях. Это достигается благодаря нескольким ключевым модификациям. Ван кратко проходит по этим модификациям. Давайте разберёмся подробнее:
Удаление позиционного эмбеддинга
Традиционные transformer-модели, включая BERT, полагаются на позиционные эмбеддинги, чтобы кодировать порядок токенов в последовательности. Эти позиционные эмбеддинги являются фиксированными векторами, представляющими позицию каждого токена относительно других. Однако у них есть ограничения:
- Длина контекста: Позиционные эмбеддинги ограничивают контекстное окно фиксированным размером (например, 512 токенов в BERT). Более длинные документы или последовательности превышают этот предел, что приводит к потере информации. Посмотрите, как резко возрастает perplexity у моделей BERT при превышении 512 токенов, что означает потерю информации. Perplexity измеряет, насколько модель способна понимать семантику текста. Чем ниже perplexity, тем лучше.
Длина последовательности при inference vs perplexity на BERT
- Позиционные ограничения: Токены на удалённых позициях получают похожие эмбеддинги, игнорируя их контекст.
Jina-Embeddings-V2 полностью удаляет позиционные эмбеддинги, позволяя обрабатывать более длинные последовательности без позиционных ограничений. Модель захватывает контекст в больших документах, что делает её подходящей для суммаризации документов, юридического анализа и понимания длинного контента.
Attention with Linear Biases (ALiBi)
ALiBi — это техника, разработанная для больших языковых моделей. Вместо того чтобы полагаться на фиксированные позиционные эмбеддинги, ALiBi динамически захватывает информацию о порядке слов во время вычислений attention. Затем она адаптируется к контексту каждого токена, позволяя учитывать как предыдущие, так и последующие токены без позиционных ограничений.
Влияние на эмбеддинги: ALiBi улучшает понимание контекста даже в длинных текстах. Она позволяет Jina-Embeddings-V2 захватывать богатые семантические связи между токенами независимо от их позиции.
Адаптация ALiBi для bidirectional transformers
Двунаправленное понимание имеет решающее значение для таких задач, как ответы на вопросы, суммаризация и семантический поиск. Вот как Jina-Embeddings-V2 достигает этого:
Концепция: ALiBi изначально была разработана для decoder-only моделей. Jina AI расширяет её на двунаправленные архитектуры, такие как BERT.
Двунаправленный контекст: Jina-Embeddings-V2 учитывает как левый, так и правый контекст, захватывая зависимости по всей последовательности.
Влияние на эмбеддинги: Модель превосходно справляется с задачами, где важно понимание контекста в обоих направлениях. Например, семантический поиск выигрывает от двунаправленных эмбеддингов, поскольку требует одновременного анализа пользовательских запросов и содержимого документов.
Переобучение BERT с нуля
Jina AI переобучила BERT с использованием продвинутых техник, в результате чего появился JinaBERT, который служит основой для Jina-Embeddings-V2:
Концепция: Jina AI применяет различные приемы, включая маскирование целых слов, рецепт RoBERTa, активации GeGLU и агрессивное маскирование.
Поддержка ALiBi: JinaBERT обучается с ALiBi, что обеспечивает динамическое моделирование контекста.
Влияние на эмбеддинги: Jina-Embeddings-V2 выигрывает от надежной основы, способной справляться с разнообразными задачами. Она суммаризирует длинные статьи, извлекает важную информацию и сохраняет целостность контекста.
Сохраненная перплексия JinaBERT остается низкой даже при превышении лимита в 512 токенов. Благодаря удалению позиционных эмбеддингов и адаптации AliBi. Взгляните на новый график со сравнением BERT и JinaBERT:
Длина последовательности вывода против перплексии на JinaBERT и BERT
Соединяя языки: двуязычные эмбеддинги
Осознавая ограничения существующих многоязычных моделей эмбеддингов, которые часто сильно зависят от обучающих данных на английском языке, Jina AI начала разрабатывать двуязычные эмбеддинги. Их цель — создавать модели, способные работать с несколькими языками и межъязыковыми связями между ними.
Подход Jina AI к двуязычным эмбеддингам отличается от общепринятого. Большинство многоязычных моделей, таких как Multilingual BERT и Multilingual E5, страдают от значительного перекоса в распределении обучающих данных. Например, популярная модель Multilingual E5 имеет 91,5% обучающих данных на английском языке, только 4,2% на китайском и 4,3% на остальных языках вместе взятых.
Multilingual E5 против Jina Embedding v2 на предварительно обученных многоязычных данных
В отличие от этого, модель Jina AI Jina-Embeddings-V2-Based-German имеет сбалансированное распределение обучающих данных: 50% на английском и 50% на немецком. Эти межъязыковые данные специально разработаны для улучшения понимания моделью сходств и связей между двумя языками.
Несмотря на меньший размер по сравнению с многоязычными моделями, Jina-Embeddings-V2-Based-German стабильно превосходит своих конкурентов, достигая более высоких показателей в задачах поиска с немецкого на немецкий, с немецкого на английский и с английского на немецкий.
Сравнение эффективности поиска между разными моделями эмбеддингов
Результаты показывают превосходство двуязычных эмбеддингов Jina AI над популярными многоязычными моделями, такими как Multilingual E5 и Cohere Embed V3, как в одноязычных, так и в межъязыковых задачах поиска.
Что учитывать при создании RAG-приложений с Jina-Embeddings-V2
При разработке приложений Retrieval-Augmented Generation (RAG) с использованием Jina-Embeddings-V2 важно понимать, как модель обрабатывает документы различной длины и расположение релевантной информации внутри этих документов. Бо Ван выделил несколько ключевых моментов:
Короткие документы: Если ваши документы всегда меньше 512 токенов, Jina-Embeddings-V2 работает сопоставимо с другими средними энкодерами, такими как E5 или BGE.
Длинные документы (информация в начале): Если ваши документы длиннее 512 токенов, но релевантная информация находится в начале, Jina-Embeddings-V2 может работать хуже.
Длинные документы (информация позже): Если ваши документы длиннее 512 токенов, а релевантная информация находится в середине или в конце, Jina-Embeddings-V2 значительно повышает эффективность поиска.
Интеграция Jina AI с векторной базой данных Milvus
И векторные базы данных, и модели эмбеддингов незаменимы для создания эффективных систем поиска информации и RAG-приложений. Эти компоненты часто интегрируются для выполнения поиска по векторному сходству и задач извлечения.
Milvus — это векторная база данных с открытым исходным кодом, предназначенная для эффективного хранения и извлечения векторных эмбеддингов миллиардного масштаба. Недавно эмбеддинги Jina были интегрированы в библиотеку моделей PyMilvus, что упрощает разработку RAG или других приложений GenAI за счет устранения необходимости в дополнительных компонентах для эмбеддингов.
Недавнее появление Milvus Lite, облегченной версии Milvus, еще больше упростило этот процесс. Milvus Lite использует тот же API, что и полная версия Milvus, развернутая в Docker или Kubernetes, но может быть легко установлен с помощью однострочной команды pip без настройки сервера. Он идеально подходит для прототипирования и может плавно перейти к различным развертываниям Milvus по мере роста ваших требований.
Чтобы узнать больше об этой интеграции, обратитесь к следующим ресурсам:
Документация Milvus: Интеграция Milvus с эмбеддингами Jina
Взгляд в будущее: Jina-Embeddings-V3
Команда Jina AI уже работает над Jina-Embeddings-V3, которая обещает принести еще больше улучшений:
Скорость и эффективность: Jina-Embeddings-V3 будет быстрее и эффективнее использовать память, особенно для более длинных последовательностей.
Многоязычная поддержка: Новая версия предложит оптимизированное распределение языков и лучшую обработку многоязычных данных.
Решение реальных проблем: Jina-Embeddings-V3 будет решать реальные проблемы с помощью анализа сбоев сжатия на V2 и других моделях эмбеддингов.
Улучшения для конкретных задач: Она будет включать тщательно разработанные инструкции для задач и task heads, а также интеллектуальную маршрутизацию для лучшей обработки различных задач.
Осведомленность о фрагментах и схемах: Модель будет учитывать фрагменты и схемы, улучшая свое понимание полуструктурированных данных и иерархических эмбеддингов.
Резюме
Модели эмбеддингов Jina отличаются высокой производительностью и имеют входное окно длиной 8192 токена, которое отлично подходит для комплексного представления данных. Благодаря многоязычной поддержке и бесшовной интеграции с ведущими платформами, такими как OpenAI, эти эмбеддинги идеально подходят для межъязыковых приложений.
Модели эмбеддингов и векторные базы данных необходимы для эффективного поиска по сходству и извлечения информации. Благодаря интеграции моделей эмбеддингов Jina с PyMilvus, Python SDK для Milvus, разработка RAG и различных приложений GenAI становится более эффективной и простой.
В недавнем выступлении Бо Ван рассказал о создании текстовых эмбеддингов Jina для современных систем векторного поиска и RAG. Он также поделился методологиями обучения моделей эмбеддингов, которые эффективно кодируют обширную информацию, а также рекомендациями по выбору наиболее подходящих моделей эмбеддингов для различных бизнес-потребностей.
Подробнее смотрите запись выступления Бо Вана на Youtube.
Читать далее

From Vector Database to Vector Lakebase
Zilliz offers a fully managed Vector Lakebase powered by Milvus, unifying real-time vector search, lake-scale discovery, and Al data operations.

Introducing Zilliz MCP Server: Natural Language Access to Your Vector Database
Developers can easily manage and query vector databases with natural language via Zilliz MCP Server in AI-native environments.

1 Table = 1000 Words? Foundation Models for Tabular Data
TableGPT2 automates tabular data insights, overcoming schema variability, while Milvus accelerates vector search for efficient, scalable decision-making.


