/ Модель

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

Контекст
512 токенов
Параметры
138 млн
Лицензия
MIT
Архитектура
bert · dense
Базовая модель
japanese-splade-base-v1_5
Опубликована
16 дек 2024

japanese-splade-v2

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

Японская SPLADE v2 на базе BERT преобразует запросы и документы в разреженные векторы для информационного поиска.

7 691скачиваний за 30 дней17лайковвеса обновлены23 дек 2024

Бенчмарки

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

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

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

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

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

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

hotchpotch разработала японскую модель поиска japanese-splade-v2 на архитектуре BERT. Это SPLADE v2 — модель, которая преобразует текст в разреженные лексические векторы, расширяя исходные слова терминами, полезными для поиска. Размер модели — 138,4 млн параметров, максимальная длина входа — 512 токенов; доступны веса в формате Safetensors.

Модель предназначена для поиска и извлечения релевантных документов по японским запросам, в том числе в системах семантического поиска и retrieval-augmented generation. В README приведены результаты оценки на японских наборах JMTEB; авторы сообщают об улучшении среднего результата относительно базовой версии japanese-splade-base-v1. Обучение использовало японские наборы данных для поиска и вопросов-ответов, включая MSMARCO-ja.

Модель дообучена на hotchpotch/japanese-splade-base-v1_5 и распространяется по лицензии MIT. В карточке Hugging Face указан pipeline-тег fill-mask, однако заявленное назначение модели — разреженное представление текста для поиска; тег не описывает этот сценарий напрямую. README ограничивает контекст тестирования длиной до 512 токенов.

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

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

Ограничения

Модель рассчитана на входы длиной до 512 токенов; качество за пределами японского языка не заявлено. Метаданные указывают fill-mask, тогда как основное назначение в README — разреженное представление для поиска.

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

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

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

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

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

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

Открыть на Hugging Face

高性能な日本語 SPLADE (Sparse Lexical and Expansion Model) モデルです。テキストからスパースベクトルへの変換デモで、どのようなスパースベクトルに変換できるか、WebUI から気軽にお試しいただけます。

また、モデルの学習にはYAST - Yet Another SPLADE or Sparse Trainerを使っています。

利用方法

YASEM (Yet Another Splade|Sparse Embedder)

YASEM を利用することで、SPLADEの推論・単語トークンの確認を簡単に行えます。

pip install yasem
from yasem import SpladeEmbedder

model_name = "hotchpotch/japanese-splade-v2"
embedder = SpladeEmbedder(model_name)

query = "車の燃費を向上させる方法は?"
docs = [
    "急発進や急ブレーキを避け、一定速度で走行することで燃費が良くなります。",
    "車の運転時、急発進や急ブレーキをすると、燃費が悪くなります。",
    "車を長持ちさせるには、消耗品を適切なタイミングで交換することが重要です。",
]

print(embedder.rank(query, docs, return_documents=True))
[
 { 'corpus_id': 0
 , 'score': 4.28
 , 'text': '急発進や急ブレーキを避け、一定速度で走行することで燃費が良くなります。' }
 ,
 { 'corpus_id': 2
 , 'score': 2.47
 , 'text': '車を長持ちさせるには、消耗品を適切なタイミングで交換することが重要です。' }
 ,
 { 'corpus_id': 1
 , 'score': 2.34
 , 'text': '車の運転時、急発進や急ブレーキをすると、燃費が悪くなります。' }
]
sentences = [query] + docs

embeddings = embedder.encode(sentences)
similarity = embedder.similarity(embeddings, embeddings)

print(similarity)
[[5.19151189, 4.28027662, 2.34164901, 2.47221905],
[4.28027662, 11.64426784, 5.00328318, 2.15031016],
[2.34164901, 5.00328318, 6.05594296, 1.33752085],
[2.47221905, 2.15031016, 1.33752085, 9.39414744]]
token_values = embedder.get_token_values(embeddings[0])
print(token_values)
{
 '燃費': 1.13,
 '方法': 1.07,
 '車': 1.05,
 '高める': 0.67,
 '向上': 0.56,
 '増加': 0.52,
 '都市': 0.44,
 'ガソリン': 0.32,
 '改善': 0.30,
 ...

transformers からの利用


from transformers import AutoModelForMaskedLM, AutoTokenizer
import torch

model = AutoModelForMaskedLM.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)

def splade_max_pooling(logits, attention_mask):
    relu_log = torch.log(1 + torch.relu(logits))
    weighted_log = relu_log * attention_mask.unsqueeze(-1)
    max_val, _ = torch.max(weighted_log, dim=1)
    return max_val

tokens = tokenizer(
    sentences, return_tensors="pt", padding=True, truncation=True, max_length=512
)
tokens = {k: v.to(model.device) for k, v in tokens.items()}

with torch.no_grad():
    outputs = model(**tokens)
embeddings = splade_max_pooling(outputs.logits, tokens["attention_mask"])

similarity = torch.matmul(embeddings.unsqueeze(0), embeddings.T).squeeze(0)
print(similarity)
tensor([
   [5.1872, 4.2792, 2.3440, 2.4680],
   [4.2792, 11.6327, 4.9983, 2.1470],
   [2.3440, 4.9983, 6.0517, 1.3377],
   [2.4680, 2.1470, 1.3377, 9.3801]
])

ベンチマークスコア

retrieval (JMTEB)

JMTEB の評価結果です。

japanese-splade-v2 は JMTEB をスパースベクトルで評価できるように変更したコードでの評価となっています。 なお、japanese-splade-v2 は JMTEB タスクである jaqket(や派生のjaqra), mrtydi(と派生のmiracl), jagovfaqs, nlp_jornal のデータセットのtrain,dev, testなどのデータは 学習に利用していません。

モデル名jagovfaqsjaqketmrtydinlp_journal title_absnlp_journal abs_intronlp_journal title_introAvg <512Avg ALL
japanese-splade-v20.73130.69860.51060.98310.90670.80260.73090.7722
japanese-splade-base-v10.64990.69920.43650.89670.97660.82030.69060.7465
GLuCoSE-base-ja-v20.69790.67290.41860.95110.90290.75800.68510.7336
multilingual-e5-large0.70300.58780.43630.94700.86000.72480.66850.7098
ruri-large0.76680.61740.38030.96580.87120.77970.68260.7302
jinaai/jina-embeddings-v30.71500.46480.45450.95620.98430.93850.64760.7522
sarashina-embedding-v1-1b0.71680.72790.41950.96960.93940.88330.70850.7761
OpenAI/text-embedding-3-large0.72410.48210.34880.96550.99330.95470.63010.7448

スパース性

v1 ではスパース性が強すぎたので、v2 ではバランスをとったスパース性を持たせています。

で計測しています。

Targetjaqket-queryjaqket-docsmrtydi-querymrtydi-docsjagovfaqs_22k-queryjagovfaqs_22k-docsnlp_journal_title_abs-querynlp_journal_title_abs-docsnlp_journal_title_intro-querynlp_journal_title_intro-docsnlp_journal_abs_intro-querynlp_journal_abs_intro-docs
v123.3146.213.889.327.973.21975.21995.775.395.7
v1-mmarco-only38.9231.820.5100.443.497.926.4126.926.4182127.2182
v1_536.7268.722.8237.647.9237.334.9225.634.9235.2224.5235.2
v229.8379.619.4176.442189.829235.829304.9233.8304.9

学習元データセット

ライセンス

MIT

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

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

GPU в ailist

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

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

Подбираем GPU…

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

0 моделей