Matryoshka Representation Learning
Paper • 2205.13147 • Published • 30
How to use arad1367/technographics-marketing-matryoshka with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("arad1367/technographics-marketing-matryoshka")
sentences = [
"How can technographics contribute to predicting consumer behavior in digital marketing?",
"Data analysis is essential in predicting consumer behavior in digital marketing. Analysis of data related to consumer behavior, preferences and needs can reveal patterns and trends that can be used to forecast future behavior and refine marketing strategies.",
"Technographics enables businesses to understand the technological habits and preferences of their customers. By analyzing this data, companies can predict how these users are likely to interact with their digital products or services, and tailor their marketing strategies accordingly.",
"The key components include data collection (gathering data from various sources), data analysis (using algorithms and models to analyze data), and predictive modelling (predicting future customer behavior based on analyzed data)."
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [4, 4]This is a sentence-transformers model finetuned from BAAI/bge-base-en-v1.5 on the json dataset. 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.
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()
)
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("arad1367/technographics-marketing-matryoshka")
# Run inference
sentences = [
'How important is it to update technographic data frequently?',
'It is crucial. Technology trends and usage patterns evolve quickly. Keeping your technographic data up-to-date ensures that your marketing strategies remain relevant and effective.',
"By analyzing a competitor's technology stack, marketers can gain insights into their strategies, tools, and platforms. This knowledge can help them identify gaps in their own stack, adopt superior technologies, or find ways to differentiate their approach.",
]
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]
dim_768, dim_512, dim_256, dim_128 and dim_64InformationRetrievalEvaluator| Metric | dim_768 | dim_512 | dim_256 | dim_128 | dim_64 |
|---|---|---|---|---|---|
| cosine_accuracy@1 | 0.3737 | 0.3737 | 0.3535 | 0.3737 | 0.3434 |
| cosine_accuracy@3 | 0.5051 | 0.5152 | 0.4848 | 0.4747 | 0.4848 |
| cosine_accuracy@5 | 0.5758 | 0.5758 | 0.5859 | 0.5758 | 0.5354 |
| cosine_accuracy@10 | 0.7576 | 0.7273 | 0.7071 | 0.6869 | 0.6869 |
| cosine_precision@1 | 0.3737 | 0.3737 | 0.3535 | 0.3737 | 0.3434 |
| cosine_precision@3 | 0.1684 | 0.1717 | 0.1616 | 0.1582 | 0.1616 |
| cosine_precision@5 | 0.1152 | 0.1152 | 0.1172 | 0.1152 | 0.1071 |
| cosine_precision@10 | 0.0758 | 0.0727 | 0.0707 | 0.0687 | 0.0687 |
| cosine_recall@1 | 0.3737 | 0.3737 | 0.3535 | 0.3737 | 0.3434 |
| cosine_recall@3 | 0.5051 | 0.5152 | 0.4848 | 0.4747 | 0.4848 |
| cosine_recall@5 | 0.5758 | 0.5758 | 0.5859 | 0.5758 | 0.5354 |
| cosine_recall@10 | 0.7576 | 0.7273 | 0.7071 | 0.6869 | 0.6869 |
| cosine_ndcg@10 | 0.5323 | 0.528 | 0.5102 | 0.5097 | 0.4979 |
| cosine_mrr@10 | 0.4647 | 0.4673 | 0.4497 | 0.4554 | 0.4404 |
| cosine_map@100 | 0.4772 | 0.4818 | 0.4655 | 0.4714 | 0.4557 |
anchor and positive| anchor | positive | |
|---|---|---|
| type | string | string |
| details |
|
|
| anchor | positive |
|---|---|
What role does customer segmentation play in predictive analytics? |
Customer segmentation within predictive analytics allows marketers to group customers based on similar characteristics. This helps in creating more targeted marketing strategies and predicting behavior patterns for each segment, improving overall campaign effectiveness. |
How has technographics evolved over the years to accommodate the digital space? |
Initially focused on hardware and software usage, technographics has evolved to consider digital platforms and tools. It now investigates consumer behavior across different channels, devices, and even social media platforms to provide a more comprehensive consumer profile. |
Can you name some common methods of collecting technographic data? |
Some common methods include surveys, interviews, online browsing behavior tracking, and direct observation. In addition, databases can be bought from vendors specializing in technographic data collection. |
MatryoshkaLoss with these parameters:{
"loss": "MultipleNegativesRankingLoss",
"matryoshka_dims": [
768,
512,
256,
128,
64
],
"matryoshka_weights": [
1,
1,
1,
1,
1
],
"n_dims_per_step": -1
}
eval_strategy: epochper_device_train_batch_size: 32per_device_eval_batch_size: 16gradient_accumulation_steps: 16learning_rate: 2e-05num_train_epochs: 10lr_scheduler_type: cosinewarmup_ratio: 0.1bf16: Truetf32: Trueload_best_model_at_end: Trueoptim: adamw_torch_fusedbatch_sampler: no_duplicatesoverwrite_output_dir: Falsedo_predict: Falseeval_strategy: epochprediction_loss_only: Trueper_device_train_batch_size: 32per_device_eval_batch_size: 16per_gpu_train_batch_size: Noneper_gpu_eval_batch_size: Nonegradient_accumulation_steps: 16eval_accumulation_steps: Nonelearning_rate: 2e-05weight_decay: 0.0adam_beta1: 0.9adam_beta2: 0.999adam_epsilon: 1e-08max_grad_norm: 1.0num_train_epochs: 10max_steps: -1lr_scheduler_type: cosinelr_scheduler_kwargs: {}warmup_ratio: 0.1warmup_steps: 0log_level: passivelog_level_replica: warninglog_on_each_node: Truelogging_nan_inf_filter: Truesave_safetensors: Truesave_on_each_node: Falsesave_only_model: Falserestore_callback_states_from_checkpoint: Falseno_cuda: Falseuse_cpu: Falseuse_mps_device: Falseseed: 42data_seed: Nonejit_mode_eval: Falseuse_ipex: Falsebf16: Truefp16: Falsefp16_opt_level: O1half_precision_backend: autobf16_full_eval: Falsefp16_full_eval: Falsetf32: Truelocal_rank: 0ddp_backend: Nonetpu_num_cores: Nonetpu_metrics_debug: Falsedebug: []dataloader_drop_last: Falsedataloader_num_workers: 0dataloader_prefetch_factor: Nonepast_index: -1disable_tqdm: Falseremove_unused_columns: Truelabel_names: Noneload_best_model_at_end: Trueignore_data_skip: Falsefsdp: []fsdp_min_num_params: 0fsdp_config: {'min_num_params': 0, 'xla': False, 'xla_fsdp_v2': False, 'xla_fsdp_grad_ckpt': False}fsdp_transformer_layer_cls_to_wrap: Noneaccelerator_config: {'split_batches': False, 'dispatch_batches': None, 'even_batches': True, 'use_seedable_sampler': True, 'non_blocking': False, 'gradient_accumulation_kwargs': None}deepspeed: Nonelabel_smoothing_factor: 0.0optim: adamw_torch_fusedoptim_args: Noneadafactor: Falsegroup_by_length: Falselength_column_name: lengthddp_find_unused_parameters: Noneddp_bucket_cap_mb: Noneddp_broadcast_buffers: Falsedataloader_pin_memory: Truedataloader_persistent_workers: Falseskip_memory_metrics: Trueuse_legacy_prediction_loop: Falsepush_to_hub: Falseresume_from_checkpoint: Nonehub_model_id: Nonehub_strategy: every_savehub_private_repo: Falsehub_always_push: Falsegradient_checkpointing: Falsegradient_checkpointing_kwargs: Noneinclude_inputs_for_metrics: Falseeval_do_concat_batches: Truefp16_backend: autopush_to_hub_model_id: Nonepush_to_hub_organization: Nonemp_parameters: auto_find_batch_size: Falsefull_determinism: Falsetorchdynamo: Noneray_scope: lastddp_timeout: 1800torch_compile: Falsetorch_compile_backend: Nonetorch_compile_mode: Nonedispatch_batches: Nonesplit_batches: Noneinclude_tokens_per_second: Falseinclude_num_input_tokens_seen: Falseneftune_noise_alpha: Noneoptim_target_modules: Nonebatch_eval_metrics: Falseprompts: Nonebatch_sampler: no_duplicatesmulti_dataset_batch_sampler: proportional| Epoch | Step | Training Loss | dim_768_cosine_ndcg@10 | dim_512_cosine_ndcg@10 | dim_256_cosine_ndcg@10 | dim_128_cosine_ndcg@10 | dim_64_cosine_ndcg@10 |
|---|---|---|---|---|---|---|---|
| 1.0 | 1 | - | 0.4650 | 0.4667 | 0.4712 | 0.4371 | 0.4151 |
| 2.0 | 3 | - | 0.5316 | 0.5307 | 0.5051 | 0.4810 | 0.4407 |
| 3.0 | 5 | - | 0.5256 | 0.5222 | 0.5136 | 0.5104 | 0.4742 |
| 4.0 | 7 | - | 0.5316 | 0.5269 | 0.5120 | 0.5083 | 0.4790 |
| 5.0 | 9 | - | 0.5337 | 0.5280 | 0.5102 | 0.5101 | 0.4983 |
| 6.0 | 10 | 2.9453 | 0.5323 | 0.5280 | 0.5102 | 0.5097 | 0.4979 |
@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",
}
@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}
}
@misc{henderson2017efficient,
title={Efficient Natural Language Response Suggestion for Smart Reply},
author={Matthew Henderson and Rami Al-Rfou and Brian Strope and Yun-hsuan Sung and Laszlo Lukacs and Ruiqi Guo and Sanjiv Kumar and Balint Miklos and Ray Kurzweil},
year={2017},
eprint={1705.00652},
archivePrefix={arXiv},
primaryClass={cs.CL}
}
Base model
BAAI/bge-base-en-v1.5
from sentence_transformers import SentenceTransformer model = SentenceTransformer("arad1367/technographics-marketing-matryoshka") sentences = [ "How can technographics contribute to predicting consumer behavior in digital marketing?", "Data analysis is essential in predicting consumer behavior in digital marketing. Analysis of data related to consumer behavior, preferences and needs can reveal patterns and trends that can be used to forecast future behavior and refine marketing strategies.", "Technographics enables businesses to understand the technological habits and preferences of their customers. By analyzing this data, companies can predict how these users are likely to interact with their digital products or services, and tailor their marketing strategies accordingly.", "The key components include data collection (gathering data from various sources), data analysis (using algorithms and models to analyze data), and predictive modelling (predicting future customer behavior based on analyzed data)." ] embeddings = model.encode(sentences) similarities = model.similarity(embeddings, embeddings) print(similarities.shape) # [4, 4]