ethicalabs/Echo-DSRN-v0.1.3-Embed-Intent
Echo-DSRN-v0.1.3-Embed-Intent
     
98M-parameter multilingual intent classification embedding model based on the Echo-DSRN architecture (Dual-State Recurrent Neural Network) ◦ Recurrent Hybrid.
Fine-tuned from `ethicalabs/Echo-DSRN-v0.1.3-Embed-Exp` on Amazon MASSIVE across all 51 languages using MultipleNegativesRankingLoss (MNRL).
Model specs
MTEB Results
MassiveIntentClassification (60 intents, 51 languages)
MassiveScenarioClassification (17 scenarios, 51 languages)
Evaluated via MTEB v2.12.30 logistic regression protocol on frozen embeddings. Per-language scores available in the model-index metadata.
Training
- Base model:
ethicalabs/Echo-DSRN-v0.1.3-Embed-Exp(STS-pretrained, 0.753 avg Spearman on MTEB STS) - Dataset: Amazon MASSIVE, all 51 locales (~1M training utterances)
- Loss:
MultipleNegativesRankingLosswith intent-grouped positive pairs - Pooling:
mean_c_all(2048-dim recurrent slow state) - Convergence: Early stopping at epoch 1.2; linear accuracy gain (+2 pts/1k steps), no grokking plateau
- Random baseline: ~1.7% (60-class 1-NN)
Example Usage
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("ethicalabs/Echo-DSRN-v0.1.3-Embed-Intent", trust_remote_code=True, device="cpu")
sentences = [
"Can I order a pizza?",
"I am so hungry. what about pizza?",
"I like spaghetti."
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)Console output
torch.Size([3, 3])
>>> print(similarities)
tensor([[1.0000, 0.9333, 0.7381],
[0.9333, 1.0000, 0.8411],
[0.7381, 0.8411, 1.0000]])Intent Vector Space Behavior
Here is what the model is actually doing under the hood for each pair:
- `Sim(0, 1) = 0.9333` — Matching Actionable Intent
- Sentence 0:
"Can I order a pizza?" - Sentence 1:
"I am so hungry. what about pizza?" - Analysis: Despite using completely different phrasing and syntax (one is a direct question, the other is a multi-sentence conversational prompt), the model maps them to nearly the same spot in vector space. The recurrent slow state identifies the underlying action (
order_food) and topic (pizza), yielding a massive 0.9333 correlation.
- `Sim(0, 2) = 0.7381` — Action vs. Statement Separation
- Sentence 0:
"Can I order a pizza?" - Sentence 2:
"I like spaghetti." - Analysis: Notice the significant drop down to 0.7381. Even though both sentences live in the general domain of Italian food, the model correctly separates an actionable transactional request (
"Can I order...") from a static statement of personal preference ("I like..."). This is where the fine-tuning on the MASSIVE dataset withMultipleNegativesRankingLossshines: it prevents the model from relying purely on lexical topic overlap.
- `Sim(1, 2) = 0.8411` — Conversational Context
- Sentence 1:
"I am so hungry. what about pizza?" - Sentence 2:
"I like spaghetti." - Analysis: This pair scores higher (0.8411) than (0, 2). Because Sentence 1 expresses a state/desire (
"I am so hungry"), its semantic profile sits naturally between an explicit ordering command and a preference statement.
Citation
@software{echo_dsrn_embed_intent,
author = {Massimo Roberto Scamarcia},
title = {Echo-DSRN-v0.1.3-Embed-Intent: Multilingual Intent Classification Embeddings},
year = {2026},
url = {https://huggingface.co/Echo-DSRN-v0.1.3-Embed-Intent}
}Note on tokenizer padding
The benchmark results on this card were measured with left padding (padding_side: left), and this model version reproduces them under that convention. A right-padded training version is planned: right padding keeps padded-batch embeddings consistent with single-request embeddings (leading pad tokens do not pollute the recurrent state), so future checkpoints will be batch-composition independent.
