Руководство по миграции Jina Embeddings v2 на v3

Jina Embeddings v3 Наша новейшая модель векторов текста верхнего уровня с 570 миллионами параметров позволяет достичь лучших в своем классе показателей SOTA в задачах поиска многоязычных и длинных текстов.
v3 не только мощнее, но и обладает множеством новых и интересных функций. Если вы все еще используете Jina Embeddings v2, которая была выпущена в октябре 2023 года, мы настоятельно рекомендуем вам перейти на v3 как можно скорее.
Давайте начнем с краткого обзора основных моментов Jina Embeddings v3:
- Поддержка 89 языков : Преодолевая ограничение, связанное с тем, что v2 может обрабатывать только несколько двуязычных языков, вы сможете реализовать настоящую многоязычную обработку текста.
- Встроенный адаптер Lorav2 - это общая модель Embedding, а v3 имеет встроенный адаптер Lora Adapter, который генерирует векторы, оптимизированные специально для поиска, классификации, кластеризации и других задач, что обеспечивает более высокую производительность.
- Поиск по длинному тексту более точен :: v3 использование 8192 жетон Техника Late Chunking, которая генерирует блочные векторы с более богатой контекстной информацией, может значительно повысить точность поиска длинных текстов.
- Векторные размеры являются гибкими и управляемыми Размерность векторов в : v3 можно гибко регулировать, чтобы найти баланс между производительностью и объемом памяти, избегая больших накладных расходов на хранение, связанных с высокоразмерными векторами. Это стало возможным благодаря технологии Matryoshka Representation Learning (MRL).
Ссылка на модель с открытым исходным кодом: https://huggingface.co/jinaai/jina-embeddings-v3
Ссылка на API модели: https://jina.ai/?sui=apikey
Ссылка на типовой документ: https://arxiv.org/abs/2409.10173
Краткое руководство по миграции
- v3 - это совершенно новая модель, поэтому векторы и индексы из v2 не могут быть использованы напрямую, и вам нужно заново проиндексировать данные.
- В большинстве сценариев (96%) v3 значительно превосходит v2, в то время как v2 лишь изредка сравняется или даже немного превзойдет v3 в задаче составления резюме на английском языке. Однако, учитывая многоязыковую поддержку и расширенные возможности v3, в большинстве сценариев предпочтение следует отдать v3.
- API версии 3 теперь включает в себя
task
, иdimensions
ответить пениемlate_chunking
Три параметра, точное использование которых можно найти в нашей статье в блоге.
Регулировка размеров
- По умолчанию v3 выводит 1024-мерный вектор, в то время как v2 имеет только 768 измерений. Благодаря обучению представлению "Матрешка" v3 теперь теоретически может выводить векторы любой размерности. Разработчики могут установить
dimensions
Параметры гибко регулируют размерность выходных векторов, чтобы найти оптимальный баланс между стоимостью хранения и производительностью - Если ваш предыдущий проект был разработан на основе API v2, измените название модели непосредственно на
jina-embeddings-v3
невозможно, поскольку размеры по умолчанию изменились. Если вы хотите сохранить структуру данных или размер, соответствующий v2, вы можете установить параметрdimensions=768
Распределение векторов v3 и v2 совершенно разное, даже если они имеют одинаковую размерность. Даже при одинаковой размерности векторы v3 и v2 имеют совершенно разное распределение в семантическом пространстве и поэтому не могут использоваться непосредственно как взаимозаменяемые.
Замена модели
- Сильная многоязыковая поддержка в v3 полностью заменила двуязычную модель в v2 (v2-base-de, v2-base-es, v2-base-zh).
- Для задач чистого кодирования jina-embeddings-v2-based-code по-прежнему остается лучшим выбором. Тесты показывают, что он набирает 0,7753 балла по сравнению с 0,7537 для общих векторов v3 (без набора задач) и 0,7564 для адаптера LoRA, что дает кодированию v2 превосходство в производительности над v3 примерно на 2,81 TP3T.
Параметры миссии
- API v3 генерирует общие векторы хорошего качества, когда параметр задачи не указан, но настоятельно рекомендуется задавать параметр задачи в соответствии с конкретным типом задачи, чтобы получить лучшее представление вектора.
- Чтобы заставить v3 эмулировать поведение v2, используйте
task="text-matching"
Мы рекомендуем попробовать различные варианты задач, чтобы найти оптимальное решение, а не устанавливатьtext-matching
Как универсальная программа. - Если в вашем проекте для поиска информации используется v2, рекомендуется перейти на v3 для типа задачи поиска (
retrieval.passage
ответить пениемretrieval.query
), можно получить лучшие результаты поиска.
Другие соображения
- Для совершенно новых типов задач (что бывает редко) попробуйте установить параметр задачи на None в качестве отправной точки.
- Если вы использовали технику перезаписи меток в v2 для задач классификации с нулевой выборкой, то в v3 вы можете просто установить
task="classification"
Аналогичные результаты получены благодаря тому, что в v3 оптимизировано представление векторов для задачи классификации. - И v2, и v3 поддерживают контекст длиной до 8192 жетонов, но v3 более эффективна благодаря технологии FlashAttention2 и закладывает основу для функции позднего подсчета очков в v3.

