Первый в мире многоязычный ColBERT: Jina ColBERT V2 и его технология "русской матрешки

Новости ИИОбновлено 12 месяцев назад Круг обмена ИИ
7.3K 00

全球首个多语言 ColBERT:Jina ColBERT V2 和它的‘俄罗斯套娃’技术

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

Чтобы решить эти проблемы, мы усовершенствовали архитектуру и процесс обучения ColBERT, а также совершили прорыв в области многоязычной обработки. Последняя версия Jina-ColBERT-v2 поддерживает 89 языков и вводит опцию пользовательского размера вывода, что значительно снижает требования к хранению данных и повышает эффективность и точность многоязычного поиска.

Основные моменты нового выпуска

  1. повышение производительностиУлучшение производительности поиска на английском языке на 6,51 TP3T по сравнению с оригинальным ColBERT-v2 и на 5,41 TP3T по сравнению с его предшественником, jina-colbert-v1-en.
  2. Поддержка нескольких языков: Новая версия поддерживает до 89 языков, включая английский, арабский, китайский, русский, японский и другие языки, а также языки программирования.
  3. Выходные размеры могут быть изготовлены по индивидуальному заказуВ новой версии используется технология Matryoshka Representation Learning (MRL) с 128, 96 и 64 размерностями выходных векторов, что позволяет пользователю выбрать подходящую размерность в соответствии с его потребностями.

Полный текст технического отчета можно найти на сайте arXiv: https://arxiv.org/abs/2408.16672.

Производительность jina-colbert-v2 с первого взгляда

С точки зрения производительности поиска jina-colbert-v2 демонстрирует значительное преимущество над предыдущей версией, как в задачах поиска на английском языке, так и в поддержке нескольких языков. Преимущества этой многовекторной модели также могут быть полностью использованы с унаследованной от Jina AI длиной входных данных 8192 токена. Ниже приведено сравнение с другими версиями, где хорошо видны основные улучшения:

jina-colbert-v2jina-colbert-v1-enОригинальный ColBERTv2
Среднее количество заданий английского языка BEIR0.5210.4940.489
Поддержка нескольких языков89 языковТолько английскийТолько английский
размер выходного сигнала128, 96 или 64Исправлено 128Исправлено 128
Максимальная длина запроса32 жетоны32 жетона32 жетона
Максимальная длина документа8192 жетонов8192 жетонов512 жетонов
Количество параметров560 миллионов137 миллионов110 миллионов
Размер модели1,1 ГБ550 МБ438 МБ

1. Повышение производительности

В задаче поиска на английском языке jina-colbert-v2 превосходит предыдущее поколение jina-colbert-v1-en и оригинальный ColBERT v2, приближаясь к уровню модели AnswerAI-ColBERT-small, которая была разработана специально для английского языка.

Название моделиСредний балл по контрольному тесту английского языка BEIRПоддержка нескольких языков
jina-colbert-v20.521Поддержка нескольких языков
jina-colbert-v1-en0.494Только английский
ColBERT v2.00.489Только английский
ОтветAI-ColBERT-small0.549Только английский
全球首个多语言 ColBERT:Jina ColBERT V2 和它的‘俄罗斯套娃’技术Производительность Jina ColBERT v2 на английском наборе данных BEIR

2. Многоязычная поддержка

Jina-ColBERT-v2 - единственная модель ColBERT, поддерживающая несколько языков.В результате получается очень компактный вектор встраивания, который значительно лучше традиционного. BM25 Методы поиска (на всех языках, прошедших бенчмаркинг в MIRACL).

jina-colbert-v2 Учебный корпус охватывает 89 языков и включает 450 миллионов слабо контролируемых семантически связанных пар предложений, пар "вопрос-ответ" и пар "запрос-документ". Половина из них на английском языке, а оставшаяся часть включает 29 различных неанглийских языков, а также 3,0% данных о языках программирования и 4,3% межъязыковых данных.

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

全球首个多语言 ColBERT:Jina ColBERT V2 和它的‘俄罗斯套娃’技术Распределение языков в наборе данных для предварительного обучения

На следующем рисунке показаны результаты сравнения производительности Jina-ColBERT-v2 и BM25 на 16 языках в бенчмарке MIRACL.

全球首个多语言 ColBERT:Jina ColBERT V2 和它的‘俄罗斯套娃’技术

3. Обучение представлению русской матрешки

Обучение представлению "Матрешка" (MRL) это гибкий и эффективный метод обучения, который минимизирует потери точности при поддержке различных размерностей выходного вектора. Он реализуется путем введения нескольких линейных слоев в скрытый слой модели, каждый из которых обрабатывает различные измерения. Подробнее об этой методике см. на сайте: https://arxiv.org/abs/2205.13147.

По умолчаниюJina-ColBERT-v2 генерирует 128-мерные Embedding, но вы можете выбрать более короткие векторы, например, 96 или 64 размерности.. Даже если вектор укорачивается на 25% или 50%, его влияние на производительность практически незначительно (падение составляет менее 1,5%). Другими словами, независимо от длины векторов, модель сохраняет эффективность и точность работы.

