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

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


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


Авторизоваться
login
Техническое описание jina-colbert-v2
Асимметричное встраивание в ColBERT
Многоязычная поддержка для более чем 89 языков
Матрёшечное обучение представлений
Начало работы с Jina ColBERT v2
star
Избранное
пресс-релиз
август 30, 2024

Jina ColBERT v2: многоязычный ретривер с поздним взаимодействием для эмбеддингов и переранжирования

Jina ColBERT v2 поддерживает 89 языков с улучшенной производительностью поиска, настраиваемой размерностью выходных данных и длиной токена 8192.
Dark-themed coding interface displaying English and Japanese characters with "JINA COLBERT V2" highlighted in the center.
Jina AI
Jina AI • 10 минуты чтения

Мы рады представить Jina ColBERT v2 (jina-colbert-v2), продвинутую модель поиска с поздним взаимодействием, построенную на архитектуре ColBERT. Эта новая языковая модель улучшает производительность jina-colbert-v1-en и добавляет многоязычную поддержку и динамические выходные размерности.

Новый релиз предлагает следующие возможности:

  • Превосходная производительность поиска по сравнению с оригинальной ColBERT-v2 (+6,5%) и нашим предыдущим релизом jina-colbert-v1-en (+5,4%).
  • Многоязычная поддержка для 89 языков, обеспечивающая высокую производительность для основных мировых языков.
  • Настраиваемые пользователем размеры выходных эмбеддингов благодаря Matryoshka representation learning, позволяющие гибко балансировать между эффективностью и точностью.

tagТехническое описание jina-colbert-v2

Полный технический отчет доступен на arXiv:

Jina-ColBERT-v2: A General-Purpose Multilingual Late Interaction Retriever
Multi-vector dense models, such as ColBERT, have proven highly effective in information retrieval. ColBERT's late interaction scoring approximates the joint query-document attention seen in cross-encoders while maintaining inference efficiency closer to traditional dense retrieval models, thanks to its bi-encoder architecture and recent optimizations in indexing and search. In this paper, we introduce several improvements to the ColBERT model architecture and training pipeline, leveraging techniques successful in the more established single-vector embedding model paradigm, particularly those suited for heterogeneous multilingual data. Our new model, Jina-ColBERT-v2, demonstrates strong performance across a range of English and multilingual retrieval tasks, while also cutting storage requirements by up to 50% compared to previous models.
arXiv.orgRohan Jha
jina-colbert-v2 jina-colbert-v1-en Original ColBERTv2
Average of 14 English
BEIR tasks
0.521 0.494 0.489
Multilingual 89 languages English-only English-only
Output dimensions 128, 96, or 64 Fixed 128 Fixed 128
Max query length 32 tokens 32 tokens 32 tokens
Max document length 8192 tokens 8192 tokens 512 tokens
Parameters 560M 137M 110M
Model size 1.1GB 550MB 438MB

tagАсимметричное встраивание в ColBERT

ColBERT основан на архитектуре BERT с добавлением позднего взаимодействия и асимметричного кодирования запросов и документов.

What is ColBERT and Late Interaction and Why They Matter in Search?
Jina AI's ColBERT on Hugging Face has set Twitter abuzz, bringing a fresh perspective to search with its 8192-token capability. This article unpacks the nuances of ColBERT and ColBERTv2, showcasing their innovative designs and why their late interaction feature is a game-changer for search.

Асимметричная природа ColBERT означает, что при использовании моделей вроде jina-colbert-v2 или jina-colbert-v1-en необходимо указывать, выполняете ли вы встраивание запроса, документа или обоих (для переранжирования). Эта дополнительная гибкость повышает производительность по сравнению с однородными моделями встраивания в задачах поиска.

tagМногоязычная поддержка для более чем 89 языков

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

Chart of language distribution in training data, highlighting dominance of English and Chinese.
Распределение данных предварительного обучения по языкам (указано кодами ISO-639) в логарифмическом масштабе.

Сегодня Jina ColBERT v2 выделяется как единственная многоязычная ColBERT-подобная модель, которая генерирует компактные эмбеддинги, значительно превосходя BM25-based поиск по всем тестируемым языкам на бенчмарках MIRACL.

