/ Модель

Характеристики

Контекст
512 токенов
Параметры
424 млн
Архитектура
bert · dense
Опубликована
9 дек 2024

ListConRanker

Ранжирование текстаТекст → score5 профессий

Плотная BERT-модель ByteDance для спискового переранжирования пассажей по релевантности запросу.

142скачиваний за 30 дней12лайковвеса обновлены20 июн 2025

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Тесты пользователейпока нет

Никто ещё не опубликовал тест этой модели. Соберите бенчмарк из своих задач — результат появится здесь.

  1. Добавьте модель в бенчмарк

    Вместе с другими моделями категории «Ранжирование» — сравнение идёт внутри одной категории.

  2. Опишите свои задачи

    Напишите запросы, при необходимости приложите файлы и эталонные ответы.

  3. Запустите и опубликуйте

    Модели ответят на каждую задачу, судья оценит ответы. Опубликованный результат появится на этой странице.

Публичные оценки4

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

  • CMedQAv2-reranking

    main_score

    Результат

    0,8938

    MTEB

    Публичная таблицаревизия совпадает

  • MMarcoReranking

    main_score

    Результат

    0,443

    MTEB

    Публичная таблицаревизия совпадает

  • CMedQAv1-reranking

    main_score

    Результат

    0,9055

    MTEB

    Публичная таблицаревизия совпадает

  • T2Reranking

    main_score

    Результат

    0,6915

    MTEB

    Публичная таблицаревизия совпадает

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

ByteDance ListConRanker — плотная модель ранжирования текстов на основе архитектуры BERT, разработанная ByteDance. Она предназначена для спискового переранжирования: по запросу модель сравнивает несколько пассажей и упорядочивает их по релевантности. Для сопоставления пассажей используется модуль ListTransformer, который учитывает глобальные контрастивные отношения между ними, а ListAttention помогает сохранять признаки запроса. Обучение проводилось в два этапа с Circle Loss на данных примерно из 2,6 млн запросов и нескольких наборов данных, включая cMedQA, MMarcoReranking, T2Reranking, Huatuo, MARC, XL-Sum и CSL.

Модель содержит 424,3 млн параметров, принимает текст и имеет контекстное окно 512 токенов. В README приведены результаты на задачах переранжирования, включая медицинские наборы данных и MMarcoReranking. При обучении на запрос обрабатывали около 20 пассажей; при использовании с существенно большими списками возможны ограничения по памяти и качеству. Авторы отдельно предупреждают, что стратегия усечения в sentence-transformers может не соответствовать устройству модели и снижать качество. Лицензия в предоставленных данных не указана.

Сценарии применения

  • переранжирование результатов поиска по запросу
  • сортировка пассажей по релевантности
  • отбор ответов на медицинские вопросы
  • улучшение ранжирования в системах поиска документов

Ограничения

Во время обучения модель обрабатывала около 20 пассажей на запрос; применение к существенно большим спискам может быть ограничено памятью и качеством. Авторы предупреждают, что усечение текста в sentence-transformers может не соответствовать устройству модели и снижать качество.

Для каких профессий подходит5

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Также подходит для

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

ListConRanker

Model

  • We propose a Listwise-encoded Contrastive text reRanker (ListConRanker), includes a ListTransformer module for listwise encoding. The ListTransformer can facilitate global contrastive information learning between passage features, including the clustering of similar passages, the clustering between dissimilar passages, and the distinction between similar and dissimilar passages. Besides, we propose ListAttention to help ListTransformer maintain the features of the query while learning global comparative information.
  • The training loss function is Circle Loss[1]. Compared with cross-entropy loss and ranking loss, it can solve the problems of low data efficiency and unsmooth gradient change.

Data

The training data consists of approximately 2.6 million queries, each corresponding to multiple passages. The data comes from the training sets of several datasets, including cMedQA1.0, cMedQA2.0, MMarcoReranking, T2Reranking, huatuo, MARC, XL-sum, CSL and so on.

Training

We trained the model in two stages. In the first stage, we freeze the parameters of embedding model and only train the ListTransformer for 4 epochs with a batch size of 1024. In the second stage, we do not freeze any parameter and train for another 2 epochs with a batch size of 256.

Inference

Due to the limited memory of GPUs, we input about 20 passages at a time for each query during training. However, during actual use, there may be situations where far more than 20 passages are input at the same time (e.g, MMarcoReranking).

To reduce the discrepancy between training and inference, we propose iterative inference. The iterative inference feeds the passages into the ListConRanker multiple times, and each time it only decides the ranking of the passage at the end of the list.

Performance

ModelcMedQA1.0cMedQA2.0MMarcoRerankingT2RerankingAvg.
LdIR-Qwen2-reranker-1.5B86.5087.1139.3568.8470.45
zpoint-large-embedding-zh91.1190.0738.8769.2972.34
xiaobu-embedding-v290.9690.4139.9169.0372.58
Conan-embedding-v191.3989.7241.5868.3672.76
ListConRanker90.5589.3843.8869.1773.25
- w/o Iterative Inference90.2089.9837.5269.1771.72

