/ Модель

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

Контекст
8 194 токена
Параметры
659 млн
Лицензия
Apache 2.0
Архитектура
xlm-roberta · dense
Базовая модель
bge-m3
Библиотека
transformers
Опубликована
14 авг 2024

ViRanker

Классификация текстаТекст → label7 профессий

ViRanker — дообученный на BAAI/bge-m3 переранжировщик, который оценивает релевантность текстовых фрагментов вьетнамскому запросу.

23 066скачиваний за 30 дней17лайковвеса обновлены16 июн 2025

Бенчмарки

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

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

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

В подключённых источниках результатов для этой модели пока нет.

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

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

ViRanker — дообученная модель namdp-ptit на базе BAAI/bge-m3 для переранжирования текстовых документов по запросу. Она принимает пару «запрос — фрагмент текста» и выдаёт оценку релевантности: более высокий балл означает более подходящий фрагмент; оценку можно преобразовать функцией sigmoid в диапазон от 0 до 1. Модель основана на XLM-RoBERTa, содержит около 658,7 млн параметров и поддерживает контекст до 8194 токенов.

Модель предназначена для уточнения результатов текстового поиска: сначала поисковая система находит кандидатов, затем ViRanker сортирует их по соответствию запросу. В карточке приведено сравнение на вьетнамском наборе MS MARCO Passage Reranking — Vi Dev; результаты показывают качество на этой оценке, но не гарантируют аналогичного качества на других данных. В метаданных указан вьетнамский язык. Модель распространяется по лицензии Apache-2.0.

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

  • переранжирование результатов вьетнамского поискового запроса
  • сортировка найденных документов по релевантности
  • выбор наиболее подходящих фрагментов для RAG
  • оценка соответствия пары «запрос — документ»

Ограничения

В README приведена оценка только на вьетнамском наборе MS MARCO Passage Reranking — Vi Dev; качество на других языках и корпусах не подтверждено. Для ранжирования модель обрабатывает пары запросов и текстов, поэтому её обычно применяют после этапа первичного поиска.

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

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

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

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

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

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

Открыть на Hugging Face

Reranker

Different from embedding model, reranker uses question and document as input and directly output similarity instead of embedding. You can get a relevance score by inputting query and passage to the reranker. And the score can be mapped to a float value in [0,1] by sigmoid function.

Usage

Using FlagEmbedding

pip install -U FlagEmbedding

Get relevance scores (higher scores indicate more relevance):

from FlagEmbedding import FlagReranker

reranker = FlagReranker('namdp-ptit/ViRanker',
                        use_fp16=True)  # Setting use_fp16 to True speeds up computation with a slight performance degradation

score = reranker.compute_score(['ai là vị vua cuối cùng của việt nam', 'vua bảo đại là vị vua cuối cùng của nước ta'])
print(score)  # 13.71875

# You can map the scores into 0-1 by set "normalize=True", which will apply sigmoid function to the score
score = reranker.compute_score(['ai là vị vua cuối cùng của việt nam', 'vua bảo đại là vị vua cuối cùng của nước ta'],
                               normalize=True)
print(score)  # 0.99999889840464

scores = reranker.compute_score(
    [
        ['ai là vị vua cuối cùng của việt nam', 'vua bảo đại là vị vua cuối cùng của nước ta'],
        ['ai là vị vua cuối cùng của việt nam', 'lý nam đế là vị vua đầu tiên của nước ta']
    ]
)
print(scores)  # [13.7265625, -8.53125]

# You can map the scores into 0-1 by set "normalize=True", which will apply sigmoid function to the score
scores = reranker.compute_score(
    [
        ['ai là vị vua cuối cùng của việt nam', 'vua bảo đại là vị vua cuối của nước ta'],
        ['ai là vị vua cuối cùng của việt nam', 'lý nam đế là vị vua đầu tiên của nước ta']
    ],
    normalize=True
)
print(scores)  # [0.99999889840464, 0.00019716942196222918]

Using Huggingface transformers

pip install -U transformers

Get relevance scores (higher scores indicate more relevance):

import torch
from transformers import AutoModelForSequenceClassification, AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained('namdp-ptit/ViRanker')
model = AutoModelForSequenceClassification.from_pretrained('namdp-ptit/ViRanker')
model.eval()

pairs = [
    ['ai là vị vua cuối cùng của việt nam', 'vua bảo đại là vị vua cuối cùng của nước ta'],
    ['ai là vị vua cuối cùng của việt nam', 'lý nam đế là vị vua đầu tiên của nước ta']
],
with torch.no_grad():
    inputs = tokenizer(pairs, padding=True, truncation=True, return_tensors='pt', max_length=512)
    scores = model(**inputs, return_dict=True).logits.view(-1, ).float()
    print(scores)

Fine-tune

Data Format

Train data should be a json file, where each line is a dict like this:

{"query": str, "pos": List[str], "neg": List[str]}

query is the query, and pos is a list of positive texts, neg is a list of negative texts. If you have no negative texts for a query, you can random sample some from the entire corpus as the negatives.

Besides, for each query in the train data, we used LLMs to generate hard negative for them by asking LLMs to create a document that is the opposite one of the documents in 'pos'.

Performance

Below is a comparision table of the results we achieved compared to some other pre-trained Cross-Encoders on the MS MMarco Passage Reranking - Vi - Dev dataset.

Model NameNDCG@3MRR@3NDCG@5MRR@5NDCG@10MRR@10
namdp-ptit/ViRanker0.68150.66410.69830.68940.73020.7107
itdainb/PhoRanker0.66250.64580.71470.67310.74220.6830
kien-vu-uet/finetuned-phobert-passage-rerank-best-eval0.09630.08830.13960.11310.16810.1246
BAAI/bge-reranker-v2-m30.60870.58410.65130.60620.68720.6209
BAAI/bge-reranker-v2-gemma0.60880.59080.64460.61080.67850.6249

Contact

Email: phuongnamdpn2k2@gmail.com

LinkedIn: Dang Phuong Nam

Facebook: Phương Nam

Support The Project

If you find this project helpful and wish to support its ongoing development, here are some ways you can contribute:

  1. Star the Repository: Show your appreciation by starring the repository. Your support motivates further development and enhancements.
  2. Contribute: We welcome your contributions! You can help by reporting bugs, submitting pull requests, or suggesting new features.
  3. Donate: If you’d like to support financially, consider making a donation. You can donate through:
    • Vietcombank: 9912692172 - DANG PHUONG NAM

Thank you for your support!

Citation

Please cite as

@misc{ViRanker,
  title={ViRanker: A Cross-encoder Model for Vietnamese Text Ranking},
  author={Nam Dang Phuong},
  year={2024},
  publisher={Huggingface},
}

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

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

GPU в ailist

Универсальный рантайм · transformers · text-classification

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

Подбираем GPU…

Класс архитектуры
XLMRobertaForSequenceClassification
Ревизия весов
922bd0d

0 моделей