Bar chart comparing jina-colbert-v2 and BM25 performance across 20 languages on multilingual tasks.
Производительность Jina ColBERT v2 по 16 языкам в сравнении с BM25 на бенчмарках MIRACL.

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

Model Name Average score
(14 BEIR English-only benchmarks)
Multilingual Support
jina-colbert-v2 0.521 Multilingual
jina-colbert-v1-en 0.494 English-only
ColBERT v2.0 0.489 English-only
AnswerAI-ColBERT-small 0.549 English-only
Bar chart showing model evaluations on English BEIR datasets, with several models like 'jina-colbert' and 'BM25'.
Оценка jina-colbert-v2 на выборке англоязычных наборов данных из бенчмарка BEIR.

tagМатрёшечное обучение представлений

Matryoshka Representation Learning – это техника обучения моделей для поддержки различных размеров выходных векторов при минимизации потерь в точности. Мы обучаем скрытые слои сети с несколькими разными линейными проекционными головами — финальными слоями нейронной сети — каждая из которых поддерживает разный выходной размер. Jina ColBERT v2 поддерживает выходные векторы размерностью 128, 96 и 64.

Jina ColBERT v2 по умолчанию создает эмбеддинги размерностью 128, но может производить векторы размерностью 96 и 64, которые практически идентичны по производительности, но короче на 25% и 50% соответственно.

Таблица ниже показывает производительность по метрике nDGCjina-colbert-v2 для топ-10 результатов (nDGC@10) по шести наборам данных из бенчмарка BEIR. Здесь видно, что разница в производительности между 128 и 96 размерностями едва достигает 1%, а между 128 и 64 размерностями - менее 1,5%.

Выходные размерностиСредний показатель
(nDGC@10 для 6 бенчмарков)
1280.565
960.558
640.556
Столбчатая диаграмма бенчмарков BEIR, показывающая оценки наборов данных от nfcorpus до msmarco, где jina-colbert-v2.64 показывает отличные результаты.
Производительность Jina ColBERT v2 при различных выходных размерностях.

Уменьшение размера выходных векторов экономит пространство и ускоряет работу приложений, таких как векторный информационный поиск, которым необходимо сравнивать разные векторы или измерять расстояние между ними.

Это имеет значительные последствия для затрат, даже просто с точки зрения сокращения хранилища. Например, используя калькулятор стоимости Qdrant Cloud, хранение 100 миллионов документов на AWS с 128-мерными векторами для каждого имеет расчетную стоимость 1 319,24 долларов США в месяц. При 64 размерностях эта сумма снижается до 659,62 долларов США.

tagНачало работы с Jina ColBERT v2

Jina ColBERT v2 доступен через Jina Search Foundation API, AWS marketplace и на Azure. Он также доступен для некоммерческого использования (CC BY-NC-4.0) через Hugging Face.

tagЧерез Jina Search Foundation API

Для эмбеддингов

Следующая команда curl показывает, как указать входные данные и параметры для получения эмбеддингов документов из jina-colbert-v2 через Jina Embeddings API. Чтобы получить векторы предпочтительного размера, укажите 128 или 64 для параметра dimensions. Этот параметр необязательный, и значение по умолчанию - 128.

Входные документы будут обрезаны, если они длиннее 8192 токенов.

Укажите ваш API-ключ Jina в заголовке авторизации Authorization: Bearer <YOUR JINA API KEY>:

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", # Для эмбеддингов запросов см. ниже
	"embedding_type": "float",
	"input": [
		"Your document text string goes here", 
		"You can send multiple texts", 
		"Each text can be up to 8192 tokens long"
    ]}'

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

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": "query", # Это должно быть указано для эмбеддингов запросов
	"embedding_type": "float",
	"input": [
		"Your query text string goes here", 
		"You can send multiple texts", 
		"Each query text can be up to 32 tokens long"
    ]}'
Embedding API
Мультимодальные, двуязычные эмбеддинги с длинным контекстом для вашего поиска и RAG.