В таблице ниже показана производительность Jina-ColBERT-v2 на десяти лучших результатах (nDGC@10) этих шести бенчмарков BEIR. Видно, чтоРазница в производительности между размерами 128 и 96 составляет менее 11 TP3T, а между размерами 128 и 64 - менее 1,51 TP3T.

размер выходного сигналаСредняя оценка (nDGC@10 для 6 бенчмарков)
1280.565
960.558
640.556

На следующем рисунке показана производительность Jina-ColBERT-v2 при различных размерах выходного сигнала.

全球首个多语言 ColBERT:Jina ColBERT V2 和它的‘俄罗斯套娃’技术Выбор меньших выходных векторов не только экономит место для хранения, но и повышает скорость вычислений, особенно в сценариях, где необходимо сравнивать векторы или вычислять расстояния, например, в системах векторного поиска.

По данным Qdrant Cloud Cost Estimator, стоимость хранения 100 миллионов документов на AWS с использованием 128-мерных векторов составляет 1319,24 доллара в месяц, тогда как при использовании 64-мерных векторов затраты можно сократить вдвое - до 659,62 доллара в месяц. Это не только увеличение скорости, но и значительное сокращение расходов.

Как начать работу с Jina ColBERT v2

Jina ColBERT v2 уже доступна на платформах Jina Search Foundation API, AWS Marketplace и Azure. Она также доступна под лицензией CC BY-NC-4.0 на сайте Обнимающееся лицо С открытым исходным кодом для некоммерческого использования.

  • AWS Marketplace: https://aws.amazon.com/marketplace/seller-profile?id=seller-stch2ludm6vgy
  • Лазурь: https://azuremarketplace.microsoft.com/en-gb/marketplace/apps?search=Jina
  • Обнимающееся лицо: https://huggingface.co/jinaai/jina-colbert-v2

 

Через API Jina Search Foundation

для встраивания

Использование Jina Embedding API для получения встраивания jina-colbert-v2 - самый простой и прямой способ.

Два ключевых параметра:

dimensions: Указывает размерность вывода Embedding, по умолчанию 128, вы также можете выбрать 64.

input_type: определяет тип входа.query ограничивается 32 лексемами, которые будут автоматически усечены, а document Кодирование документов может осуществляться в автономном режиме, так что в момент запроса необходимо кодировать только часть запроса, что значительно повышает скорость обработки.

Ключ API Jina доступен по адресу jina.ai/embeddings.

curl https://api.jina.ai/v1/multi-vector \\
     -H "Content-Type: application/json" \\
     -H "Authorization: Bearer <YOUR JINA API KEY>" \\
     -d '{
     "model": "jina-colbert-v2",
     "dimensions": 128, # 或 64
     "input_type": "document", # 这里需要注意input_type 是 document 还是 query
     "embedding_type": "float",
     "input": [
         "在此输入你的文档文本",
         "你可以发送多个文本",
         "每个文本最长可达 8192 个标记"
    ]}'

Для реранкера

Чтобы использовать API Jina Reranker через jina-colbert-v2Для этого, чтобы передать запрос и несколько документов, а также вернуть оценку соответствия Rerankable, выполните следующий запрос:

curl https://api.jina.ai/v1/rerank \\
     -H "Content-Type: application/json" \\
     -H "Authorization: Bearer <YOUR JINA API KEY>" \\
     -d '{
      "model": "jina-colbert-v2",
      "query": "柏林的人口是多少?",
      "top_n": 3,
      "documents": [
        "2023年柏林的人口比去年增长了0.7%。因此,到去年年底,柏林的居民人数比2022年增加了约27300人。30岁到40岁的人群是数量最多的年龄组。柏林拥有约88.1万外国居民,来自约170个国家,平均年龄为42.5岁。",
        "柏林山是南极洲玛丽·伯德地的一个冰川覆盖的火山,距离阿蒙森海约100公里(62英里)。它是一个宽约20公里(12英里)的山峰,有寄生火山口,由两座合并的火山组成:柏林火山,其火山口宽2公里(1.2英里),以及距离柏林火山约3.5公里(2.2英里)的Merrem峰,火山口宽2.5×1公里(1.55英里×0.62英里)。",
        "截至2023年12月31日,各联邦州按国籍和州统计的人口数据",
        "柏林的都市区人口超过450万,是德国人口最多的都市区。柏林-勃兰登堡首都地区约有620万人口,是德国第二大都市区,仅次于莱茵-鲁尔区,并且是欧盟第六大都市区(按GDP计算)。",
        "欧文·柏林(原名以色列·贝林)是一位美国作曲家和词曲作者。他的音乐是《伟大的美国歌本》的一部分。柏林获得了许多荣誉,包括奥斯卡奖、格莱美奖和托尼奖。",
        "柏林是美国康涅狄格州首都规划区的一个城镇。2020年人口普查时人口为20,175。",
        "柏林是德国的首都和最大城市,无论是面积还是人口。其超过385万居民使其成为欧盟人口最多的城市(按城市限界内人口计算)。",
        "《柏林,柏林》是一部为ARD制作的电视剧,于2002年至2005年在德国第一电视台的晚间节目中播出。导演包括弗朗茨斯卡·迈耶·普莱斯、克里斯托夫·施内、斯文·温特瓦尔特和蒂图斯·塞尔格。"
        ]
    }'

