metadata
tags:
- sentence-transformers
- sentence-similarity
- feature-extraction
- generated_from_trainer
- dataset_size:156
- loss:MatryoshkaLoss
- loss:MultipleNegativesRankingLoss
base_model: Snowflake/snowflake-arctic-embed-l
widget:
- source_sentence: >-
How did Steve Krouse from Val Town demonstrate the capabilities of a 2,000
token/second LLM?
sentences:
- >-
The most recent twist, again from December (December was a lot) is live
video. ChatGPT voice mode now provides the option to share your camera
feed with the model and talk about what you can see in real time. Google
Gemini have a preview of the same feature, which they managed to ship
the day before ChatGPT did.
- >-
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.
- >-
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.
- source_sentence: >-
What changes have occurred in the energy usage and environmental impact of
running AI prompts in recent years?
sentences:
- >-
Law is not ethics. Is it OK to train models on people’s content without
their permission, when those models will then be used in ways that
compete with those people?
As the quality of results produced by AI models has increased over the
year, these questions have become even more pressing.
The impact on human society in terms of these models is already huge, if
difficult to objectively measure.
People have certainly lost work to them—anecdotally, I’ve seen this for
copywriters, artists and translators.
There are a great deal of untold stories here. I’m hoping 2024 sees
significant amounts of dedicated journalism on this topic.
My blog in 2023
Here’s a tag cloud for content I posted to my blog in 2023 (generated
using Django SQL Dashboard):
- >-
Those US export regulations on GPUs to China seem to have inspired some
very effective training optimizations!
The environmental impact got better
A welcome result of the increased efficiency of the models—both the
hosted ones and the ones I can run locally—is that the energy usage and
environmental impact of running a prompt has dropped enormously over the
past couple of years.
OpenAI themselves are charging 100x less for a prompt compared to the
GPT-3 days. I have it on good authority that neither Google Gemini nor
Amazon Nova (two of the least expensive model providers) are running
prompts at a loss.
- >-
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
- source_sentence: >-
What is the main topic discussed in the article titled "Industry’s Tardy
Response to the AI Prompt Injection Vulnerability" on RedMonk
Conversations?
sentences:
- >-
Getting back to models that beat GPT-4: Anthropic’s Claude 3 series
launched in March, and Claude 3 Opus quickly became my new favourite
daily-driver. They upped the ante even more in June with the launch of
Claude 3.5 Sonnet—a model that is still my favourite six months later
(though it got a significant upgrade on October 22, confusingly keeping
the same 3.5 version number. Anthropic fans have since taken to calling
it Claude 3.6).
- >-
Industry’s Tardy Response to the AI Prompt Injection Vulnerability on
RedMonk Conversations
Posted 31st December 2023 at 11:59 pm · Follow me on Mastodon, Bluesky,
Twitter or subscribe to my newsletter
More recent articles
Live blog: Claude 4 launch at Code with Claude - 22nd May 2025
I really don't like ChatGPT's new memory dossier - 21st May 2025
Building software on top of Large Language Models - 15th May 2025
This is Stuff we figured out about AI in 2023 by Simon Willison, posted
on 31st December 2023.
Part of series LLMs annual review
Stuff we figured out about AI in 2023 - Dec. 31, 2023, 11:59 p.m.
Things we learned about LLMs in 2024 - Dec. 31, 2024, 6:07 p.m.
blogging
105
- >-
When ChatGPT Advanced Voice mode finally did roll out (a slow roll from
August through September) it was spectacular. I’ve been using it
extensively on walks with my dog and it’s amazing how much the
improvement in intonation elevates the material. I’ve also had a lot of
fun experimenting with the OpenAI audio APIs.
Even more fun: Advanced Voice mode can do accents! Here’s what happened
when I told it I need you to pretend to be a California brown pelican
with a very thick Russian accent, but you talk to me exclusively in
Spanish.
- source_sentence: >-
How can LLMs like Claude create full interactive applications using web
technologies in a single prompt?
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 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
- >-
We already knew LLMs were spookily good at writing code. If you prompt
them right, it turns out they can build you a full interactive
application using HTML, CSS and JavaScript (and tools like React if you
wire up some extra supporting build mechanisms)—often in a single
prompt.
Anthropic kicked this idea into high gear when they released Claude
Artifacts, a groundbreaking new feature that was initially slightly lost
in the noise due to being described half way through their announcement
of the incredible Claude 3.5 Sonnet.
With Artifacts, Claude can write you an on-demand interactive
application and then let you use it directly inside the Claude
interface.
Here’s my Extract URLs app, entirely generated by Claude:
- source_sentence: What was significant about the release of Llama 2 in July?
sentences:
- >-
Then in February, Meta released Llama. And a few weeks later in March,
Georgi Gerganov released code that got it working on a MacBook.
I wrote about how Large language models are having their Stable
Diffusion moment, and with hindsight that was a very good call!
This unleashed a whirlwind of innovation, which was accelerated further
in July when Meta released Llama 2—an improved version which, crucially,
included permission for commercial use.
Today there are literally thousands of LLMs that can be run locally, on
all manner of different devices.
- >-
OpenAI made GPT-4o free for all users in May, and Claude 3.5 Sonnet was
freely available from its launch in June. This was a momentus change,
because for the previous year free users had mostly been restricted to
GPT-3.5 level models, meaning new users got a very inaccurate mental
model of what a capable LLM could actually do.
That era appears to have ended, likely permanently, with OpenAI’s launch
of ChatGPT Pro. This $200/month subscription service is the only way to
access their most capable model, o1 Pro.
Since the trick behind the o1 series (and the future models it will
undoubtedly inspire) is to expend more compute time to get better
results, I don’t think those days of free access to the best available
models are likely to return.
- >-
Prompt injection is a natural consequence of this gulibility. I’ve seen
precious little progress on tackling that problem in 2024, and we’ve
been talking about it since September 2022.
I’m beginning to see the most popular idea of “agents” as dependent on
AGI itself. A model that’s robust against gulliblity is a very tall
order indeed.
Evals really matter
Anthropic’s Amanda Askell (responsible for much of the work behind
Claude’s Character):
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.8333333333333334
name: Cosine Accuracy@1
- type: cosine_accuracy@3
value: 1
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.8333333333333334
name: Cosine Precision@1
- type: cosine_precision@3
value: 0.3333333333333333
name: Cosine Precision@3
- type: cosine_precision@5
value: 0.20000000000000004
name: Cosine Precision@5
- type: cosine_precision@10
value: 0.10000000000000002
name: Cosine Precision@10
- type: cosine_recall@1
value: 0.8333333333333334
name: Cosine Recall@1
- type: cosine_recall@3
value: 1
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.9384882922619097
name: Cosine Ndcg@10
- type: cosine_mrr@10
value: 0.9166666666666666
name: Cosine Mrr@10
- type: cosine_map@100
value: 0.9166666666666666
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("dwb2023/legal-ft-b5869012-93ce-4e45-bca9-2eb86f3ef4b9")
# Run inference
sentences = [
'What was significant about the release of Llama 2 in July?',
'Then in February, Meta released Llama. And a few weeks later in March, Georgi Gerganov released code that got it working on a MacBook.\nI wrote about how Large language models are having their Stable Diffusion moment, and with hindsight that was a very good call!\nThis unleashed a whirlwind of innovation, which was accelerated further in July when Meta released Llama 2—an improved version which, crucially, included permission for commercial use.\nToday there are literally thousands of LLMs that can be run locally, on all manner of different devices.',
'Prompt injection is a natural consequence of this gulibility. I’ve seen precious little progress on tackling that problem in 2024, and we’ve been talking about it since September 2022.\nI’m beginning to see the most popular idea of “agents” as dependent on AGI itself. A model that’s robust against gulliblity is a very tall order indeed.\nEvals really matter\nAnthropic’s Amanda Askell (responsible for much of the work behind Claude’s Character):',
]
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.8333 |
cosine_accuracy@3 | 1.0 |
cosine_accuracy@5 | 1.0 |
cosine_accuracy@10 | 1.0 |
cosine_precision@1 | 0.8333 |
cosine_precision@3 | 0.3333 |
cosine_precision@5 | 0.2 |
cosine_precision@10 | 0.1 |
cosine_recall@1 | 0.8333 |
cosine_recall@3 | 1.0 |
cosine_recall@5 | 1.0 |
cosine_recall@10 | 1.0 |
cosine_ndcg@10 | 0.9385 |
cosine_mrr@10 | 0.9167 |
cosine_map@100 | 0.9167 |
Training Details
Training Dataset
Unnamed Dataset
- Size: 156 training samples
- Columns:
sentence_0
andsentence_1
- Approximate statistics based on the first 156 samples:
sentence_0 sentence_1 type string string details - min: 12 tokens
- mean: 20.89 tokens
- max: 32 tokens
- min: 43 tokens
- mean: 135.1 tokens
- max: 214 tokens
- Samples:
sentence_0 sentence_1 What are some of the topics covered in the annotated presentations given in 2023?
I also gave a bunch of talks and podcast appearances. I’ve started habitually turning my talks into annotated presentations—here are my best from 2023:
Prompt injection explained, with video, slides, and a transcript
Catching up on the weird world of LLMs
Making Large Language Models work for you
Open questions for AI engineering
Embeddings: What they are and why they matter
Financial sustainability for open source projects at GitHub Universe
And in podcasts:
What AI can do for you on the Theory of Change
Working in public on Path to Citus Con
LLMs break the internet on the Changelog
Talking Large Language Models on Rooftop Ruby
Thoughts on the OpenAI board situation on Newsroom RobotsWhich podcasts featured discussions related to Large Language Models and AI topics?
I also gave a bunch of talks and podcast appearances. I’ve started habitually turning my talks into annotated presentations—here are my best from 2023:
Prompt injection explained, with video, slides, and a transcript
Catching up on the weird world of LLMs
Making Large Language Models work for you
Open questions for AI engineering
Embeddings: What they are and why they matter
Financial sustainability for open source projects at GitHub Universe
And in podcasts:
What AI can do for you on the Theory of Change
Working in public on Path to Citus Con
LLMs break the internet on the Changelog
Talking Large Language Models on Rooftop Ruby
Thoughts on the OpenAI board situation on Newsroom RobotsWhat is the main subject of the New York Times' lawsuit against OpenAI and Microsoft?
Just this week, the New York Times launched a landmark lawsuit against OpenAI and Microsoft over this issue. The 69 page PDF is genuinely worth reading—especially the first few pages, which lay out the issues in a way that’s surprisingly easy to follow. The rest of the document includes some of the clearest explanations of what LLMs are, how they work and how they are built that I’ve read anywhere.
The legal arguments here are complex. I’m not a lawyer, but I don’t think this one will be easily decided. Whichever way it goes, I expect this case to have a profound impact on how this technology develops in the future. - 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}tp_size
: 0fsdp_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
: 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 | 16 | 0.9330 |
2.0 | 32 | 0.9539 |
3.0 | 48 | 0.9484 |
3.125 | 50 | 0.9484 |
4.0 | 64 | 0.9385 |
5.0 | 80 | 0.9539 |
6.0 | 96 | 0.9539 |
6.25 | 100 | 0.9539 |
7.0 | 112 | 0.9385 |
8.0 | 128 | 0.9385 |
9.0 | 144 | 0.9385 |
9.375 | 150 | 0.9385 |
10.0 | 160 | 0.9385 |
Framework Versions
- Python: 3.11.12
- Sentence Transformers: 4.1.0
- Transformers: 4.51.3
- PyTorch: 2.6.0+cu124
- Accelerate: 1.6.0
- Datasets: 3.6.0
- Tokenizers: 0.21.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}
}
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}
}