Elastic
Jina AI
Модели
API
keyboard_arrow_down
Читатель
Читайте URL-адреса и ищите информацию в Интернете для получения более подходящей подготовки для получения степени магистра права.
Вложения
Мультимодальные многоязычные векторные представления.
Реранкер
Инструмент переранжирования для максимизации релевантности результатов поиска.
Elastic Inference Service
Запускайте модели Jina непосредственно в Elasticsearch.
MCP
terminal
CLI
article
llms.txt
smart_toy
Агенты
data_object
Схема
menu_book
Документы
Авторизоваться
login
Краткий обзор ColBERT
Объяснение ранжирования с помощью тепловых карт
Объяснение результатов ИИ с помощью Jina-ColBERT
Технический блог
июнь 19, 2024

Простота объяснения ИИ: Как позднее взаимодействие делает Jina-ColBERT прозрачным

Объяснимость и прозрачность AI — горячие темы. Как мы можем доверять AI, если мы не видим, как он работает? Jina-ColBERT показывает, как при правильной архитектуре модели можно легко заставить AI раскрыть свои секреты.
Digital representation of a golden building seen through a blue and yellow mesh pattern, evoking a technological vibe.
Maximilian Werk, Scott Martens • 11 минуты чтения

Одна из давних проблем AI-моделей заключается в том, что нейронные сети не объясняют, как они производят свои результаты. Не всегда понятно, насколько это действительно является проблемой для искусственного интеллекта. Когда мы просим людей объяснить их рассуждения, они обычно рационализируют, как правило, даже не осознавая этого, давая наиболее правдоподобные объяснения своих действий без какого-либо представления о том, что на самом деле происходит в их головах.

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

Пятьдесят лет назад американский философ Томас Нагель написал влиятельное эссе под названием Каково это — быть летучей мышью? Он утверждал, что должно быть что-то особенное в том, чтобы быть летучей мышью: видеть мир так, как его видит летучая мышь, и воспринимать существование так, как это делает летучая мышь. Однако, по мнению Нагеля, даже если бы мы знали все возможные факты о том, как работают мозг, органы чувств и тело летучей мыши, мы всё равно не знали бы, каково это — быть летучей мышью.

Объяснимость AI — это такая же проблема. Мы знаем все факты об AI-модели. Это просто множество чисел с конечной точностью, расположенных в последовательности матриц. Мы можем легко проверить, что каждый результат модели является следствием правильной арифметики, но эта информация бесполезна в качестве объяснения.

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

Эта статья показывает, как позднее взаимодействие обеспечивает объяснимость, используя модель Jina-ColBERT jina-colbert-v1-en и библиотеку Python Matplotlib.

tagКраткий обзор ColBERT

ColBERT был представлен в работе Khattab & Zaharia (2020) как расширение модели BERT, впервые представленной в 2018 году компанией Google. Модели Jina-ColBERT от Jina AI основаны на этой работе и более поздней архитектуре ColBERT v2, предложенной в работе Santhanam, et al. (2021). Модели типа ColBERT могут использоваться для создания эмбеддингов, но они имеют некоторые дополнительные возможности при использовании в качестве модели переранжирования. Главное преимущество — это позднее взаимодействие, которое представляет собой способ структурирования проблемы семантического сходства текстов иначе, чем в стандартных моделях эмбеддингов.

tagМодели эмбеддингов

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

Сначала мы создаем эмбеддинги для двух текстов по отдельности. Для каждого текста:

  1. Токенизатор разбивает текст на фрагменты примерно размером со слово.
  2. Каждый токен отображается в вектор.
  3. Векторы токенов взаимодействуют через систему внимания и сверточные слои, добавляя контекстную информацию к представлению каждого токена.
  4. Слой пулинга преобразует эти модифицированные векторы токенов в единый вектор эмбеддинга.
Diagram of text classification model with convolutional, attention, pooling layers, and text tokens on a black background.
Схематическое изображение модели эмбеддинга, создающей единый эмбеддинг для текста.

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

Flowchart describing a text similarity calculation process with tokenization, embedding models, and scoring.
В обычной модели эмбеддингов документы сравниваются путем прямого сравнения их эмбеддингов.

Оценка происходит путем сравнения двух целых эмбеддингов друг с другом, без какой-либо конкретной информации о токенах. Все взаимодействие между токенами происходит "рано", то есть до того, как два текста сравниваются друг с другом.