Примечание. top_n параметр, задающий количество документов, возвращаемых при поиске. Если вам нужны только оптимальные совпадения, вы можете задать параметр top_n Установите значение 1.

Другие примеры кода на Python или других языках можно найти на странице https://jina.ai/embeddings или выбрать из выпадающего меню на https://jina.ai/reranker/. jina-colbert-v2.

Через Стэнфорд Колберт

Если вы использовали библиотеку Stanford ColBERT, теперь вы можете легко заменить ее на версию Jina ColBERT v2. Просто укажите jinaai/jina-colbert-v2 в качестве источника модели.

from colbert.infra import ColBERTConfig
from colbert.modeling.checkpoint import Checkpoint

ckpt = Checkpoint("jinaai/jina-colbert-v2", colbert_config=ColBERTConfig())
docs = ["你的文本列表"]
query_vectors = ckpt.queryFromText(docs)

Via RAGatouille

Jina ColBERT v2 также интегрирована в систему RAGatouille через RAGPretrainedModel.from_pretrained() Этот метод легко скачать и использовать.

from ragatouille import RAGPretrainedModel

RAG = RAGPretrainedModel.from_pretrained("jinaai/jina-colbert-v2")
docs = ["你的文本列表"]
RAG.index(docs, index_name="your_index_name")
query = "你的查询"
results = RAG.search(query)

через Qdrant

Начиная с версии Qdrant 1.10, Qdrant поддерживает мультивекторы и модель позднего взаимодействия, которые вы можете использовать непосредственно с jina-colbert-v2. Вне зависимости от того, развертываете ли вы Qdrant локально или на облачном хостинге, вы можете вставлять документы в мультивекторную коллекцию, просто правильно настроив параметр multivector_config в клиенте.

Создание новой коллекции с помощью операции MAX_SIM

from qdrant_client import QdrantClient, models

qdrant_client = QdrantClient(
    url="<YOUR_ENDPOINT>",
    api_key="<YOUR_API_KEY>",
)

qdrant_client.create_collection(
    collection_name="{collection_name}",
    vectors_config={
        "colbert": models.VectorParams(
            size=128,
            distance=models.Distance.COSINE,
            multivector_config=models.MultiVectorConfig(
                comparator=models.MultiVectorComparator.MAX_SIM
            ),
        )
    }
)

⚠️ Правильная настройка multivector_config Параметры - это ключ к использованию модели ColBERT в Qdrant.

Вставка документа в мультивекторный набор

import requests
from qdrant_client import QdrantClient, models

url = 'https://api.jina.ai/v1/multi-vector'

headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer <YOUR BEARER>'
}

data = {
    'model': 'jina-colbert-v2',
    'input_type': 'query',
    'embedding_type': 'float',
    'input': [
        '在此输入你的文本',
        '你可以发送多个文本',
        '每个文本最长可达 8192 个标记'
    ]
}

response = requests.post(url, headers=headers, json=data)
rows = response.json()["data"]

qdrant_client = QdrantClient(
    url="<YOUR_ENDPOINT>",
    api_key="<YOUR API_KEY>",
)

for i, row in enumerate(rows):
    qdrant_client.upsert(
        collection_name="{collection_name}",
        points=[
            models.PointStruct(
                id=i,
                vector=row["embeddings"],
                payload={"text": data["input"][i]}
            )
        ],
    )

(вычисление) набор запросов

from qdrant_client import QdrantClient, models
import requests

url = 'https://api.jina.ai/v1/multi-vector'

headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer <YOUR BEARER>'
}

data = {
    'model': 'jina-colbert-v2',
    "input_type": "query",
    "embedding_type": "float",
    "input": [
        "Jina AI 的Embedding模型支持多少个标记的输入?"
    ]
}

response = requests.post(url, headers=headers, json=data)
vector = response.json()["data"][0]["embeddings"]

qdrant_client = QdrantClient(
    url="<YOUR_ENDPOINT>",
    api_key="<YOUR API_KEY>",
)

results = qdrant_client.query_points(
    collection_name="{collection_name}",
    query=vector,
)

print(results)

резюме

Основываясь на своей предшественнице, jina-colbert-v2 охватывает 89 глобальных языков и широкий выбор размеров вывода Embedding, позволяя пользователям гибко балансировать между требованиями к точности и эффективности, а также экономить вычисления и временные затраты. Перейдите по ссылке https://jina.ai, чтобы попробовать его прямо сейчас и получить 1 миллион бесплатных токенов.

© заявление об авторских правах

Похожие статьи

Нет комментариев

Вы должны войти в систему, чтобы участвовать в комментариях!
Войти сейчас
нет
Нет комментариев...