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: >-
What is the author's perspective on the environmental impact of plagiarism
machines in the field discussed?
sentences:
- >-
Prince Canuma’s excellent, fast moving mlx-vlm project brings vision
LLMs to Apple Silicon as well. I used that recently to run Qwen’s QvQ.
While MLX is a game changer, Apple’s own “Apple Intelligence” features
have mostly been a disappointment. I wrote about their initial
announcement in June, and I was optimistic that Apple had focused hard
on the subset of LLM applications that preserve user privacy and
minimize the chance of users getting mislead by confusing features.
- >-
I think telling people that this whole field is environmentally
catastrophic plagiarism machines that constantly make things up is doing
those people a disservice, no matter how much truth that represents.
There is genuine value to be had here, but getting to that value is
unintuitive and needs guidance.
Those of us who understand this stuff have a duty to help everyone else
figure it out.
Everything tagged “llms” on my blog in 2024
Because I undoubtedly missed a whole bunch of things, here’s every
long-form post I wrote in 2024 that I tagged with llms:
- >-
Meanwhile, it’s increasingly common for end users to develop wildly
inaccurate mental models of how these things work and what they are
capable of. I’ve seen so many examples of people trying to win an
argument with a screenshot from ChatGPT—an inherently ludicrous
proposition, given the inherent unreliability of these models crossed
with the fact that you can get them to say anything if you prompt them
right.
- source_sentence: What is the license under which Alibaba's QwQ model was released?
sentences:
- >-
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.
- >-
OpenAI are not the only game in town here. Google released their first
entrant in the category, gemini-2.0-flash-thinking-exp, on December
19th.
Alibaba’s Qwen team released their QwQ model on November 28th—under an
Apache 2.0 license, and that one I could run on my own machine. They
followed that up with a vision reasoning model called QvQ on December
24th, which I also ran locally.
DeepSeek made their DeepSeek-R1-Lite-Preview model available to try out
through their chat interface on November 20th.
To understand more about inference scaling I recommend Is AI progress
slowing down? by Arvind Narayanan and Sayash Kapoor.
- >-
The boring yet crucial secret behind good system prompts is test-driven
development. You don’t write down a system prompt and find ways to test
it. You write down tests and find a system prompt that passes them.
It’s become abundantly clear over the course of 2024 that writing good
automated evals for LLM-powered systems is the skill that’s most needed
to build useful applications on top of these models. If you have a
strong eval suite you can adopt new models faster, iterate better and
build more reliable and useful product features than your competition.
Vercel’s Malte Ubl:
- source_sentence: >-
How do longer inputs enhance the problem-solving capabilities of an LLM
compared to shorter prompts?
sentences:
- >-
19th: Weeknotes: GPT-4o mini, LLM 0.15, sqlite-utils 3.37 and building a
staging environment
August
6th: Weeknotes: a staging environment, a Datasette alpha and a bunch of
new LLMs
8th: django-http-debug, a new Django app mostly written by Claude
23rd: Claude’s API now supports CORS requests, enabling client-side
applications
26th: Building a tool showing how Gemini Pro can return bounding boxes
for objects in images
September
6th: Calling LLMs from client-side JavaScript, converting PDFs to HTML +
weeknotes
10th: Notes from my appearance on the Software Misadventures Podcast
12th: Notes on OpenAI’s new o1 chain-of-thought models
20th: Notes on using LLMs for code
- >-
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.
- >-
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.
- source_sentence: >-
What capabilities does Google’s Gemini have regarding audio input and
output?
sentences:
- >-
Terminology aside, I remain skeptical as to their utility based, once
again, on the challenge of gullibility. LLMs believe anything you tell
them. Any systems that attempts to make meaningful decisions on your
behalf will run into the same roadblock: how good is a travel agent, or
a digital assistant, or even a research tool if it can’t distinguish
truth from fiction?
Just the other day Google Search was caught serving up an entirely fake
description of the non-existant movie “Encanto 2”. It turned out to be
summarizing an imagined movie listing from a fan fiction wiki.
- >-
Watching in real time as “slop” becomes a term of art. the way that
“spam” became the term for unwanted emails, “slop” is going in the
dictionary as the term for unwanted AI generated content
I expanded that definition a tiny bit to this:
Slop describes AI-generated content that is both unrequested and
unreviewed.
I ended up getting quoted talking about slop in both the Guardian and
the NY Times. Here’s what I said in the NY TImes:
Society needs concise ways to talk about modern A.I. — both the
positives and the negatives. ‘Ignore that email, it’s spam,’ and ‘Ignore
that article, it’s slop,’ are both useful lessons.
- >-
Your browser does not support the audio element.
OpenAI aren’t the only group with a multi-modal audio model. Google’s
Gemini also accepts audio input, and the Google Gemini apps can speak in
a similar way to ChatGPT now. Amazon also pre-announced voice mode for
Amazon Nova, but that’s meant to roll out in Q1 of 2025.
Google’s NotebookLM, released in September, took audio output to a new
level by producing spookily realistic conversations between two “podcast
hosts” about anything you fed into their tool. They later added custom
instructions, so naturally I turned them into pelicans:
Your browser does not support the audio element.
- source_sentence: >-
How does the context compare a prompt without evals, models, and UX to an
ASML machine?
sentences:
- >-
When @v0 first came out we were paranoid about protecting the prompt
with all kinds of pre and post processing complexity.
We completely pivoted to let it rip. A prompt without the evals, models,
and especially UX is like getting a broken ASML machine without a manual
- >-
I’m still trying to figure out the best patterns for doing this for my
own work. Everyone knows that evals are important, but there remains a
lack of great guidance for how to best implement them—I’m tracking this
under my evals tag. My SVG pelican riding a bicycle benchmark is a pale
imitation of what a real eval suite should look like.
Apple Intelligence is bad, Apple’s MLX library is excellent
As a Mac user I’ve been feeling a lot better about my choice of platform
this year.
Last year it felt like my lack of a Linux/Windows machine with an
NVIDIA GPU was a huge disadvantage in terms of trying out new models.
- >-
That’s a total cost of $1.68 to process 68,000 images. That’s so
absurdly cheap I had to run the numbers three times to confirm I got it
right.
How good are those descriptions? Here’s what I got from this command:
llm -m gemini-1.5-flash-8b-latest describe -a IMG_1825.jpeg
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.875
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.875
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.875
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.9429554063988107
name: Cosine Ndcg@10
- type: cosine_mrr@10
value: 0.923611111111111
name: Cosine Mrr@10
- type: cosine_map@100
value: 0.923611111111111
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("philocifer/legal-ft-2")
# Run inference
sentences = [
'How does the context compare a prompt without evals, models, and UX to an ASML machine?',
'When @v0 first came out we were paranoid about protecting the prompt with all kinds of pre and post processing complexity.\nWe completely pivoted to let it rip. A prompt without the evals, models, and especially UX is like getting a broken ASML machine without a manual',
'That’s a total cost of $1.68 to process 68,000 images. That’s so absurdly cheap I had to run the numbers three times to confirm I got it right.\nHow good are those descriptions? Here’s what I got from this command:\nllm -m gemini-1.5-flash-8b-latest describe -a IMG_1825.jpeg',
]
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.875 |
cosine_accuracy@3 | 1.0 |
cosine_accuracy@5 | 1.0 |
cosine_accuracy@10 | 1.0 |
cosine_precision@1 | 0.875 |
cosine_precision@3 | 0.3333 |
cosine_precision@5 | 0.2 |
cosine_precision@10 | 0.1 |
cosine_recall@1 | 0.875 |
cosine_recall@3 | 1.0 |
cosine_recall@5 | 1.0 |
cosine_recall@10 | 1.0 |
cosine_ndcg@10 | 0.943 |
cosine_mrr@10 | 0.9236 |
cosine_map@100 | 0.9236 |
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: 13 tokens
- mean: 20.07 tokens
- max: 33 tokens
- min: 43 tokens
- mean: 130.53 tokens
- max: 204 tokens
- Samples:
sentence_0 sentence_1 What are some ways the author has used LLMs to improve productivity and entertainment?
So far, I think they’re a net positive. I’ve used them on a personal level to improve my productivity (and entertain myself) in all sorts of different ways. I think people who learn how to use them effectively can gain a significant boost to their quality of life.
A lot of people are yet to be sold on their value! Some think their negatives outweigh their positives, some think they are all hot air, and some even think they represent an existential threat to humanity.
They’re actually quite easy to build
The most surprising thing we’ve learned about LLMs this year is that they’re actually quite easy to build.What concerns do some people have regarding the value and impact of LLMs?
So far, I think they’re a net positive. I’ve used them on a personal level to improve my productivity (and entertain myself) in all sorts of different ways. I think people who learn how to use them effectively can gain a significant boost to their quality of life.
A lot of people are yet to be sold on their value! Some think their negatives outweigh their positives, some think they are all hot air, and some even think they represent an existential threat to humanity.
They’re actually quite easy to build
The most surprising thing we’ve learned about LLMs this year is that they’re actually quite easy to build.What improvements were noted in the intonation of ChatGPT Advanced Voice mode during its rollout?
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. - 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 | 16 | 0.9276 |
2.0 | 32 | 0.9330 |
3.0 | 48 | 0.9301 |
3.125 | 50 | 0.9301 |
4.0 | 64 | 0.9372 |
5.0 | 80 | 0.9401 |
6.0 | 96 | 0.9401 |
6.25 | 100 | 0.9401 |
7.0 | 112 | 0.9430 |
8.0 | 128 | 0.9484 |
9.0 | 144 | 0.9430 |
9.375 | 150 | 0.9430 |
10.0 | 160 | 0.9430 |
Framework Versions
- Python: 3.11.11
- Sentence Transformers: 3.4.1
- Transformers: 4.48.3
- PyTorch: 2.5.1+cu124
- Accelerate: 1.3.0
- Datasets: 3.3.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}
}