Новости
Модели
Продукты
keyboard_arrow_down
Читатель
Читайте URL-адреса и ищите информацию в Интернете для получения более подходящей подготовки для получения степени магистра права.
Вложения
Мультимодальные многоязычные вложения мирового класса.
Реранкер
Нейронный ретривер мирового класса для максимального повышения релевантности поиска.
Глубокий поиск
Ищите, читайте и рассуждайте, пока не найдете лучший ответ.
Более
keyboard_arrow_down
Классификатор
Классификация изображений и текста по нулевому и небольшому количеству кадров.
Сегментатор
Разрежьте длинный текст на куски и выполните токенизацию.

API-документы
Автоматическая генерация кода для вашего второго пилота IDE или LLM
open_in_new


Компания
keyboard_arrow_down
О нас
Связаться с отделом продаж
Стажерская программа
Присоединяйтесь к нам
open_in_new
Скачать логотип
open_in_new
Условия использования


Авторизоваться
login
Двуязычные модели эмбеддингов
Следуйте руководству в Google Colab
Установка необходимых компонентов
Доступ к Hugging Face
Меняем роли: Запросы к немецким документам на английском
Запросы на китайском
Будущее: Больше языков, включая программирование
Технический блог
январь 26, 2024

Двуязычные модели Jina Embeddings v2 теперь в открытом доступе на Hugging Face

Билингвальные модели эмбеддингов с открытым исходным кодом от Jina AI для немецко-английской и китайско-английской языковых пар теперь доступны на Hugging Face. Рассмотрим процесс установки и кросс-языкового поиска.
Colorful "EMBEDDINGS" text above a pile of yellow smileys on a black background with decorative lines at the top.
Scott Martens
Scott Martens • 13 минуты чтения

Jina AI опубликовала свои передовые модели двуязычных эмбеддингов с открытым исходным кодом для языковых пар немецкий-английский и китайский-английский через Hugging Face.

Ich bin ein Berliner: German-English Bilingual Embeddings with 8K Token Length
Jina AI introduces a German/English bilingual embedding model, featuring an extensive 8,192-token length, specifically designed to support German businesses thriving in the U.S. market.
GitHub
8K Token-Length Bilingual Embeddings Break Language Barriers in Chinese and English
The first bilingual Chinese-English embedding model with 8192 token-length.
Discord

В этом руководстве мы рассмотрим минимальную установку и использование, которые охватят:

  1. Загрузку моделей Jina Embedding с Hugging Face.
  2. Использование моделей для получения кодировок текстов на немецком и английском языках.
  3. Создание простейшей поисковой системы на основе эмбеддингов для межъязыковых запросов.

Мы покажем вам, как использовать Jina Embeddings для написания запросов на английском языке, которые находят соответствующие тексты на немецком языке, и наоборот.

Это руководство также подходит для китайской модели. Просто следуйте инструкциям в разделе (ближе к концу) под названием Querying in Chinese, чтобы получить китайско-английскую двуязычную модель и пример документа на китайском языке.

jinaai/jina-embeddings-v2-base-de · Hugging Face
We're on a journey to advance and democratize artificial intelligence through open source and open science.
jinaai/jina-embeddings-v2-base-zh · Hugging Face
We're on a journey to advance and democratize artificial intelligence through open source and open science.

tagДвуязычные модели эмбеддингов

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

Такие модели очень хорошо подходят для приложений межъязыкового поиска информации, что мы и покажем в этом руководстве, но также могут служить основой для чат-ботов на основе RAG, многоязычной категоризации текстов, обобщения, анализа тональности и любых других приложений, использующих эмбеддинги. Используя такие модели, вы можете обрабатывать тексты на обоих языках, как будто они написаны на одном языке.

Хотя многие крупные языковые модели заявляют о поддержке множества различных языков, они поддерживают не все языки одинаково хорошо. Возникает все больше вопросов о предвзятости, вызванной доминированием английского языка в Интернете и искажением входных данных из-за широкого распространения машинно-переведенных текстов. Сосредоточившись на двух языках, мы можем лучше контролировать качество эмбеддингов для обоих, минимизируя предвзятость, создавая при этом гораздо меньшие модели с аналогичной или более высокой производительностью, чем гигантские модели, которые якобы поддерживают десятки языков.

