/ Модель

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

Контекст
514 токенов
Параметры
137 млн
Лицензия
Apache 2.0
Архитектура
mpnet · dense
Базовая модель
all-mpnet-base-v2
Библиотека
sentence-transformers
Опубликована
8 авг 2026

plottwist-embedder-ft

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

Эмбеддер MPNet, дообученный для семантического поиска логлайнов фильмов по коротким питчам.

71скачиваний за 30 дней0лайковвеса обновлены9 авг 2026

Бенчмарки

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

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

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

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

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

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

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

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

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

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

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

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

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

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

PlotTwist Embedder — модель эмбеддингов, разработанная Raz Sarusi и Tomer Dariel для поиска подходящих киносюжетов. Она кодирует короткий питч фильма и логлайны в векторы, чтобы находить наиболее близкие совпадения в каталоге из 10 000 синтетических записей. Модель дообучена на базе sentence-transformers/all-mpnet-base-v2 с помощью MultipleNegativesRankingLoss; архитектура MPNet содержит 136,7 млн параметров, а контекст составляет до 514 токенов.

Модель предназначена для семантического поиска логлайнов по пользовательскому описанию идеи фильма. В тесте на 600 питчах среди 10 000 записей дообученная версия достигла recall@1 0,845, recall@5 0,933 и recall@10 0,953; эти результаты относятся к описанному авторами набору данных и оценке. Репозиторий также содержит FAISS-индекс и каталог для приложения PlotTwist. Модель принимает текст и выдаёт эмбеддинги; карточка не указывает специально поддерживаемые естественные языки. Лицензия — Apache-2.0.

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

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

Ограничения

Оценка качества приведена для синтетического каталога из 10 000 записей и теста на 600 питчах, поэтому её перенос на другие каталоги не установлен. Контекст ограничен 514 токенами.

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

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

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

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

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

Открыть на Hugging Face

PlotTwist Embedder (fine-tuned)

Authors: Raz Sarusi · Tomer Dariel

The retrieval model behind PlotTwist: it maps a short movie pitch to the closest loglines in a 10,000-row synthetic catalog. This repo hosts the fine-tuned embedder plus the FAISS index and the catalog, so the app loads everything at startup with no re-encoding.

1. Model selection — we compared three HF embedding models

Before any fine-tuning we embedded the full 10k catalog with three models and compared them on retrieval quality, encode time, and vector size (full live table in Part3_Recommendation.ipynb):

modeldimnotesrole
sentence-transformers/all-MiniLM-L6-v2384small & fastspeed baseline
sentence-transformers/all-mpnet-base-v2768strongest retrieval qualitywinner
BAAI/bge-small-en-v1.5384strong small modelsmall-model contender

Selection rule: primary = retrieval quality, ties broken by faster encoding / smaller size. all-mpnet-base-v2 won on quality, so it became the base we fine-tuned.

2. Fine-tuning + a non-circular evaluation

v1's only metric — genre-consistency@k — is circular (data was generated conditioned on genre, then genre agreement was measured). v2 replaces it with a genuine held-out task:

  1. A small LLM writes the short user-style pitch for a sample of loglines → (pitch, logline) pairs.
  2. recall@1 / @5 / @10: does a test pitch retrieve its true logline from the full 10k catalog?
  3. Fine-tune with MultipleNegativesRankingLoss (in-batch negatives) on the (pitch, logline) pairs.

Results (held-out test = 600 pitches, catalog = 10k, train/test = 2400/600):

metricbasefine-tunedΔ
recall@10.7530.845+0.092
recall@50.8900.933+0.043
recall@100.9180.953+0.035

recall@1 improved +9.2 points (+12.2% relative) — a real, non-circular improvement.

Training configuration (the training "matrix")

settingvalue
base modelsentence-transformers/all-mpnet-base-v2 (768-d, cosine)
objective / lossMultipleNegativesRankingLoss (scale 20.0, cos_sim)
training pairs2,400 (pitch → logline); held-out test 600
epochs · batch size2 · 32 (≈ 150 optimization steps)
learning rate · schedule5e-5 · linear · AdamW (fused)
seed · training time42 · ≈ 1.9 min · Sentence-Transformers 5.6.0

Training loss vs. evaluation metric — and why the recall@k is the real proof. MultipleNegativesRankingLoss is a contrastive ranking loss: its absolute value is not an accuracy score, and the run was short (≈150 steps), so a per-step loss curve is not the meaningful signal here. The rigorous evidence that fine-tuning beat the base model is the held-out recall@k lift in the table above — measured on pitches the model never trained on. Over the 2 epochs the model learned to place each pitch next to its true logline, moving recall@1 from 0.753 → 0.845 (base → fine-tuned).

3. Files

  • fine-tuned all-mpnet-base-v2 weights (Sentence-Transformers format)
  • plottwist.faiss — FAISS IndexFlatIP over L2-normalized embeddings (= cosine), 10k vectors
  • plottwist_catalog.parquet — the catalog rows aligned to the index
  • eval_recall_base_vs_ft.json — the numbers above

4. Usage

from sentence_transformers import SentenceTransformer
import faiss, pandas as pd
from huggingface_hub import hf_hub_download

model = SentenceTransformer("razsarusi/plottwist-embedder-ft")
idx   = faiss.read_index(hf_hub_download("razsarusi/plottwist-embedder-ft", "plottwist.faiss"))
cat   = pd.read_parquet(hf_hub_download("razsarusi/plottwist-embedder-ft", "plottwist_catalog.parquet"))

q = model.encode(["a lonely lighthouse keeper bargains with the sea"], normalize_embeddings=True)
D, I = idx.search(q.astype("float32"), 3)
print(cat.iloc[I[0]][["title","genre","logline"]])

Dataset: razsarusi/plottwist-movies · App: razsarusi/plottwist

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

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

GPU в ailist

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

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

Подбираем GPU…

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

0 моделей