Instructions to use bugBug04S/legal-embed-modernbert-v1 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- sentence-transformers
How to use bugBug04S/legal-embed-modernbert-v1 with sentence-transformers:
from sentence_transformers import SentenceTransformer model = SentenceTransformer("bugBug04S/legal-embed-modernbert-v1") sentences = [ "That is a happy person", "That is a happy dog", "That is a very happy person", "Today is a sunny day" ] embeddings = model.encode(sentences) similarities = model.similarity(embeddings, embeddings) print(similarities.shape) # [4, 4] - Notebooks
- Google Colab
- Kaggle
legal-embed-modernbert-v1
Embedding model for legal question-answer retrieval: given a plain-English legal question, it finds the most relevant answer or passage. Fine-tuned from nomic-ai/modernbert-embed-base on 16K question/answer pairs from Law StackExchange.
Good fit for: legal Q&A search, FAQ retrieval, RAG over legal forums or help-desk content. Supports Matryoshka embeddings — truncate vectors to 512/256/128/64 dims for faster search with modest quality loss.
Evaluation
Scored on 1,000 held-out Law StackExchange Q&A pairs (never seen in training), retrieval among 1,000 candidates:
| Model | Accuracy@1 | Recall@10 | MRR |
|---|---|---|---|
| legal-embed-modernbert-v1 | 0.893 | 0.994 | 0.931 |
| nomic-ai/modernbert-embed-base | 0.811 | 0.955 | 0.863 |
Known limitation: on out-of-domain contract-clause retrieval (LegalBench Consumer Contracts QA) this model scores below its base (Accuracy@1 0.556 vs 0.652). It is specialized for conversational legal Q&A, not contract clause search. Use the base model — or wait for v2 — for contract-heavy workloads.
Usage
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("bugBug04S/legal-embed-modernbert-v1")
query = "search_query: Can my landlord evict me without notice?"
docs = [
"search_document: A landlord must generally provide written notice and obtain a court order before eviction...",
"search_document: Copyright protection begins when a work is fixed in a tangible medium...",
]
q = model.encode(query, normalize_embeddings=True)
d = model.encode(docs, normalize_embeddings=True)
print((q @ d.T)) # higher = more relevant
Important: prepend search_query: to questions and search_document: to passages — the model was trained with these prefixes.
Training
- Base: nomic-ai/modernbert-embed-base (149M params)
- Data: 16,068 (question, top answer) pairs, Law StackExchange (CC-BY-SA 4.0)
- Loss: MatryoshkaLoss(CachedMultipleNegativesRankingLoss), dims 768/512/256/128/64
- 1 epoch, batch 64, lr 1e-5, fp16, max_seq_length 256, single T4 GPU
Disclaimer
Embeddings model for search/retrieval only — it does not generate legal advice. Outputs should not be relied on as a substitute for a qualified lawyer.
- Downloads last month
- 62
Model tree for bugBug04S/legal-embed-modernbert-v1
Base model
answerdotai/ModernBERT-base