Двуязычные модели Jina Embeddings v2 поддерживают контекст до 8192 входных токенов, что позволяет им не только поддерживать два языка, но и обрабатывать относительно большие фрагменты текста по сравнению с аналогичными моделями. Это делает их идеальными для более сложных случаев использования, где необходимо обрабатывать гораздо больше текстовой информации в эмбеддинги.

tagСледуйте руководству в Google Colab

К этому руководству прилагается блокнот, который вы можете запустить в Google Colab или локально на своей системе.

Google Colaboratory

tagУстановка необходимых компонентов

Убедитесь, что в текущем окружении установлены необходимые библиотеки. Вам понадобится последняя версия transformers, поэтому даже если она уже установлена, выполните:

pip install -U transformers 

В этом руководстве мы будем использовать библиотеку FAISS от Meta для векторного поиска и сравнения. Для ее установки выполните:

pip install faiss-cpu

Мы также будем использовать Beautiful Soup для обработки входных данных в этом руководстве, поэтому убедитесь, что она установлена:

pip install bs4

tagДоступ к Hugging Face

Вам потребуется доступ к Hugging Face, а именно аккаунт и токен доступа для загрузки моделей.

Если у вас нет аккаунта на Hugging Face:

Перейдите на https://huggingface.co/ и вы должны увидеть кнопку "Sign Up" в правом верхнем углу страницы. Нажмите на нее и следуйте инструкциям для создания нового аккаунта.

Главная страница Hugging Face с выделенной кнопкой "Sign Up".

После входа в ваш аккаунт:

Следуйте инструкциям на сайте Hugging Face для получения токена доступа.

User access tokens
We're on a journey to advance and democratize artificial intelligence through open source and open science.
Вам нужно скопировать этот токен в переменную окружения с именем HF_TOKEN. Если вы работаете в ноутбуке (например, в
Google Colab) или устанавливаете его внутри Python-программы, используйте следующий код Python:
import os

os.environ['HF_TOKEN'] = "<your token here>"
В вашей командной оболочке используйте соответствующий синтаксис для установки переменной окружения. В bash:
export HF_TOKEN="<your token here>"
## Загрузка Jina Embeddings v2 для немецкого и английского языков После установки токена вы можете загрузить двуязычную модель Jina Embeddings для немецкого и английского языков, используя библиотеку transformers:
from transformers import AutoModel

model = AutoModel.from_pretrained('jinaai/jina-embeddings-v2-base-de', trust_remote_code=True)
При первом запуске это может занять несколько минут, но модель будет кэширована локально, так что не беспокойтесь, если позже перезапустите этот урок. ## Загрузка данных на английском языке Для этого урока мы возьмем англоязычную версию книги Pro Git: Everything You Need to Know About Git. Эта книга также доступна на китайском и немецком языках, которые мы используем позже в этом уроке. Чтобы скачать версию EPUB, выполните следующую команду:
wget -O progit-en.epub https://open.umn.edu/opentextbooks/formats/3437
Это копирует книгу в файл с именем progit-en.epub в локальную директорию.
Обложка печатного издания "Pro Git" авторов Scott Chacon и Ben Straub.
Обложка печатного издания.
Альтернативно, вы можете просто перейти по ссылке https://open.umn.edu/opentextbooks/formats/3437, чтобы скачать её на локальный диск. Она доступна под лицензией Creative Commons Attribution Non Commercial Share Alike 3.0. ## Обработка данных Этот текст имеет внутреннюю структуру иерархических разделов, которые мы можем легко найти, ища тег <section> в основных данных XHTML. Приведенный ниже код читает файл EPUB и разделяет его, используя внутреннюю структуру файла EPUB и тег <section>, затем преобразует каждый раздел в обычный текст без тегов XHTML. Он создает словарь Python, ключами которого являются строки, указывающие расположение каждого раздела в книге, а значениями - текстовое содержимое этого раздела.
from zipfile import ZipFile
from bs4 import BeautifulSoup
import copy

