/ Модель

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

Контекст
512 токенов
Параметры
137 млн
Лицензия
Apache 2.0
Архитектура
bert · dense
Базовая модель
bge-base-en-v1.5
Библиотека
sentence-transformers
Опубликована
19 июн 2024

bge-base-argilla-sdk-matryoshka

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

Англоязычная модель BERT для создания эмбеддингов и семантического поиска, дообученная с поддержкой Matryoshka-представлений разной размерности.

84скачиваний за 30 дней5лайковвеса обновлены19 июн 2024

Бенчмарки

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

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

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

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

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

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

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

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

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

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

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

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

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

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

BGE base ArgillaSDK Matryoshka — англоязычная модель Sentence Transformers, дообученная разработчиками модели на базе BAAI/bge-base-en-v1.5 для получения плотных эмбеддингов предложений и абзацев. Модель построена на BERT, использует пулинг CLS-токена и нормализацию векторов; размерность представления составляет 768, а сходство можно оценивать косинусной мерой.

Модель предназначена для семантического поиска и сравнения текстов, поиска перефразировок, кластеризации и классификации. Обучение на 882 примерах с MatryoshkaLoss и TripletLoss позволяет использовать укороченные представления размером 512, 256, 128 или 64 измерения наряду с полными 768-мерными эмбеддингами. Максимальная длина входной последовательности — 512 токенов. Модель работает с английским текстом; лицензия — Apache-2.0.

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

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

Ограничения

Поддерживает английский текст и ограничивает вход 512 токенами. Для коротких представлений размерность эмбеддингов уменьшается, что может снижать точность поиска.

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

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

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

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

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

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

Открыть на Hugging Face

BGE base ArgillaSDK Matryoshka

This is a sentence-transformers model finetuned from BAAI/bge-base-en-v1.5. It maps sentences & paragraphs to a 768-dimensional dense vector space and can be used for semantic textual similarity, semantic search, paraphrase mining, text classification, clustering, and more.

Model Details

Model Description

  • Model Type: Sentence Transformer
  • Base model: BAAI/bge-base-en-v1.5
  • Maximum Sequence Length: 512 tokens
  • Output Dimensionality: 768 tokens
  • Similarity Function: Cosine Similarity
  • Language: en
  • License: apache-2.0

Model Sources

Full Model Architecture

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

Usage

Direct Usage (Sentence Transformers)

First install the Sentence Transformers library:

pip install -U sentence-transformers

Then you can load this model and run inference.

from sentence_transformers import SentenceTransformer

# Download from the 🤗 Hub
model = SentenceTransformer("plaguss/bge-base-argilla-sdk-matryoshka")
# Run inference
sentences = [
    'hide: footer\n\nrg.Argilla\n\nTo interact with the Argilla server from python you can use the Argilla class. The Argilla client is used to create, get, update, and delete all Argilla resources, such as workspaces, users, datasets, and records.\n\nUsage Examples\n\nConnecting to an Argilla server\n\nTo connect to an Argilla server, instantiate the Argilla class and pass the api_url of the server and the api_key to authenticate.\n\n```python\nimport argilla_sdk as rg',
    'Can the Argilla class be employed to streamline dataset administration tasks in my Argilla server setup?',
    'The Argilla flowers were blooming beautifully in the garden.',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 768]

# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [3, 3]

Evaluation

Metrics

Information Retrieval

MetricValue
cosine_accuracy@10.1327
cosine_accuracy@30.2857
cosine_accuracy@50.3878
cosine_accuracy@100.5204
cosine_precision@10.1327
cosine_precision@30.0952
cosine_precision@50.0776
cosine_precision@100.052
cosine_recall@10.1327
cosine_recall@30.2857
cosine_recall@50.3878
cosine_recall@100.5204
cosine_ndcg@100.3086
cosine_mrr@100.2432
cosine_map@1000.2604

Information Retrieval

MetricValue
cosine_accuracy@10.102
cosine_accuracy@30.2755
cosine_accuracy@50.3878
cosine_accuracy@100.5102
cosine_precision@10.102
cosine_precision@30.0918
cosine_precision@50.0776
cosine_precision@100.051
cosine_recall@10.102
cosine_recall@30.2755
cosine_recall@50.3878
cosine_recall@100.5102
cosine_ndcg@100.2942
cosine_mrr@100.2264
cosine_map@1000.2426

Information Retrieval

MetricValue
cosine_accuracy@10.1224
cosine_accuracy@30.2755
cosine_accuracy@50.3878
cosine_accuracy@100.5
cosine_precision@10.1224
cosine_precision@30.0918
cosine_precision@50.0776
cosine_precision@100.05
cosine_recall@10.1224
cosine_recall@30.2755
cosine_recall@50.3878
cosine_recall@100.5
cosine_ndcg@100.2931
cosine_mrr@100.2291
cosine_map@1000.2445

Information Retrieval

