metadata
tags:
- sentence-transformers
- sentence-similarity
- feature-extraction
- generated_from_trainer
- dataset_size:200
- loss:MatryoshkaLoss
- loss:MultipleNegativesRankingLoss
base_model: Snowflake/snowflake-arctic-embed-l
widget:
- source_sentence: How do longer inputs enhance the problem-solving capabilities of an LLM?
sentences:
- >-
Longer inputs dramatically increase the scope of problems that can be
solved with an LLM: you can now throw in an entire book and ask
questions about its contents, but more importantly you can feed in a lot
of example code to help the model correctly solve a coding problem. LLM
use-cases that involve long inputs are far more interesting to me than
short prompts that rely purely on the information already baked into the
model weights. Many of my tools were built using this pattern.
- >-
If you think about what they do, this isn’t such a big surprise. The
grammar rules of programming languages like Python and JavaScript are
massively less complicated than the grammar of Chinese, Spanish or
English.
It’s still astonishing to me how effective they are though.
One of the great weaknesses of LLMs is their tendency to hallucinate—to
imagine things that don’t correspond to reality. You would expect this
to be a particularly bad problem for code—if an LLM hallucinates a
method that doesn’t exist, the code should be useless.
- |-
blogging
68
ai
1098
generative-ai
942
llms
930
Next: Tom Scott, and the formidable power of escalating streaks
Previous: Last weeknotes of 2023
Colophon
©
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
- source_sentence: How did other teams respond to the author's use of Claude Artifacts?
sentences:
- >-
This prompt-driven custom interface feature is so powerful and easy to
build (once you’ve figured out the gnarly details of browser sandboxing)
that I expect it to show up as a feature in a wide range of products in
2025.
Universal access to the best models lasted for just a few short months
For a few short months this year all three of the best available
models—GPT-4o, Claude 3.5 Sonnet and Gemini 1.5 Pro—were freely
available to most of the world.
- >-
I’ve found myself using this a lot. I noticed how much I was relying on
it in October and wrote Everything I built with Claude Artifacts this
week, describing 14 little tools I had put together in a seven day
period.
Since then, a whole bunch of other teams have built similar systems.
GitHub announced their version of this—GitHub Spark—in October. Mistral
Chat added it as a feature called Canvas in November.
Steve Krouse from Val Town built a version of it against Cerebras,
showcasing how a 2,000 token/second LLM can iterate on an application
with changes visible in less than a second.
- >-
Structured and Gradual Learning. In organic datasets, the relationship
between tokens is often complex and indirect. Many reasoning steps may
be required to connect the current token to the next, making it
challenging for the model to learn effectively from next-token
prediction. By contrast, each token generated by a language model is by
definition predicted by the preceding tokens, making it easier for a
model to follow the resulting reasoning patterns.
- source_sentence: >-
How does the new llamafile improve the process of running an LLM on a
personal computer?
sentences:
- >-
A year ago, the only organization that had released a generally useful
LLM was OpenAI. We’ve now seen better-than-GPT-3 class models produced
by Anthropic, Mistral, Google, Meta, EleutherAI, Stability AI, TII in
Abu Dhabi (Falcon), Microsoft Research, xAI, Replit, Baidu and a bunch
of other organizations.
The training cost (hardware and electricity) is still
significant—initially millions of dollars, but that seems to have
dropped to the tens of thousands already. Microsoft’s Phi-2 claims to
have used “14 days on 96 A100 GPUs”, which works out at around $35,000
using current Lambda pricing.
- >-
Embeddings: What they are and why they matter
61.7k
79.3k
Catching up on the weird world of LLMs
61.6k
85.9k
llamafile is the new best way to run an LLM on your own computer
52k
66k
Prompt injection explained, with video, slides, and a transcript
51k
61.9k
AI-enhanced development makes me more ambitious with my projects
49.6k
60.1k
Understanding GPT tokenizers
49.5k
61.1k
Exploring GPTs: ChatGPT in a trench coat?
46.4k
58.5k
Could you train a ChatGPT-beating model for $85,000 and run it in a
browser?
40.5k
49.2k
How to implement Q&A against your documentation with GPT3, embeddings
and Datasette
37.3k
44.9k
Lawyer cites fake cases invented by ChatGPT, judge is not amused
37.1k
47.4k
- >-
Qwen2.5-Coder-32B is an LLM that can code well that runs on my Mac talks
about Qwen2.5-Coder-32B in November—an Apache 2.0 licensed model!
I can now run a GPT-4 class model on my laptop talks about running
Meta’s Llama 3.3 70B (released in December)
- source_sentence: >-
What technique is being used by an increasing number of labs to create
training data for smaller models?
sentences:
- >-
Another common technique is to use larger models to help create training
data for their smaller, cheaper alternatives—a trick used by an
increasing number of labs. DeepSeek v3 used “reasoning” data created by
DeepSeek-R1. Meta’s Llama 3.3 70B fine-tuning used over 25M
synthetically generated examples.
Careful design of the training data that goes into an LLM appears to be
the entire game for creating these models. The days of just grabbing a
full scrape of the web and indiscriminately dumping it into a training
run are long gone.
LLMs somehow got even harder to use
- >-
An interesting point of comparison here could be the way railways rolled
out around the world in the 1800s. Constructing these required enormous
investments and had a massive environmental impact, and many of the
lines that were built turned out to be unnecessary—sometimes multiple
lines from different companies serving the exact same routes!
The resulting bubbles contributed to several financial crashes, see
Wikipedia for Panic of 1873, Panic of 1893, Panic of 1901 and the UK’s
Railway Mania. They left us with a lot of useful infrastructure and a
great deal of bankruptcies and environmental damage.
The year of slop
- >-
Here’s the sequel to this post: Things we learned about LLMs in 2024.
Large Language Models
In the past 24-36 months, our species has discovered that you can take a
GIANT corpus of text, run it through a pile of GPUs, and use it to
create a fascinating new kind of software.
LLMs can do a lot of things. They can answer questions, summarize
documents, translate from one language to another, extract information
and even write surprisingly competent code.
They can also help you cheat at your homework, generate unlimited
streams of fake content and be used for all manner of nefarious
purposes.
- source_sentence: >-
What are some reasons why better informed people have chosen to avoid
using LLMs?
sentences:
- >-
There’s a flipside to this too: a lot of better informed people have
sworn off LLMs entirely because they can’t see how anyone could benefit
from a tool with so many flaws. The key skill in getting the most out of
LLMs is learning to work with tech that is both inherently unreliable
and incredibly powerful at the same time. This is a decidedly
non-obvious skill to acquire!
There is so much space for helpful education content here, but we need
to do do a lot better than outsourcing it all to AI grifters with
bombastic Twitter threads.
Knowledge is incredibly unevenly distributed
Most people have heard of ChatGPT by now. How many have heard of Claude?
- >-
I find I have to work with an LLM for a few weeks in order to get a good
intuition for it’s strengths and weaknesses. This greatly limits how
many I can evaluate myself!
The most frustrating thing for me is at the level of individual
prompting.
Sometimes I’ll tweak a prompt and capitalize some of the words in it, to
emphasize that I really want it to OUTPUT VALID MARKDOWN or similar. Did
capitalizing those words make a difference? I still don’t have a good
methodology for figuring that out.
We’re left with what’s effectively Vibes Based Development. It’s vibes
all the way down.
I’d love to see us move beyond vibes in 2024!
LLMs are really smart, and also really, really dumb
- >-
The year of slop
2024 was the year that the word "slop" became a term of art. I wrote
about this in May, expanding on this tweet by @deepfates:
pipeline_tag: sentence-similarity
library_name: sentence-transformers
metrics:
- cosine_accuracy@1
- cosine_accuracy@3
- cosine_accuracy@5
- cosine_accuracy@10
- cosine_precision@1
- cosine_precision@3
- cosine_precision@5
- cosine_precision@10
- cosine_recall@1
- cosine_recall@3
- cosine_recall@5
- cosine_recall@10
- cosine_ndcg@10
- cosine_mrr@10
- cosine_map@100
model-index:
- name: SentenceTransformer based on Snowflake/snowflake-arctic-embed-l
results:
- task:
type: information-retrieval
name: Information Retrieval
dataset:
name: Unknown
type: unknown
metrics:
- type: cosine_accuracy@1
value: 0.7580645161290323
name: Cosine Accuracy@1
- type: cosine_accuracy@3
value: 0.967741935483871
name: Cosine Accuracy@3
- type: cosine_accuracy@5
value: 1
name: Cosine Accuracy@5
- type: cosine_accuracy@10
value: 1
name: Cosine Accuracy@10
- type: cosine_precision@1
value: 0.7580645161290323
name: Cosine Precision@1
- type: cosine_precision@3
value: 0.3225806451612902
name: Cosine Precision@3
- type: cosine_precision@5
value: 0.19999999999999993
name: Cosine Precision@5
- type: cosine_precision@10
value: 0.09999999999999996
name: Cosine Precision@10
- type: cosine_recall@1
value: 0.7580645161290323
name: Cosine Recall@1
- type: cosine_recall@3
value: 0.967741935483871
name: Cosine Recall@3
- type: cosine_recall@5
value: 1
name: Cosine Recall@5
- type: cosine_recall@10
value: 1
name: Cosine Recall@10
- type: cosine_ndcg@10
value: 0.8958019499724179
name: Cosine Ndcg@10
- type: cosine_mrr@10
value: 0.860215053763441
name: Cosine Mrr@10
- type: cosine_map@100
value: 0.8602150537634409
name: Cosine Map@100
SentenceTransformer based on Snowflake/snowflake-arctic-embed-l
This is a sentence-transformers model finetuned from Snowflake/snowflake-arctic-embed-l. It maps sentences & paragraphs to a 1024-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: Snowflake/snowflake-arctic-embed-l
- Maximum Sequence Length: 512 tokens
- Output Dimensionality: 1024 dimensions
- Similarity Function: Cosine Similarity
Model Sources
- Documentation: Sentence Transformers Documentation
- Repository: Sentence Transformers on GitHub
- Hugging Face: Sentence Transformers on Hugging Face
Full Model Architecture
SentenceTransformer(
(0): Transformer({'max_seq_length': 512, 'do_lower_case': False}) with Transformer model: BertModel
(1): Pooling({'word_embedding_dimension': 1024, '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("dataera2013/mt-1")
# Run inference
sentences = [
'What are some reasons why better informed people have chosen to avoid using LLMs?',
'There’s a flipside to this too: a lot of better informed people have sworn off LLMs entirely because they can’t see how anyone could benefit from a tool with so many flaws. The key skill in getting the most out of LLMs is learning to work with tech that is both inherently unreliable and incredibly powerful at the same time. This is a decidedly non-obvious skill to acquire!\nThere is so much space for helpful education content here, but we need to do do a lot better than outsourcing it all to AI grifters with bombastic Twitter threads.\nKnowledge is incredibly unevenly distributed\nMost people have heard of ChatGPT by now. How many have heard of Claude?',
'The year of slop\n2024 was the year that the word "slop" became a term of art. I wrote about this in May, expanding on this tweet by @deepfates:',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 1024]
# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [3, 3]
Evaluation
Metrics
Information Retrieval
- Evaluated with
InformationRetrievalEvaluator
Metric | Value |
---|---|
cosine_accuracy@1 | 0.7581 |
cosine_accuracy@3 | 0.9677 |
cosine_accuracy@5 | 1.0 |
cosine_accuracy@10 | 1.0 |
cosine_precision@1 | 0.7581 |
cosine_precision@3 | 0.3226 |
cosine_precision@5 | 0.2 |
cosine_precision@10 | 0.1 |
cosine_recall@1 | 0.7581 |
cosine_recall@3 | 0.9677 |
cosine_recall@5 | 1.0 |
cosine_recall@10 | 1.0 |
cosine_ndcg@10 | 0.8958 |
cosine_mrr@10 | 0.8602 |
cosine_map@100 | 0.8602 |
Training Details
Training Dataset
Unnamed Dataset
- Size: 200 training samples
- Columns:
sentence_0
andsentence_1
- Approximate statistics based on the first 200 samples:
sentence_0 sentence_1 type string string details - min: 12 tokens
- mean: 20.32 tokens
- max: 36 tokens
- min: 43 tokens
- mean: 134.92 tokens
- max: 214 tokens
- Samples:
sentence_0 sentence_1 What is the new name for unwanted AI-generated content mentioned in May?
17th: AI for Data Journalism: demonstrating what we can do with this stuff right now
22nd: Options for accessing Llama 3 from the terminal using LLM
May
8th: Slop is the new name for unwanted AI-generated content
15th: ChatGPT in “4o” mode is not running the new features yet
29th: Training is not the same as chatting: ChatGPT and other LLMs don’t remember everything you say
June
6th: Accidental prompt injection against RAG applications
10th: Thoughts on the WWDC 2024 keynote on Apple Intelligence
17th: Language models on the command-line
21st: Building search-based RAG using Claude, Datasette and Val Town
27th: Open challenges for AI engineering
July
14th: Imitation Intelligence, my keynote for PyCon US 2024What are the options for accessing Llama 3 from the terminal?
17th: AI for Data Journalism: demonstrating what we can do with this stuff right now
22nd: Options for accessing Llama 3 from the terminal using LLM
May
8th: Slop is the new name for unwanted AI-generated content
15th: ChatGPT in “4o” mode is not running the new features yet
29th: Training is not the same as chatting: ChatGPT and other LLMs don’t remember everything you say
June
6th: Accidental prompt injection against RAG applications
10th: Thoughts on the WWDC 2024 keynote on Apple Intelligence
17th: Language models on the command-line
21st: Building search-based RAG using Claude, Datasette and Val Town
27th: Open challenges for AI engineering
July
14th: Imitation Intelligence, my keynote for PyCon US 2024What is the name of the model that the author runs on their iPhone?
I run a bunch of them on my laptop. I run Mistral 7B (a surprisingly great model) on my iPhone. You can install several different apps to get your own, local, completely private LLM. My own LLM project provides a CLI tool for running an array of different models via plugins.
You can even run them entirely in your browser using WebAssembly and the latest Chrome!
Hobbyists can build their own fine-tuned models
I said earlier that building an LLM was still out of reach of hobbyists. That may be true for training from scratch, but fine-tuning one of those models is another matter entirely. - Loss:
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 }
Training Hyperparameters
Non-Default Hyperparameters
eval_strategy
: stepsper_device_train_batch_size
: 10per_device_eval_batch_size
: 10num_train_epochs
: 10multi_dataset_batch_sampler
: round_robin
All Hyperparameters
Click to expand
overwrite_output_dir
: Falsedo_predict
: Falseeval_strategy
: stepsprediction_loss_only
: Trueper_device_train_batch_size
: 10per_device_eval_batch_size
: 10per_gpu_train_batch_size
: Noneper_gpu_eval_batch_size
: Nonegradient_accumulation_steps
: 1eval_accumulation_steps
: Nonetorch_empty_cache_steps
: Nonelearning_rate
: 5e-05weight_decay
: 0.0adam_beta1
: 0.9adam_beta2
: 0.999adam_epsilon
: 1e-08max_grad_norm
: 1num_train_epochs
: 10max_steps
: -1lr_scheduler_type
: linearlr_scheduler_kwargs
: {}warmup_ratio
: 0.0warmup_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
: Falsefp16
: Falsefp16_opt_level
: O1half_precision_backend
: autobf16_full_eval
: Falsefp16_full_eval
: Falsetf32
: Nonelocal_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
: Falseignore_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_torchoptim_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
: Nonehub_always_push
: Falsegradient_checkpointing
: Falsegradient_checkpointing_kwargs
: Noneinclude_inputs_for_metrics
: Falseinclude_for_metrics
: []eval_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
: Falseeval_on_start
: Falseuse_liger_kernel
: Falseeval_use_gather_object
: Falseaverage_tokens_across_devices
: Falseprompts
: Nonebatch_sampler
: batch_samplermulti_dataset_batch_sampler
: round_robin
Training Logs
Epoch | Step | cosine_ndcg@10 |
---|---|---|
1.0 | 20 | 0.9008 |
2.0 | 40 | 0.9190 |
2.5 | 50 | 0.9050 |
3.0 | 60 | 0.9050 |
4.0 | 80 | 0.8990 |
5.0 | 100 | 0.9109 |
6.0 | 120 | 0.9029 |
7.0 | 140 | 0.9018 |
7.5 | 150 | 0.9029 |
8.0 | 160 | 0.9029 |
9.0 | 180 | 0.8958 |
10.0 | 200 | 0.8958 |
Framework Versions
- Python: 3.13.1
- Sentence Transformers: 3.4.1
- Transformers: 4.48.3
- PyTorch: 2.6.0+cu124
- Accelerate: 1.3.0
- Datasets: 3.2.0
- Tokenizers: 0.21.0
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}
}
MultipleNegativesRankingLoss
@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}
}