tagМодели переранжирования

Модели переранжирования работают иначе.

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

Давайте посмотрим, как это работает конкретно с моделью переранжировщика jina-colbert-v1-en, используя API Jina Reranker и Python.

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

Сначала вы должны установить последнюю версию библиотеки requests в вашу среду Python. Вы можете сделать это с помощью следующей команды:

pip install requests -U

Далее посетите страницу API Jina Reranker и получите бесплатный API-токен, который позволяет обработать до миллиона токенов текста. Скопируйте ключ API-токена из нижней части страницы, как показано ниже:

Screenshot of Reranker API's interface with explanatory text and red-highlighted code segment for search optimization.
Как получить персональный ключ API на странице API Jina Reranker.

Мы будем использовать следующий текст запроса:

  • "Elephants eat 150 kg of food per day."

И сравним этот запрос с тремя текстами:

  • "Elephants eat 150 kg of food per day."
  • "Every day, the average elephant consumes roughly 150 kg of plants."
  • "The rain in Spain falls mainly on the plain."

Первый документ идентичен запросу, второй является перефразировкой первого, а последний текст совершенно не связан с темой.

Используйте следующий код Python для получения оценок, присвоив свой токен API Jina Reranker переменной jina_api_key:

import requests

url = "<https://api.jina.ai/v1/rerank>"
jina_api_key = "<YOUR JINA RERANKER API TOKEN HERE>"

headers = {
    "Content-Type": "application/json",
    "Authorization": f"Bearer {jina_api_key}"
}
data = {
    "model": "jina-colbert-v1-en",
    "query": "Elephants eat 150 kg of food per day.",
    "documents": [
        "Elephants eat 150 kg of food per day.",
        "Every day, the average elephant consumes roughly 150 kg of food.",
        "The rain in Spain falls mainly on the plain.",
    ],
    "top_n": 3
}

response = requests.post(url, headers=headers, json=data)
for item in response.json()['results']:
    print(f"{item['relevance_score']} : {item['document']['text']}")

Запуск этого кода из Python-файла или в блокноте должен дать следующий результат:

11.15625 : Elephants eat 150 kg of food per day.
9.6328125 : Every day, the average elephant consumes roughly 150 kg of food.
1.568359375 : The rain in Spain falls mainly on the plain.

Точное совпадение имеет самую высокую оценку, как мы и ожидали, в то время как перефразировка имеет вторую по величине оценку, а совершенно не связанный текст имеет гораздо более низкую оценку.

tagОценка с использованием ColBERT

Что отличает переранжирование ColBERT от оценки на основе эмбеддингов, так это то, что токены двух текстов сравниваются друг с другом во время процесса оценки. Два текста никогда не имеют собственных эмбеддингов.

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

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

Detailed diagram showing computational model with tokens, scored and categorized into "Early" and "Late" interactions.

Это взаимодействие является "поздним": токены взаимодействуют между двумя текстами, когда мы сравниваем их друг с другом. Но помните, что "позднее" взаимодействие не исключает "раннего" взаимодействия. Сравниваемые пары векторов токенов уже содержат информацию об их конкретных контекстах.

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

tagОбъяснение ранжирования с помощью тепловых карт

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

tagНастройка

Мы создали файл библиотеки Python, содержащий код для доступа к модели jina-colbert-v1-en и использования seaborn, matplotlib и Pillow для создания тепловых карт. Вы можете скачать эту библиотеку напрямую с GitHub, или использовать предоставленный блокнот в своей системе, или на Google Colab.

Сначала установите требования. Вам понадобится последняя версия библиотеки requests в вашей среде Python. Поэтому, если вы еще этого не сделали, выполните:

pip install requests -U 

Затем установите основные библиотеки:

pip install matplotlib seaborn torch Pillow

Далее, скачайте jina_colbert_heatmaps.py с GitHub. Вы можете сделать это через веб-браузер или в командной строке, если установлен wget:

wget https://raw.githubusercontent.com/jina-ai/workshops/main/notebooks/heatmaps/jina_colbert_heatmaps.py

С установленными библиотеками нам нужно объявить только одну функцию для остальной части статьи:

from jina_colbert_heatmaps import JinaColbertHeatmapMaker

