/ Модель

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

Контекст
512 токенов
Параметры
137 млн
Архитектура
bert · dense
Опубликована
15 фев 2023

dragon-plus-context-encoder

Заполнение пропусковТекст → текст6 профессий

Контекстный BERT-энкодер DRAGON+ преобразует текстовые фрагменты в векторы для семантического поиска в паре с энкодером запросов.

3 398скачиваний за 30 дней40лайковвеса обновлены27 сен 2023

Бенчмарки

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

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

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

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

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

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

facebook/dragon-plus-context-encoder — контекстный энкодер DRAGON+, плотной модели для семантического поиска, разработанной исследовательской группой DRAGON. Это BERT-base размера, обученный на основе Shitao/RetroMAE с дополнительным обучением на данных, расширенных из корпуса MS MARCO. Модель является частью асимметричного двухэнкодерного ретривера: её параметры отличаются от параметров парного энкодера запросов.

Энкодер преобразует текстовые контексты в векторные представления для поиска релевантных фрагментов по запросу. Он подходит для построения систем поиска и retrieval-компонентов RAG в паре с facebook/dragon-plus-query-encoder. Архитектура — BERT с 136,7 млн параметров и контекстом до 512 токенов; формат весов — PyTorch. В карточке также указан fill-mask, но назначение DRAGON+ — плотный retrieval.

Качество в README приведено для полного DRAGON+: 39,0 на MS MARCO Dev и 47,4 на BEIR; эти показатели не следует считать отдельной оценкой контекстного энкодера. Сведения о лицензии в предоставленных данных отсутствуют.

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

  • индексация текстовых документов для векторного поиска
  • поиск релевантных фрагментов по пользовательскому запросу
  • подготовка контекстов для retrieval-компонента RAG

Ограничения

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

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

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

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

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

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

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

Открыть на Hugging Face

DRAGON+ is a BERT-base sized dense retriever initialized from RetroMAE and further trained on the data augmented from MS MARCO corpus, following the approach described in How to Train Your DRAGON: Diverse Augmentation Towards Generalizable Dense Retrieval.

The associated GitHub repository is available here https://github.com/facebookresearch/dpr-scale/tree/main/dragon. We use asymmetric dual encoder, with two distinctly parameterized encoders. The following models are also available:

ModelInitializationMARCO DevBEIRQuery Encoder PathContext Encoder Path
DRAGON+Shitao/RetroMAE39.047.4facebook/dragon-plus-query-encoderfacebook/dragon-plus-context-encoder
DRAGON-RoBERTaRoBERTa-base39.447.2facebook/dragon-roberta-query-encoderfacebook/dragon-roberta-context-encoder

Usage (HuggingFace Transformers)

Using the model directly available in HuggingFace transformers .

import torch
from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained('facebook/dragon-plus-query-encoder')
query_encoder = AutoModel.from_pretrained('facebook/dragon-plus-query-encoder')
context_encoder = AutoModel.from_pretrained('facebook/dragon-plus-context-encoder')

# We use msmarco query and passages as an example
query =  "Where was Marie Curie born?"
contexts = [
    "Maria Sklodowska, later known as Marie Curie, was born on November 7, 1867.",
    "Born in Paris on 15 May 1859, Pierre Curie was the son of Eugène Curie, a doctor of French Catholic origin from Alsace."
]
# Apply tokenizer
query_input = tokenizer(query, return_tensors='pt')
ctx_input = tokenizer(contexts, padding=True, truncation=True, return_tensors='pt')
# Compute embeddings: take the last-layer hidden state of the [CLS] token
query_emb = query_encoder(**query_input).last_hidden_state[:, 0, :]
ctx_emb = context_encoder(**ctx_input).last_hidden_state[:, 0, :]
# Compute similarity scores using dot product
score1 = query_emb @ ctx_emb[0]  # 396.5625
score2 = query_emb @ ctx_emb[1]  # 393.8340

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

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

GPU в ailist

Универсальный рантайм · fill-mask

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

Подбираем GPU…

Класс архитектуры
BertForMaskedLM
Ревизия весов
68074e7

0 моделей