def decompose_epub(file_name):
    
    def to_top_text(section):
        selected = copy.copy(section)
				while next_section := selected.find("section"):
            next_section.decompose()
        return selected.get_text().strip()

    ret = {}
    with ZipFile(file_name, 'r') as zip:
        for name in zip.namelist():
            if name.endswith(".xhtml"):
                data = zip.read(name)
                doc = BeautifulSoup(data.decode('utf-8'), 'html.parser')
                ret[name + ":top"] = to_top_text(doc)
                for num, sect in enumerate(doc.find_all("section")):
                    ret[name + f"::{num}"] = to_top_text(sect)
    return ret
Затем запустите функцию decompose_epub на загруженном ранее файле EPUB:
book_data = decompose_epub("progit-en.epub")
Теперь переменная book_data будет содержать 583 раздела. Например:
print(book_data['EPUB/ch01-getting-started.xhtml::12'])
Результат:
The Command Line
There are a lot of different ways to use Git.
There are the original command-line tools, and there are many graphical user interfaces of varying capabilities.
For this book, we will be using Git on the command line.
For one, the command line is the only place you can run all Git commands — most of the GUIs implement only a partial subset of Git functionality for simplicity.
If you know how to run the command-line version, you can probably also figure out how to run the GUI version, while the opposite is not necessarily true.
Also, while your choice of graphical client is a matter of personal taste, all users will have the command-line tools installed and available.
So we will expect you to know how to open Terminal in macOS or Command Prompt or PowerShell in Windows.
If you don't know what we're talking about here, you may need to stop and research that quickly so that you can follow the rest of the examples and descriptions in this book.
## Генерация и индексирование эмбеддингов с помощью Jina Embeddings v2 и FAISS Для каждого из 583 разделов мы создадим эмбеддинг и сохраним его в индексе FAISS. Модели Jina Embeddings v2 принимают на вход до 8192 токенов, что для такой книги достаточно большой объем, поэтому нам не нужно выполнять дополнительную сегментацию текста или проверять, не содержит ли какой-либо раздел слишком много токенов. Самый длинный раздел в книге содержит примерно 12 000 символов, что для обычного английского текста должно быть значительно ниже лимита в 8 тысяч токенов. Чтобы создать один эмбеддинг, используйте метод encode загруженной модели. Например:
model.encode([book_data['EPUB/ch01-getting-started.xhtml::12']])
Это возвращает массив, содержащий один 768-мерный вектор:
array([[ 6.11135997e-02,  1.67829826e-01, -1.94809273e-01,
         4.45595086e-02,  3.28837298e-02, -1.33441269e-01,
         1.35364473e-01, -1.23119736e-02,  7.51526654e-02,
        -4.25386652e-02, -6.91794455e-02,  1.03527725e-01,
        -2.90831417e-01, -6.21018047e-03, -2.16205455e-02,
        -2.20803712e-02,  1.50471330e-01, -3.31433356e-01,
        -1.48741454e-01, -2.10959971e-01,  8.80039856e-02,
				....
Это и есть эмбеддинг. Модели Jina Embeddings настроены для пакетной обработки. Оптимальный размер пакета зависит от оборудования, которое вы используете. Большой размер пакета рискует исчерпать память. Маленький размер пакета займет больше времени для обработки.
⚠️
Установка batch_size=5 работала в Google Colab в бесплатной версии без GPU и заняла около часа для генерации всего набора эмбеддингов.
В производственной среде мы рекомендуем использовать гораздо более мощное оборудование или использовать сервис Embedding API от Jina AI. Перейдите по ссылке ниже, чтобы узнать, как это работает и как начать с бесплатным доступом.
Embedding API
Высокопроизводительный, длина контекста 8192 токена, $100 за 1,25 млрд токенов, бесшовная альтернатива OpenAI, бесплатная пробная версия
Приведенный ниже код генерирует эмбеддинги и сохраняет их в индексе FAISS. Установите переменную batch_size в соответствии с вашими ресурсами.
import faiss

batch_size = 5

vector_data = []
faiss_index = faiss.IndexFlatIP(768)

data = [(key, txt) for key, txt in book_data.items()]
batches = [data[i:i + batch_size] for i in range(0, len(data), batch_size)]

for ind, batch in enumerate(batches):
    print(f"Processing batch {ind + 1} of {len(batches)}")
    batch_embeddings = model.encode([x[1] for x in batch], normalize_embeddings=True)
    vector_data.extend(batch)
    faiss_index.add(batch_embeddings)
При работе в производственной среде словарь Python не является адекватным или производительным способом обработки документов и эмбеддингов. Вам следует использовать специализированную векторную базу данных, которая будет иметь свои собственные инструкции по вставке данных. ## Запросы на немецком языке для получения результатов на английском Когда мы делаем запрос к этому набору текстов, происходит следующее: 1. Модель Jina Embeddings для немецкого и английского языков создаст эмбеддинг для запроса. 2. Мы используем индекс FAISS (faiss_index) для получения сохраненного эмбеддинга с наибольшим косинусом к эмбеддингу запроса и вернем его позицию в индексе. 3. Мы найдем соответствующий текст в массиве векторных данных (vector_data) и выведем косинус, расположение текста и сам текст. Это то, что делает функция query ниже.def query(query_str): query = model.encode([query_str], normalize_embeddings=True) cosine, index = faiss_index.search(query, 1) print(f"Cosine: {cosine[0][0]}") loc, txt = vector_data[index[0][0]] print(f"Location: {loc}\\nText:\\n\\n{txt}")

Давайте попробуем это.

# Translation: "How do I roll back to a previous version?"
query("Wie kann ich auf eine frühere Version zurücksetzen?")

Результат:

Cosine: 0.5202275514602661
Location: EPUB/ch02-git-basics-chapter.xhtml::20
Text:

Undoing things with git restore
Git version 2.23.0 introduced a new command: git restore.
It's basically an alternative to git reset which we just covered.
From Git version 2.23.0 onwards, Git will use git restore instead of git reset for many undo operations.
Let's retrace our steps, and undo things with git restore instead of git reset.

Это довольно хороший ответ на вопрос. Попробуем другой:

# Translation: "What does 'version control' mean?"
query("Was bedeutet 'Versionsverwaltung'?")

Результат:

Cosine: 0.5001817941665649
Location: EPUB/ch01-getting-started.xhtml::1
Text:

About Version Control

What is "version control", and why should you care?
Version control is a system that records changes to a file or set of files over time so that you can recall specific versions later.
For the examples in this book, you will use software source code as the files being version controlled, though in reality you can do this with nearly any type of file on a computer.
If you are a graphic or web designer and want to keep every version of an image or layout (which you would most certainly want to), a Version Control System (VCS) is a very wise thing to use.
It allows you to revert selected files back to a previous state, revert the entire project back to a previous state, compare changes over time, see who last modified something that might be causing a problem, who introduced an issue and when, and more.
Using a VCS also generally means that if you screw things up or lose files, you can easily recover.
In addition, you get all this for very little overhead.

Попробуйте задать свои вопросы на немецком языке, чтобы увидеть, насколько хорошо это работает. Как общее правило, при работе с поиском текстовой информации следует запрашивать от трех до пяти ответов вместо одного. Лучший ответ часто не является первым.

tagМеняем роли: Запросы к немецким документам на английском

Книга Pro Git: Everything You Need to Know About Git также доступна на немецком языке. Мы можем использовать эту же модель для демонстрации с обратным порядком языков.

Скачаем электронную книгу:

wget -O progit-de.epub https://open.umn.edu/opentextbooks/formats/3454

Это копирует книгу в файл под названием progit-de.epub. Затем мы обрабатываем её так же, как мы делали с английской книгой:

book_data = decompose_epub("progit-de.epub")

И затем генерируем эмбеддинги так же, как раньше:

batch_size = 5

vector_data = []
faiss_index = faiss.IndexFlatIP(768)

data = [(key, txt) for key, txt in book_data.items()]
batches = [data[i:i + batch_size] for i in range(0, len(data), batch_size)]

for ind, batch in enumerate(batches):
    print(f"Processing batch {ind + 1} of {len(batches)}")
    batch_embeddings = model.encode([x[1] for x in batch], normalize_embeddings=True)
    vector_data.extend(batch)
    faiss_index.add(batch_embeddings)

Теперь мы можем использовать ту же функцию query для поиска на английском языке ответов на немецком:

query("What is version control?")

Результат:

Cosine: 0.6719034910202026
Location: EPUB/ch01-getting-started.xhtml::1
Text:

Was ist Versionsverwaltung?

Was ist „Versionsverwaltung", und warum sollten Sie sich dafür interessieren?
Versionsverwaltung ist ein System, welches die Änderungen an einer oder einer Reihe von Dateien über die Zeit hinweg protokolliert, sodass man später auf eine bestimmte Version zurückgreifen kann.
Die Dateien, die in den Beispielen in diesem Buch unter Versionsverwaltung gestellt werden, enthalten Quelltext von Software, tatsächlich kann in der Praxis nahezu jede Art von Datei per Versionsverwaltung nachverfolgt werden.
Als Grafik- oder Webdesigner möchte man zum Beispiel in der Lage sein, jede Version eines Bildes oder Layouts nachverfolgen zu können. Als solcher wäre es deshalb ratsam, ein Versionsverwaltungssystem (engl. Version Control System, VCS) einzusetzen.
Ein solches System erlaubt es, einzelne Dateien oder auch ein ganzes Projekt in einen früheren Zustand zurückzuversetzen, nachzuvollziehen, wer zuletzt welche Änderungen vorgenommen hat, die möglicherweise Probleme verursachen, herauszufinden wer eine Änderung ursprünglich vorgenommen hat und viele weitere Dinge.
Ein Versionsverwaltungssystem bietet allgemein die Möglichkeit, jederzeit zu einem vorherigen, funktionierenden Zustand zurückzukehren, auch wenn man einmal Mist gebaut oder aus irgendeinem Grund Dateien verloren hat.
All diese Vorteile erhält man für einen nur sehr geringen, zusätzlichen Aufwand.

Заголовок этого раздела переводится как "Что такое контроль версий?", так что это хороший ответ.

tagЗапросы на китайском

Эти примеры будут работать точно так же с Jina Embeddings v2 для китайского и английского языков. Чтобы использовать китайскую модель, просто выполните следующее:

from transformers import AutoModel

model = AutoModel.from_pretrained('jinaai/jina-embeddings-v2-base-zh', trust_remote_code=True)

И чтобы получить китайское издание Pro Git: Everything You Need to Know About Git:

wget -O progit-zh.epub https://open.umn.edu/opentextbooks/formats/3455

Затем обработаем китайскую книгу:

book_data = decompose_epub("progit-zh.epub")

Весь остальной код в этом руководстве будет работать точно так же.

tagБудущее: Больше языков, включая программирование

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

Модели Jina AI компактны и показывают одни из лучших результатов в своем классе, демонстрируя, что не нужна самая большая модель для получения лучшей производительности. Сосредоточившись на двуязычной производительности, мы создаем модели, которые лучше работают с этими языками, легче адаптируются и более экономически эффективны, чем большие модели, обученные на необработанных данных.

Jina Embeddings доступны на Hugging Face, в AWS marketplace для использования в Sagemaker, и через веб-API Jina Embeddings. Они полностью интегрированы во многие фреймворки обработки ИИ и векторные базы данных.

Посетите сайт Jina Embeddings для получения дополнительной информации или свяжитесь с нами, чтобы обсудить, как предложения Jina AI могут вписаться в ваши бизнес-процессы.

Embedding API
Top-performing, 8192-token context length, $100 for 1.25B tokens, seamless OpenAI alternative, free trial
Категории:
Технический блог
rss_feed
Офисы
location_on
Саннивейл, Калифорния
710 Lakeway Dr, Ste 200, Саннивейл, Калифорния 94085, США
location_on
Берлин, Германия (штаб-квартира)
Prinzessinnenstraße 19-20, 10969 Берлин, Германия
location_on
Пекин, Китай
Уровень 5, здание 6, ул. Хайдянь Вест, д. 48, Пекин, Китай
location_on
Шэньчжэнь, Китай
402, этаж 4, здание Fu'an Technology, Шэньчжэнь, Китай
Поиск Фонда
Читатель
Вложения
Реранкер
Глубокий поиск
Классификатор
Сегментатор
API-документация
Получить API-ключ Jina
Ограничение скорости
Статус API
Компания
О нас
Связаться с отделом продаж
отдел новостей
Стажерская программа
Присоединяйтесь к нам
open_in_new
Скачать логотип
open_in_new
Условия
Безопасность
Условия использования
Конфиденциальность
Управление файлами cookie
email
Jina AI © 2020-2025.