How to use

from transfoermers import AutoModelForSequenceClassification, AutoTokenizer

reranker = AutoModelForSequenceClassification.from_pretrained('ByteDance/ListConRanker', trust_remote_code=True)

# [query, passages_1, passage_2, ..., passage_n]
batch = [
    [
        '皮蛋是寒性的食物吗', # query
        '营养医师介绍皮蛋是属于凉性的食物,中医认为皮蛋可治眼疼、牙疼、高血压、耳鸣眩晕等疾病。体虚者要少吃。',  # passage_1
        '皮蛋这种食品是在中国地域才常见的传统食品,它的生长汗青也是非常的悠长。',  # passage_2
        '喜欢皮蛋的人会觉得皮蛋是最美味的食物,不喜欢皮蛋的人则觉得皮蛋是黑暗料理,尤其很多外国朋友都不理解我们吃皮蛋的习惯' # passage_3
    ],
    [
        '月有阴晴圆缺的意义', # query
        '形容的是月所有的状态,晴朗明媚,阴沉混沌,有月圆时,但多数时总是有缺陷。',  # passage_1
        '人有悲欢离合,月有阴晴圆缺这句话意思是人有悲欢离合的变迁,月有阴晴圆缺的转换。',  # passage_2
        '既然是诗歌,又哪里会有真正含义呢? 大概可以说:人生有太多坎坷,苦难,从容坦荡面对就好。', # passage_3
        '一零七六年苏轼贬官密州,时年四十一岁的他政治上很不得志,时值中秋佳节,非常想念自己的弟弟子由内心颇感忧郁,情绪低沉,有感而发写了这首词。' # passage_4
    ]
]

# for conventional inference, please manage the batch size by yourself
scores = reranker.multi_passage(batch)
print(scores)
# [0.5126814246177673, 0.33125635981559753, 0.3642643094062805, 0.6367220282554626, 0.7166246175765991, 0.4281482696533203, 0.3530198335647583]

# for iterative inferfence, only a batch size of 1 is supported
# the scores do not carry similarity meaning and are only used for ranking
scores = reranker.multi_passage_in_iterative_inference(batch[0])
print(scores)
# [0.5126813650131226, 0.3312564790248871, 0.3642643094062805]

tokenizer = AutoTokenizer.from_pretrained('ByteDance/ListConRanker')
inputs = tokenizer(
    [
        [
            "皮蛋是寒性的食物吗",
            "营养医师介绍皮蛋是属于凉性的食物,中医认为皮蛋可治眼疼、牙疼、高血压、耳鸣眩晕等疾病。体虚者要少吃。",
        ],
        [
            "皮蛋是寒性的食物吗",
            "皮蛋这种食品是在中国地域才常见的传统食品,它的生长汗青也是非常的悠长。",
        ],
        [
            "月有阴晴圆缺的意义",
            "形容的是月所有的状态,晴朗明媚,阴沉混沌,有月圆时,但多数时总是有缺陷。",
        ],
    ],
    return_tensors="pt",
    padding=True,
    truncation=False
)
# tensor([[0.5070], [0.3334], [0.6294]], device='cuda:0', dtype=torch.float16, grad_fn=<ViewBackward0>)

or using the sentence_transformers library (We do not recommend using sentence_transformers. Because its truncation strategy may not match the model design, which may lead to performance degradation.):

from sentence_transformers import CrossEncoder

model = CrossEncoder('ByteDance/ListConRanker', trust_remote_code=True)

inputs = [
  [
    "皮蛋是寒性的食物吗",
    "营养医师介绍皮蛋是属于凉性的食物,中医认为皮蛋可治眼疼、牙疼、高血压、耳鸣眩晕等疾病。体虚者要少吃。",
  ],
  [
    "皮蛋是寒性的食物吗",
    "皮蛋这种食品是在中国地域才常见的传统食品,它的生长汗青也是非常的悠长。",
  ],
  [
    "月有阴晴圆缺的意义",
    "形容的是月所有的状态,晴朗明媚,阴沉混沌,有月圆时,但多数时总是有缺陷。",
  ],
]
scores = model.predict(inputs)
print(scores)

To reproduce the results with iterative inference, please run:

python3 eval_listconranker_iterative_inference.py

To reproduce the results without iterative inference, please run:

python3 eval_listconranker.py

Reference

  1. https://arxiv.org/abs/2002.10857
  2. https://github.com/FlagOpen/FlagEmbedding
  3. https://arxiv.org/abs/2408.15710

License

This work is licensed under a MIT License and the weight of models is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм

Можно запустить

Подбираем GPU…

Класс архитектуры
ListConRanker
Ревизия весов
95ae6a5

0 моделей