def create_heatmap(query, document, figsize=None):
    heat_map_maker = JinaColbertHeatmapMaker(jina_api_key=jina_api_key)
    # get token embeddings for the query
    query_emb = heat_map_maker.embed(query, is_query=True)
    # get token embeddings for the target document
    document_emb = heat_map_maker.embed(document, is_query=False)
    return heat_map_maker.compute_heatmap(document_emb[0], query_emb[0], figsize)

tagРезультаты

Теперь, когда мы можем создавать тепловые карты, давайте создадим несколько и посмотрим, что они нам расскажут.

Выполните следующую команду в Python:

create_heatmap("Elephants eat 150 kg of food per day.", "Elephants eat 150 kg of food per day.")

Результатом будет тепловая карта, которая выглядит так:

Heatmap visualizing relationships between phrases like "elephants eat 150 kg of food per day" with color gradients indicating

Это тепловая карта уровней активации между парами токенов при сравнении двух идентичных текстов. Каждый квадрат показывает взаимодействие между двумя токенами, по одному из каждого текста. Дополнительные токены [CLS] и [SEP] указывают на начало и конец текста соответственно, а q и d вставляются сразу после токена [CLS] в запросах и целевых документах соответственно. Это позволяет модели учитывать взаимодействия между токенами и началом и концом текстов, а также позволяет представлениям токенов быть чувствительными к тому, находятся ли они в запросах или целевых документах.

Чем ярче квадрат, тем больше взаимодействие между двумя токенами, что указывает на их семантическую связь. Оценка взаимодействия каждой пары токенов находится в диапазоне от -1.0 до 1.0. Квадраты, выделенные красной рамкой, учитываются в итоговой оценке: для каждого токена в запросе его наивысший уровень взаимодействия с любым токеном документа является значением, которое учитывается.

Лучшие совпадения — самые яркие точки — и максимальные значения в красных рамках почти все находятся точно на диагонали и имеют очень сильное взаимодействие. Единственными исключениями являются "технические" токены [CLS], q и d, а также слово "of", которое является высокочастотным "стоп-словом" в английском языке, несущим очень мало независимой информации.

Давайте возьмем структурно похожее предложение — "Cats eat 50 g of food per day." — и посмотрим, как взаимодействуют его токены:

create_heatmap("Elephants eat 150 kg of food per day.", "Cats eat 50 g of food per day.")
Heatmap visualizing the relevance of keywords like "elephants", "food", and "kg" with varying intensity colors, indicating da

Опять же, лучшие совпадения находятся в основном на диагонали, потому что слова часто одинаковы, и структура предложений почти идентична. Даже "cats" и "elephants" совпадают из-за их общих контекстов, хотя и не очень хорошо.

Чем менее похож контекст, тем хуже совпадение. Рассмотрим текст "Employees eat at the company canteen."

create_heatmap("Elephants eat 150 kg of food per day.", "Employees eat at the company canteen.")
Heatmap visualization showing word correlations from news articles, including topics like food, elephants, and work environme

Хотя структурно похожи, единственное сильное совпадение здесь — между двумя случаями "eat." Тематически это очень разные предложения, даже если их структура очень параллельна.

Глядя на темноту цветов в квадратах с красной рамкой, мы можем видеть, как модель ранжировала бы их как совпадения для "Elephants eat 150 kg of food per day", и jina-colbert-v1-en подтверждает эту интуицию:

Score Text
11.15625 Elephants eat 150 kg of food per day.
8.3671875 Cats eat 50 g of food per day.
3.734375 Employees eat at the company canteen.

Теперь давайте сравним "Elephants eat 150 kg of food per day." с предложением, которое имеет практически то же значение, но другую формулировку: "Every day, the average elephant consumes roughly 150 kg of food."

create_heatmap("Elephants eat 150 kg of food per day.", "Every day, the average elephant consumes roughly 150 kg of food.")
Colorful heatmap visualizing the relationship between elephant consumption metrics and other variables.

Обратите внимание на сильное взаимодействие между словом "eat" в первом предложении и "consume" во втором. Разница в словарном запасе не мешает Jina-ColBERT распознать общий смысл.

Кроме того, "every day" хорошо соответствует "per day", даже несмотря на то, что они находятся в совершенно разных местах. Только малозначимое слово "of" является аномальным несовпадением.

Теперь давайте сравним тот же запрос с совершенно не связанным текстом: "The rain in Spain falls mainly on the plain."

create_heatmap("Elephants eat 150 kg of food per day.", "The rain in Spain falls mainly on the plain.")
Seaborn heatmap visualizing frequencies of topic discussions over months, shaded from red to dark blue.