Для переранжирования

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

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": "What is the population of Berlin?",
      "top_n": 3,
      "documents": [
        "Berlin's population grew by 0.7 percent in 2023 compared with the previous year. Accordingly, around 27,300 more residents lived in Berlin at the end of the last year than in 2022. Those of 30 to under 40 years old form the numerically largest age group. With roughly 881,000 foreign residents from around 170 nations and an average age of the population of 42.5 years old.",
        "Mount Berlin is a glacier-covered volcano in Marie Byrd Land, Antarctica, 100 kilometres (62 mi) from the Amundsen Sea. It is a roughly 20-kilometre-wide (12 mi) mountain with parasitic vents that consists of two coalesced volcanoes: Berlin proper with the 2-kilometre-wide (1.2 mi) Berlin Crater and Merrem Peak with a 2.5-by-1-kilometre-wide (1.55 mi × 0.62 mi) crater, 3.5 kilometres (2.2 mi) away from Berlin.",
        "Population as of 31.12.2023 by nationality and federal states Land\\tTotal\\tGermans\\tForeigners\\tincluding EU-states number\\t%\\tnumber\\t%",
        "The urban area of Berlin has a population of over 4.5 million and is therefore the most populous urban area in Germany. The Berlin-Brandenburg capital region has around 6.2 million inhabitants and is Germany's second-largest metropolitan region after the Rhine-Ruhr region, and the sixth-biggest metropolitan region by GDP in the European Union.",
        "Irving Berlin (born Israel Beilin) was an American composer and songwriter. His music forms a large part of the Great American Songbook. Berlin received numerous honors including an Academy Award, a Grammy Award, and a Tony Award.",
        "Berlin is a town in the Capitol Planning Region, Connecticut, United States. The population was 20,175 at the 2020 census.",
        "Berlin is the capital and largest city of Germany, both by area and by population. Its more than 3.85 million inhabitants make it the European Union's most populous city, as measured by population within city limits.",
        "Berlin, Berlin ist eine für die ARD produzierte Fernsehserie, die von 2002 bis 2005 im Vorabendprogramm des Ersten ausgestrahlt wurde. Regie führten unter anderem Franziska Meyer Price, Christoph Schnee, Sven Unterwaldt Jr. und Titus Selge."
        ]
    }'

Обратите внимание на аргумент top_n, который указывает количество документов, которые вы хотите получить. Например, если ваше приложение использует только лучшее совпадение, установите top_n равным 1.

Для примеров кода на Python и других языках программирования и фреймворках перейдите на страницу Jina AI Embeddings API или выберите jina-colbert-v2 из выпадающего меню на странице Jina Reranker API.

Reranker API
Максимизируйте релевантность поиска и точность RAG с легкостью.

tagЧерез Stanford ColBERT

Вы также можете использовать Jina ColBERT v2 как прямую замену для ColBERT v2 в библиотеке Stanford ColBERT. Просто укажите 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 = ["Your list of texts"] 
query_vectors = ckpt.queryFromText(docs)
⚠️
Для использования приведенного выше кода необходимо установить einops и flash_attn.

tagЧерез RAGatouille

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

from ragatouille import RAGPretrainedModel

RAG = RAGPretrainedModel.from_pretrained("jinaai/jina-colbert-v2")
docs = ["Your list of texts"]
RAG.index(docs, index_name="your_index_name")
query = "Your query"
results = RAG.search(query)
⚠️
Для использования приведенного выше кода необходимо установить einops и flash_attn.

tagЧерез Qdrant

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

Создание новой коллекции с использованием операции 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': [
        'Your text string goes here',
        'You can send multiple texts',
        'Each text can be up to 8192 tokens long'
    ]
}

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": [
        "how many tokens in an input do Jina AI's embedding models support?"
    ]
}

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)

tagИтоги

Jina ColBERT v2 (jina-colbert-v2) основывается на высокой производительности jina-colbert-v1-en и расширяет свои возможности на широкий спектр мировых языков. Благодаря поддержке нескольких размеров эмбеддингов, jina-colbert-v2 позволяет пользователям настраивать баланс между точностью и эффективностью в соответствии с их конкретными случаями использования, потенциально обеспечивая значительную экономию времени и вычислительных затрат.

Эта модель объединяет все эти функции в единый пакет по конкурентоспособной цене, доступный через интуитивно понятный веб-API и совместимый с любой вычислительной средой, поддерживающей HTTP-запросы. Попробуйте сами с 1 миллионом бесплатных токенов, чтобы увидеть, как это может улучшить ваши приложения и процессы.

Категории:
star
Избранное
пресс-релиз
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.