Позднее измельчение
- В v3 появилась функция позднего разбиения, которая использует 8192 лексемы для формирования длинного контекста, а затем разбивает его на векторы, так что каждый маленький фрагмент содержит контекстную информацию, что, естественно, делает поиск более точным.
late_chunking
В настоящее время она доступна только в API, поэтому если вы запускаете модели локально, то некоторое время не сможете воспользоваться этой функцией.- начать использовать
late_chunking
Длина текста в каждом запросе не может превышать 8192 лексем, потому что v3 может обрабатывать только такое количество контента за один раз.
Производительность и скорость
- Что касается скорости, то, несмотря на то, что в v3 в три раза больше параметров, чем в v2, умозаключения выполняются быстрее, чем в v2, или, по крайней мере, одинаково, в основном благодаря технологии FlashAttention2.
- Не все графические процессоры поддерживают FlashAttention2. v3 будет работать, если вы используете GPU, который этого не делает, но он может быть немного медленнее, чем v2.
- При использовании API на задержку также влияют такие факторы, как задержка в сети, ограничения скорости и зоны доступности, поэтому задержка API не полностью отражает истинную производительность модели v3.
В отличие от v2, Jina Embeddings v3 распространяется по лицензии CC BY-NC 4.0. v3 можно использовать в коммерческих целях через наш API, AWS или Azure. Исследовательское и некоммерческое использование - без проблем. Для локального коммерческого развертывания, пожалуйста, свяжитесь с нашим отделом продаж для получения лицензии:
https://jina.ai/contact-sales
Поддержка нескольких языков
В настоящее время v3 является ведущей многоязычной векторной моделью в отрасли** и занимает 2-е место в чартах M****TEB для моделей с менее чем 1 млрд параметров. **Она поддерживает 89 языков, охватывая большинство основных языков мира.
Это английский, испанский, китайский, корейский, немецкий, французский, арабский, бенгальский, датский, голландский, финский, грузинский, греческий, хинди, индонезийский, итальянский, латышский, норвежский, польский, португальский, румынский, русский, словацкий, шведский, тайский, турецкий, украинский, урду и вьетнамский. Турецкий, украинский, урду и вьетнамский.
Если вы ранее использовали модели v2 "Английский", "Английский/Немецкий", "Английский/Испанский" или "Английский/Китайский", то теперь вам нужно только изменить model
параметры и выберите соответствующий task
тип, вы можете легко перейти на v3.
# v2 英语-德语
data = {
"model": "jina-embeddings-v2-base-de",
"input": [
"The Force will be with you. Always.",
"Die Macht wird mit dir sein. Immer.",
"The ability to destroy a planet is insignificant next to the power of the Force.",
"Die Fähigkeit, einen Planeten zu zerstören, ist nichts im Vergleich zur Macht der Macht."
]
}
# v3 多语言
data = {
"model": "jina-embeddings-v3",
"task": "retrieval.passage",
"input": [
"The Force will be with you. Always.",
"Die Macht wird mit dir sein. Immer.",
"力量与你同在。永远。",
"La Forza sarà con te. Sempre.",
"フォースと共にあらんことを。いつも。"
]
}
response = requests.post(url, headers=headers, json=data)
Векторное представление для конкретной задачи
В v2 используется общее векторное представление, т.е. все задачи используют одну и ту же модель. v3 предоставляет специально оптимизированные векторные представления для различных задач (например, поиск, классификация, кластеризация и т.д.) для повышения производительности в конкретных сценариях.
Выберите разные task
тип, что эквивалентно указанию модели, какие признаки, относящиеся к данной задаче, следует извлечь, генерируя векторное представление, более адаптированное к требованиям задачи.
Ниже приведен пример базы знаний Lightsaber Repair, демонстрирующий, как перенести код v2 на v3 и ощутить прирост производительности за счет векторных представлений, специфичных для конкретной задачи:
# 实际项目中我们会使用更大的数据集,这个只是示例
knowledge_base = [
"为什么我的光剑刀锋在闪烁?刀锋闪烁可能表示电池电量不足或不稳定的水晶。请为电池充电并检查水晶的稳定性。如果闪烁持续,可能需要重新校准或更换水晶。",
"为什么我的刀锋比以前暗淡?刀锋变暗可能意味着电池电量低或电源分配有问题。首先,请为电池充电。如果问题仍然存在,可能需要更换LED。",
"我可以更换我的光剑刀锋颜色吗?许多光剑允许通过更换水晶或使用剑柄上的控制面板更改颜色设置来自定义刀锋颜色。请参阅您的型号手册以获得详细说明。",
"如果我的光剑过热,我该怎么办?过热可能是由于长时间使用导致的。关闭光剑并让其冷却至少10分钟。如果频繁过热,可能表明内部问题,需由技术人员检查。",
"如何为我的光剑充电?通过剑柄附近的端口,将光剑连接到提供的充电线,确保使用官方充电器以避免损坏电池和电子设备。",
"为什么我的光剑发出奇怪的声音?奇怪的声音可能表示音响板或扬声器有问题。尝试关闭光剑并重新开启。如果问题仍然存在,请联系我们的支持团队以更换音响板。"
]
query = "光剑太暗了"
Для v2 существует только одна задача (сопоставление текста), поэтому нам нужен только один блок кода для примера:
# v2 代码:使用文本匹配任务对知识库和查询进行编码
data = {
"model": "jina-embeddings-v2-base-en",
"normalized": True, # 注意:v3 中不再需要此参数
"input": knowledge_base
}
docs_response = requests.post(url, headers=headers, json=data)
data = {
"model": "jina-embeddings-v2-base-en",
"task": "text-matching",
"input": [query]
}
query_response = requests.post(url, headers=headers, json=data)
v3 предоставляет векторные представления, оптимизированные для решения конкретных задач, включая поиск, разделение, классификацию и сопоставление текстов.
Векторное представление задачи поиска
Мы используем простую базу знаний о ремонте световых мечей в качестве примера, чтобы продемонстрировать разницу между v2 и v3 при решении задач текстового поиска.
Для задач семантического поиска v3 вводит асимметричное кодирование, используя, соответственно, retrieval.passage
ответить пением retrieval.query
Кодирование документов и запросов для повышения производительности и точности поиска.
Кодирование документов: retrieval.passage
data = {
"model": "jina-embeddings-v3",
"task": "retrieval.passage", # "task" 参数是 v3 中的新功能
"late_chunking": True,
"input": knowledge_base
}
response = requests.post(url, headers=headers, json=data)
Код запроса: retrieval.query
data = {
"model": "jina-embeddings-v3",
"task": "retrieval.query",
"late_chunking": True,
"input": [query]
}
response = requests.post(url, headers=headers, json=data)
Примечание: Приведенный выше код включаетlate_chunking
Функция, которая может улучшить кодирование длинного текста, будет подробно описана позже.
Давайте сравним производительность v2 и v3 для запроса "световые мечи слишком темные". v2 возвращает набор менее релевантных совпадений на основе косинусного сходства, как показано ниже:

Напротив, v3 лучше понимает смысл запроса и возвращает более точные результаты, связанные с "внешним видом лезвия светового меча", как показано ниже.

v3 не только выполняет поиск, но и предоставляет несколько других векторных представлений, специфичных для конкретной задачи:
Векторное представление задач разделения
v3 separation
Задания оптимизированы для задач разделения, таких как кластеризация, повторное ранжирование и т. д., например, для разделения различных типов сущностей, что полезно для организации и визуализации больших корпораций.
Пример: Различение персонажей "Звездных войн" и Disney
data = {
"model": "jina-embeddings-v3",
"task": "separation", # 使用 separation 任务
"late_chunking": True,
"input": [
"Darth Vader",
"Luke Skywalker",
"Mickey Mouse",
"Donald Duck"
]
}
response = requests.post(url, headers=headers, json=data)
Векторное представление задач классификации
v3 classification
Задача оптимизирована для задач категоризации текста, таких как анализ настроения и классификация документов, например, классификация текста на положительные и отрицательные комментарии.
Пример: анализ эмоциональных тенденций в рецензиях на фильмы "Звездные войны
data = {
"model": "jina-embeddings-v3",
"task": "classification",
"late_chunking": True,
"input": [
"《星球大战》是一部划时代的杰作,彻底改变了电影业,并永远重新定义了科幻电影!",
"《星球大战》拥有令人惊叹的视觉效果、令人难忘的角色和传奇的叙事,是一部无与伦比的文化现象。",
"《星球大战》是一场过度炒作的灾难,充满了浅薄的角色,毫无有意义的情节!",
}
response = requests.post(url, headers=headers, json=data)
Векторное представление соответствия текста
v3 text-matching
Сосредоточьтесь на задачах семантического сходства, таких как сходство предложений или де-эмфазис, например, исключение повторяющихся предложений или абзацев.
Пример: выявление повторов в строках "Звездных войн
data = {
"model": "jina-embeddings-v3",
"task": "text-matching",
"late_chunking": True,
"input": [
"Luke, I am your father.",
"No, I am your father.",
"Fear leads to anger, anger leads to hate, hate leads to the dark side.",
"Fear leads to anger. Anger leads to hate. Hate leads to suffering."
]
}
response = requests.post(url, headers=headers, json=data)
Поздний чанкинг: улучшение кодирования длинных текстов
v3 представляет late_chunking
параметр, когда late_chunking=True
Когда модель обрабатывает весь документ, а затем разбивает его на несколько блоков, чтобы сгенерировать векторы блоков, содержащие полную контекстную информацию; когда late_chunking=False
Когда модель обрабатывает каждый блок независимо, сгенерированные векторы блоков не содержат контекстной информации по блокам.
принимать к сведению
- начать использовать
late_chunking=True
Общее количество токенов в одном API-запросе не может превышать 8192, что является максимальной длиной контекста, поддерживаемой v3. late_chunking=False
Общее количество токенов не ограничено, но зависит от лимита скорости API Embeddings.
Для обработки длинных текстов включите функцию late_chunking
может значительно улучшить кодирование, поскольку сохраняет контекстную информацию между блоками, делая результирующее векторное представление более полным и точным.
Для оценки мы использовали стенограмму чата. late_chunking
Влияние на эффективность поиска длинных текстов.
history = [
"Sita,你决定好周六生日晚餐要去哪儿了吗?",
"我不确定,对这里的餐厅不太熟悉。",
"我们可以上网看看推荐。",
"那听起来不错,我们就这么办吧!",
"你生日那天想吃什么类型的菜?",
"我特别喜欢墨西哥菜或者意大利菜。",
"这个地方怎么样,Bella Italia?看起来不错。",
"哦,我听说过那个地方!大家都说那儿很好!",
"那我们订张桌子吧?",
"好,我觉得这会是个完美的选择!我们打电话预定吧。"
]
Если использовать v2 для запроса "Какие есть хорошие рекомендации по ресторанам?" полученные результаты не являются особенно релевантными.

При использовании v3 и отсутствии функции поздней сортировки результаты столь же неудовлетворительны.

Однако при использовании v3 и включении late chunking
Когда наиболее релевантный результат (рекомендация хорошего ресторана) занял точно первое место.

Результаты поиска:

Из результатов поиска ясно, что включение late_chunking
После этого v3 может более точно определить чат, соответствующий запросу, и ранжировать наиболее релевантные результаты в первую очередь.
Он также показывает, что late_chunking<span> </span>
Точность поиска длинных текстов может быть эффективно и результативно повышена, особенно в сценариях, требующих глубокого понимания контекстной семантики.
Использование русских вложенных векторов для представления эффективности и производительности балансировки
v3 Принято dimensions
Параметр поддерживает гибкое управление размерами вектора, вы можете настроить размер выходного вектора в соответствии с фактическим спросом и найти баланс между производительностью и объемом памяти.
Меньшая размерность векторов позволяет снизить затраты на хранение векторных баз данных и повысить скорость поиска, но при этом часть информации может быть потеряна, что приведет к снижению производительности.
data = {
"model": "jina-embeddings-v3",
"task": "text-matching",
"dimensions": 768, # 设置向量维度为 768,默认值为 1024
"input": [
"The Force will be with you. Always.",
"力量与你同在。永远。",
"La Forza sarà con te. Sempre.",
"フォースと共にあらんことを。いつも。"
]
}
response = requests.post(url, headers=headers, json=data)
общие проблемы
Вопрос 1: Каковы преимущества использования Late Chunking, если я уже разбил документ на куски перед векторизацией?
A1: Преимущество позднего разделения над предварительным заключается в возможности Обработка всего документа перед разбивкой на части, что позволяет сохранить более полную контекстную информацию . Поздняя сегментация важна для обработки сложных или длинных документов, она может помочь предоставить более релевантный ответ при поиске, поскольку модель имеет целостное понимание документа перед сегментацией. В то время как блоки перед сегментацией обрабатываются независимо от блоков без полного контекста.
Вопрос 2: Почему в задаче парной классификации у v2 более высокий балл, чем у v3? Стоит ли мне беспокоиться?
A2: Кажущийся более высокий результат v2 в задаче парной классификации объясняется главным образом тем, что средние баллы рассчитываются по-разному. Тестовый набор v3 содержит больше языков, поэтому его средние баллы, скорее всего, ниже, чем у v2. На самом деле v3 работает так же хорошо, если не лучше, чем самые современные модели, такие как multilingual-e5, в задаче парной классификации на всех языках.
Вопрос 3: Лучше ли v3 работает с конкретными языками, поддерживаемыми двуязычной моделью v2?
A3: Сравнение производительности двуязычных моделей v3 и v2 на определенных языках Зависит от конкретного языка и типа задания Двуязычная модель v2 в значительной степени оптимизирована для конкретных языков и поэтому может лучше справляться с некоторыми конкретными задачами. Однако v3 разработана для поддержки более широкого спектра многоязычных сценариев, с более сильным межъязыковым обобщением и оптимизирована для различных последующих задач с помощью адаптеров LoRA, ориентированных на конкретные задачи. В результате v3 обычно достигает лучшей общей производительности при работе с несколькими языками или в более сложных сценариях, таких как семантический поиск и категоризация текста.
Если вам нужно работать только с одним конкретным языком, поддерживаемым двуязычной моделью v2 (китайско-английским, англо-немецким, испано-английским), и ваша задача относительно проста, то v2 по-прежнему является хорошим выбором и даже может быть лучше в некоторых случаях.
Однако если вам нужно работать с несколькими языками или если ваша задача сложнее (например, вам нужно выполнить семантический поиск или классификацию текста), то v3 с ее сильными возможностями межъязыкового обобщения и стратегиями оптимизации, основанными на последующих задачах, будет лучшим выбором.
Вопрос 4: Почему v2 превосходит v3 по суммарным задачам и стоит ли мне беспокоиться?
A4: v2 лучше справляется с задачей обобщения, в основном потому, что архитектура ее модели специально оптимизирована для таких задач, как семантическое сходство, которое тесно связано с задачей обобщения. v3 была разработана с целью обеспечения более широкой поддержки задач, особенно задач поиска и классификации, и поэтому она не так хорошо оптимизирована, как v2, для задачи обобщения.
Однако не стоит слишком беспокоиться, поскольку в настоящее время оценка задачи обобщения основывается на тесте SummEval, который измеряет семантическое сходство и не полностью отражает общую способность модели решать задачу обобщения. Учитывая, что v3 хорошо справляется с другими ключевыми задачами, такими как поиск, небольшие различия в производительности при решении задачи обобщения обычно не оказывают существенного влияния на реальные приложения.
резюме
Jina Embeddings v3 - это крупное обновление модели нашей лучшей в своем классе SOTA для задач многоязычного и длиннотекстового поиска. Она поставляется с различными встроенными адаптерами LoRA, которые могут быть настроены для различных сценариев поиска, кластеризации, классификации и сопоставления, в зависимости от ваших потребностей для получения более точных результатов векторизации. Мы настоятельно рекомендуем вам перейти на v3 как можно скорее.
Это лишь некоторые из наших представлений о Jina Embeddings v3. Мы надеемся, что они будут вам полезны. Если у вас есть вопросы, пожалуйста, оставьте комментарий, чтобы обсудить их!
© заявление об авторских правах
Авторское право на статью Круг обмена ИИ Пожалуйста, не воспроизводите без разрешения.
Похожие статьи
Нет комментариев...