Как видно, взаимодействия "лучших совпадений" имеют гораздо более низкие оценки для этой пары, и между словами в двух текстах практически нет взаимодействия. Интуитивно мы ожидаем, что этот текст получит низкую оценку по сравнению с "Every day, the average elephant consumes roughly 150 kg of food", и jina-colbert-v1-en с этим согласен:

Score Text
9.6328125 Every day, the average elephant consumes roughly 150 kg of food.
1.568359375 The rain in Spain falls mainly on the plain.

tagДлинные тексты

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

Все модели Jina-ColBERT поддерживают входной контекст размером 8192 токена, что примерно эквивалентно 16 стандартным страницам текста с одинарным интервалом.

Мы также можем создавать тепловые карты для этих асимметричных случаев. Например, возьмем первый раздел страницы Википедии об индийских слонах:

Screenshot of Wikipedia page on Indian elephants, featuring articles, three elephant images, and conservation status.

Чтобы увидеть этот текст в виде обычного текста, переданного в jina-colbert-v1-en, нажмите эту ссылку.

Этот текст содержит 364 слова, поэтому наша тепловая карта не будет квадратной:

create_heatmap("Elephants eat 150 kg of food per day.", wikipedia_elephants, figsize=(50,7))
Graphical heatmap displaying genetic data, with red and orange dots indicating varying expression levels across base pairs an

Мы видим, что слово "elephants" совпадает во многих местах текста. Это неудивительно в тексте о слонах. Но мы также можем увидеть область, где взаимодействие намного сильнее:

Genomic heatmap with red and black patterns, axis labeled 'XNTY', and highlighted regions indicating data points.

Что здесь происходит? С помощью Jina-ColBERT мы можем найти часть более длинного текста, которой это соответствует. Оказывается, это четвертое предложение второго абзаца:

The species is classified as a megaherbivore and consume up to 150 kg (330 lb) of plant matter per day.

Здесь повторяется та же информация, что и в тексте запроса. Если мы посмотрим на тепловую карту только для этого предложения, мы увидим сильные совпадения:

Heatmap displaying word co-occurrence with a focus on "elephants," "food," and "day," with color intensity indicating the str

Jina-ColBERT предоставляет средства для точного определения тех областей в длинном тексте, которые вызвали совпадение с запросом. Это ведет к лучшей отладке и большей объяснимости. Не требуется особых знаний, чтобы понять, как происходит сопоставление.

tagОбъяснение результатов ИИ с помощью Jina-ColBERT

Эмбеддинги являются основной технологией в современном ИИ. Практически все, что мы делаем, основано на идее, что сложные, обучаемые отношения во входных данных могут быть выражены в геометрии многомерных пространств. Однако простым людям очень сложно понять пространственные отношения в тысячах или миллионах измерений.

ColBERT - это шаг назад от этого уровня абстракции. Это не полное решение проблемы объяснения того, что делает модель ИИ, но оно прямо указывает на то, какие части наших данных ответственны за наши результаты.

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

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

Категории:
Технический блог
rss_feed

Читать далее
март 11, 2026 • 7 минуты чтения
Bootstrapping Audio Embeddings from Multimodal LLMs
Han Xiao
Abstract illustration of a sound wave or heartbeat, formed by blue, orange, and gray dots on a white background.
март 06, 2026 • 6 минуты чтения
Identifying Embedding Models from Raw Numerical Values
Han Xiao
Fingerprint illustration made from numbers, showcasing digital and high-tech design on a light background.
сентябрь 09, 2025 • 11 минуты чтения
Multimodal Embeddings in Llama.cpp and GGUF
Andrei Ungureanu
Alex C-G
Cartoon llama in the center of a white background, emitting laser-like beams from its eyes. The illustration creates a playfu
Текущий язык / тема
Search Foundation
Читатель
Вложения
Реранкер
Получить API-ключ Jina
Ограничение скорости
О нас
Новости
Загрузить логотип Jina
open_in_new
Скачать логотип Elastic
open_in_new
Статус API
Elastic © 2026.БезопасностьУсловия использованияКонфиденциальностьУправление файлами cookieНе продавайте и не передавайте мою личную информацию третьим лицам.
Данный веб-сайт и весь связанный с ним контент, программное обеспечение, продукты и услуги предназначены исключительно для профессионального использования. Использование в потребительских целях не предполагается и не рекомендуется.