/ Модель

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

Контекст
512 токенов
Параметры
137 млн
Архитектура
bert · dense

mpnet-retriever-discourse

ЭмбеддингиТекст → embedding10 профессий

Дообученная MPNet-модель Pinecone преобразует предложения и абзацы в эмбеддинги для семантического поиска и извлечения документов в системах вопросно-ответного поиска.

119скачиваний за 30 дней2лайкавеса обновлены30 янв 2022

Бенчмарки

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

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

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

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

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

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

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

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

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

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

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

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

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

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

MPNet Retriever (Discourse) — модель эмбеддингов на базе MPNet, дообученная Джеймсом Бриггсом из Pinecone. Она кодирует предложения и абзацы в плотные векторы размерностью 768 и предназначена для поиска релевантных фрагментов в задачах открытого вопросно-ответного поиска, в том числе по техническим форумам Hugging Face, PyTorch, Streamlit и TensorFlow.

Модель основана на архитектуре BERT и содержит 136,7 млн параметров; максимальная длина контекста — 512 токенов. Дообучение на парах вопросов и ответов использовало функцию потерь Multiple Negatives Ranking Loss с косинусным сходством. Её можно применять для семантического поиска и отбора документов для последующей системы вопросно-ответных ответов.

Модель принимает текст и выдаёт векторные представления, но сама по себе не генерирует ответы. Веса опубликованы в формате PyTorch; лицензия в предоставленных данных не указана.

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

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

Ограничения

Модель выдаёт эмбеддинги и не формирует готовые ответы; контекст ограничен 512 токенами. Обучение ориентировано на пары вопросов и ответов с технических ML-форумов, поэтому качество в других областях может отличаться.

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

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

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

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

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

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

Открыть на Hugging Face

MPNet Retriever (Discourse)

This is a sentence-transformers model: It maps sentences & paragraphs to a 768 dimensional dense vector space and can be used as a retriever model in open-domain question-answering tasks.

Usage (Sentence-Transformers)

Using this model becomes easy when you have sentence-transformers installed:

pip install -U sentence-transformers

Then you can use the model like this:

from sentence_transformers import SentenceTransformer
sentences = ["This is an example sentence", "Each sentence is converted"]

model = SentenceTransformer('{MODEL_NAME}')
embeddings = model.encode(sentences)
print(embeddings)

Usage (HuggingFace Transformers)

Without sentence-transformers, you can use the model like this: First, you pass your input through the transformer model, then you have to apply the right pooling-operation on-top of the contextualized word embeddings.

from transformers import AutoTokenizer, AutoModel
import torch


#Mean Pooling - Take attention mask into account for correct averaging
def mean_pooling(model_output, attention_mask):
    token_embeddings = model_output[0] #First element of model_output contains all token embeddings
    input_mask_expanded = attention_mask.unsqueeze(-1).expand(token_embeddings.size()).float()
    return torch.sum(token_embeddings * input_mask_expanded, 1) / torch.clamp(input_mask_expanded.sum(1), min=1e-9)


# Sentences we want sentence embeddings for
sentences = ['This is an example sentence', 'Each sentence is converted']

# Load model from HuggingFace Hub
tokenizer = AutoTokenizer.from_pretrained('{MODEL_NAME}')
model = AutoModel.from_pretrained('{MODEL_NAME}')

# Tokenize sentences
encoded_input = tokenizer(sentences, padding=True, truncation=True, return_tensors='pt')

# Compute token embeddings
with torch.no_grad():
    model_output = model(**encoded_input)

# Perform pooling. In this case, mean pooling.
sentence_embeddings = mean_pooling(model_output, encoded_input['attention_mask'])

print("Sentence embeddings:")
print(sentence_embeddings)

Training

The model was fine-tuned on question-answer pairs scraper from several ML-focused Discourse forums [HuggingFace, PyTorch, Streamlit, TensorFlow].

The model was trained with the parameters:

DataLoader:

sentence_transformers.datasets.NoDuplicatesDataLoader.NoDuplicatesDataLoader of length 105 with parameters:

{'batch_size': 12}

Loss:

sentence_transformers.losses.MultipleNegativesRankingLoss.MultipleNegativesRankingLoss with parameters:

{'scale': 20.0, 'similarity_fct': 'cos_sim'}

Parameters of the fit()-Method:

{
    "epochs": 1,
    "evaluation_steps": 0,
    "evaluator": "NoneType",
    "max_grad_norm": 1,
    "optimizer_class": "<class 'transformers.optimization.AdamW'>",
    "optimizer_params": {
        "lr": 2e-05
    },
    "scheduler": "WarmupLinear",
    "steps_per_epoch": null,
    "warmup_steps": 10,
    "weight_decay": 0.01
}

Full Model Architecture

SentenceTransformer(
  (0): Transformer({'max_seq_length': 512, 'do_lower_case': False}) with Transformer model: BertModel 
  (1): Pooling({'word_embedding_dimension': 768, 'pooling_mode_cls_token': False, 'pooling_mode_mean_tokens': True, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False})
)

Citing & Authors

Fine-tuned by James Briggs at Pinecone. Learn more about the fine-tuning process here.

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

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

GPU в ailist

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

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

Подбираем GPU…

Класс архитектуры
BertModel
Ревизия весов
1a1c51b

0 моделей