MetricValue
cosine_accuracy@10.0918
cosine_accuracy@30.2551
cosine_accuracy@50.3163
cosine_accuracy@100.4694
cosine_precision@10.0918
cosine_precision@30.085
cosine_precision@50.0633
cosine_precision@100.0469
cosine_recall@10.0918
cosine_recall@30.2551
cosine_recall@50.3163
cosine_recall@100.4694
cosine_ndcg@100.2629
cosine_mrr@100.1992
cosine_map@1000.2165

Information Retrieval

MetricValue
cosine_accuracy@10.0816
cosine_accuracy@30.2551
cosine_accuracy@50.3163
cosine_accuracy@100.4796
cosine_precision@10.0816
cosine_precision@30.085
cosine_precision@50.0633
cosine_precision@100.048
cosine_recall@10.0816
cosine_recall@30.2551
cosine_recall@50.3163
cosine_recall@100.4796
cosine_ndcg@100.2611
cosine_mrr@100.194
cosine_map@1000.2059

Training Details

Training Dataset

Unnamed Dataset

  • Size: 882 training samples
  • Columns: anchor, positive, and negative
  • Approximate statistics based on the first 1000 samples:
    anchorpositivenegative
    typestringstringstring
    detailsmin: 6 tokensmean: 90.85 tokensmax: 198 tokensmin: 8 tokensmean: 25.44 tokensmax: 91 tokensmin: 10 tokensmean: 22.33 tokensmax: 61 tokens
  • Samples:
    anchorpositivenegative
    ``!!! note "Update the metadata" ThemetadataofRecordobject is a python dictionary. So to update the metadata of a record, you can iterate over the records and update the metadata by key or usingmetadata.update`. After that, you should update the records in the dataset.Can I use Argilla to annotate the metadata of Record objects and update them in the dataset?The beautiful scenery of the Argilla valley in Italy is perfect for a relaxing summer vacation.
    git checkout [branch-name]git rebase [default-branch]<br><br>If everything is right, we need to commit and push the changes to your fork. For that, run the following commands:<br><br>shAdd the changes to the staging areagit add filenameCommit the changes by writing a proper messagegit commit -m "commit-message"Push the changes to your forkCan I commit Argilla's annotation changes and push them to a forked project repository after rebasing from the default branch?The beautiful beach in Argilla, Spain, is a popular spot for surfers to catch a wave and enjoy the sunny weather.
    Accessing Record AttributesThe Record object has suggestions, responses, metadata, and vectors attributes that can be accessed directly whilst iterating over records in a dataset.pythonfor record in dataset.records( with_suggestions=True, with_responses=True, with_metadata=True, with_vectors=True ): print(record.suggestions) print(record.responses) print(record.metadata) print(record.vectors)Is it possible to retrieve the suggestions, responses, metadata, and vectors of a Record object at the same time when iterating over a dataset in Argilla?The new hiking trail offered breathtaking suggestions for scenic views, responses to environmental concerns, and metadata about the surrounding ecosystem, but it lacked vectors for navigation.
  • Loss: MatryoshkaLoss with these parameters:
    {
        "loss": "TripletLoss",
        "matryoshka_dims": [
            768,
            512,
            256,
            128,
            64
        ],
        "matryoshka_weights": [
            1,
            1,
            1,
            1,
            1
        ],
        "n_dims_per_step": -1
    }
    

Training Hyperparameters

Non-Default Hyperparameters

  • eval_strategy: epoch
  • per_device_eval_batch_size: 4
  • gradient_accumulation_steps: 4
  • learning_rate: 2e-05
  • lr_scheduler_type: cosine
  • warmup_ratio: 0.1
  • load_best_model_at_end: True

All Hyperparameters

  • overwrite_output_dir: False
  • do_predict: False
  • eval_strategy: epoch
  • prediction_loss_only: True
  • per_device_train_batch_size: 8
  • per_device_eval_batch_size: 4
  • per_gpu_train_batch_size: None
  • per_gpu_eval_batch_size: None
  • gradient_accumulation_steps: 4
  • eval_accumulation_steps: None
  • learning_rate: 2e-05
  • weight_decay: 0.0
  • adam_beta1: 0.9
  • adam_beta2: 0.999
  • adam_epsilon: 1e-08
  • max_grad_norm: 1.0
  • num_train_epochs: 3
  • max_steps: -1
  • lr_scheduler_type: cosine
  • lr_scheduler_kwargs: {}
  • warmup_ratio: 0.1
  • warmup_steps: 0
  • log_level: passive
  • log_level_replica: warning
  • log_on_each_node: True
  • logging_nan_inf_filter: True
  • save_safetensors: True
  • save_on_each_node: False
  • save_only_model: False
  • restore_callback_states_from_checkpoint: False
  • no_cuda: False
  • use_cpu: False
  • use_mps_device: False
  • seed: 42
  • data_seed: None
  • jit_mode_eval: False
  • use_ipex: False
  • bf16: False
  • fp16: False
  • fp16_opt_level: O1
  • half_precision_backend: auto
  • bf16_full_eval: False
  • fp16_full_eval: False
  • tf32: None
  • local_rank: 0
  • ddp_backend: None
  • tpu_num_cores: None
  • tpu_metrics_debug: False
  • debug: []
  • dataloader_drop_last: False
  • dataloader_num_workers: 0
  • dataloader_prefetch_factor: None
  • past_index: -1
  • disable_tqdm: False
  • remove_unused_columns: True
  • label_names: None
  • load_best_model_at_end: True
  • ignore_data_skip: False
  • fsdp: []
  • fsdp_min_num_params: 0
  • fsdp_config: {'min_num_params': 0, 'xla': False, 'xla_fsdp_v2': False, 'xla_fsdp_grad_ckpt': False}
  • fsdp_transformer_layer_cls_to_wrap: None
  • accelerator_config: {'split_batches': False, 'dispatch_batches': None, 'even_batches': True, 'use_seedable_sampler': True, 'non_blocking': False, 'gradient_accumulation_kwargs': None}
  • deepspeed: None
  • label_smoothing_factor: 0.0
  • optim: adamw_torch
  • optim_args: None
  • adafactor: False
  • group_by_length: False
  • length_column_name: length
  • ddp_find_unused_parameters: None
  • ddp_bucket_cap_mb: None
  • ddp_broadcast_buffers: False
  • dataloader_pin_memory: True
  • dataloader_persistent_workers: False
  • skip_memory_metrics: True
  • use_legacy_prediction_loop: False
  • push_to_hub: False
  • resume_from_checkpoint: None
  • hub_model_id: None
  • hub_strategy: every_save
  • hub_private_repo: False
  • hub_always_push: False
  • gradient_checkpointing: False
  • gradient_checkpointing_kwargs: None
  • include_inputs_for_metrics: False
  • eval_do_concat_batches: True
  • fp16_backend: auto
  • push_to_hub_model_id: None
  • push_to_hub_organization: None
  • mp_parameters:
  • auto_find_batch_size: False
  • full_determinism: False
  • torchdynamo: None
  • ray_scope: last
  • ddp_timeout: 1800
  • torch_compile: False
  • torch_compile_backend: None
  • torch_compile_mode: None
  • dispatch_batches: None
  • split_batches: None
  • include_tokens_per_second: False
  • include_num_input_tokens_seen: False
  • neftune_noise_alpha: None
  • optim_target_modules: None
  • batch_eval_metrics: False
  • batch_sampler: batch_sampler
  • multi_dataset_batch_sampler: proportional

Training Logs

EpochStepTraining Lossdim_128_cosine_map@100dim_256_cosine_map@100dim_512_cosine_map@100dim_64_cosine_map@100dim_768_cosine_map@100
0.1802521.701-----
0.36041021.7449-----
0.54051521.7453-----
0.72072021.7168-----
0.90092521.6945-----
0.97327-0.21650.24450.24260.20590.2604
1.08113021.7248-----
1.26133521.7322-----
1.44144021.7367-----
1.62164521.6821-----
1.80185021.8392-----
1.98205521.64410.21650.24450.24260.20590.2604
2.16226021.8154-----
2.34236521.7098-----
2.52257021.6447-----
2.70277521.6033-----
2.88298021.8271-----
2.918981-0.21650.24450.24260.20590.2604
  • The bold row denotes the saved checkpoint.

Framework Versions

  • Python: 3.11.8
  • Sentence Transformers: 3.0.1
  • Transformers: 4.41.2
  • PyTorch: 2.1.2
  • Accelerate: 0.31.0
  • Datasets: 2.19.2
  • Tokenizers: 0.19.1

Citation

BibTeX

Sentence Transformers

@inproceedings{reimers-2019-sentence-bert,
    title = "Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks",
    author = "Reimers, Nils and Gurevych, Iryna",
    booktitle = "Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing",
    month = "11",
    year = "2019",
    publisher = "Association for Computational Linguistics",
    url = "https://arxiv.org/abs/1908.10084",
}

MatryoshkaLoss

@misc{kusupati2024matryoshka,
    title={Matryoshka Representation Learning}, 
    author={Aditya Kusupati and Gantavya Bhatt and Aniket Rege and Matthew Wallingford and Aditya Sinha and Vivek Ramanujan and William Howard-Snyder and Kaifeng Chen and Sham Kakade and Prateek Jain and Ali Farhadi},
    year={2024},
    eprint={2205.13147},
    archivePrefix={arXiv},
    primaryClass={cs.LG}
}

TripletLoss

@misc{hermans2017defense,
    title={In Defense of the Triplet Loss for Person Re-Identification}, 
    author={Alexander Hermans and Lucas Beyer and Bastian Leibe},
    year={2017},
    eprint={1703.07737},
    archivePrefix={arXiv},
    primaryClass={cs.CV}
}

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

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

GPU в ailist

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

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

Подбираем GPU…

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

0 моделей