inference/research
verifiedhigh · 0.85updated 2026-10-04

Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks

embedding · emnlp

Fields

id
papers/sbert
arXiv
1908.10084
Venue
emnlp
Venue track
main
Year
2019
Category
embedding
Adoption
in-production
Authors
Nils ReimersIryna Gurevych
Affiliations
University of Applied Sciences Darmstadt
Problem
BERT must run both sentences through the network jointly, making similarity search over a corpus quadratically expensive.
Mechanism
Siamese/triplet structure with a SHARED encoder and a pooling layer producing one fixed-size vector per sentence; similarity is then a cosine or dot product over precomputed vectors. This makes the encoder independent per sentence, so corpus vectors are computed once and indexable.
Speedup reported
Reduces the cost of finding the most similar pair in a 10,000-sentence collection from ~65 HOURS (about 50 million BERT inference computations) to about 5 SECONDS, while retaining BERT's accuracy. The 10,000-sentence corpus and the CPU-class baseline are both stated, which makes this the most concrete encoder-cost number in the embedding literature.
Open weights
yes
notes
Venue EMNLP 2019, confirmed via crossref (ACL, 'Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing'). The single most consequential paper for embedding SERVING: it is the reason embedding workloads are a vector-database problem rather than an inference problem. THE COST INVERSION THIS REPO CARES ABOUT: a text encoder at batch 1 is COMPUTE-BOUND, the inverse of a batch-1 text decoder which is memory-bound. One SBERT forward is a few GFLOPs and reads all weights, so batching is not optional - unlike decode, where batching is opportunistic. Everything about encoder serving (batch it, sort by length, keep weights resident) follows from that. VENUE_TRACK BACKFILL 2026-10-04 (paper-fields pass): venue_track set to 'main' from the ACL Anthology bib index (anthology.bib, 131650 entries) by normalized title match. Evidence: anthology id D19-1410, booktitle 'Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing and the 9th International Joint Conference on Natural Language Processing (EMNLP-IJCNLP)'. The Anthology id is the authoritative signal here and it is unambiguous, so this is an additive clarification of a track, not a change of venue - `venue` is untouched and no status change is implied. The reason this matters for inference readers: a Findings paper and a main-track paper at the same venue are not the same kind of evidence, and until this field existed the repo could not say which was which.

Notes

Venue EMNLP 2019, confirmed via crossref (ACL, 'Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing'). The single most consequential paper for embedding SERVING: it is the reason embedding workloads are a vector-database problem rather than an inference problem. THE COST INVERSION THIS REPO CARES ABOUT: a text encoder at batch 1 is COMPUTE-BOUND, the inverse of a batch-1 text decoder which is memory-bound. One SBERT forward is a few GFLOPs and reads all weights, so batching is not optional - unlike decode, where batching is opportunistic. Everything about encoder serving (batch it, sort by length, keep weights resident) follows from that.

VENUE_TRACK BACKFILL 2026-10-04 (paper-fields pass): venue_track set to 'main' from the ACL Anthology bib index (anthology.bib, 131650 entries) by normalized title match. Evidence: anthology id D19-1410, booktitle 'Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing and the 9th International Joint Conference on Natural Language Processing (EMNLP-IJCNLP)'. The Anthology id is the authoritative signal here and it is unambiguous, so this is an additive clarification of a track, not a change of venue - `venue` is untouched and no status change is implied. The reason this matters for inference readers: a Findings paper and a main-track paper at the same venue are not the same kind of evidence, and until this field existed the repo could not say which was which.

Cross-references