98M-parameter multilingual intent classification embedding model based on the Echo-DSRN architecture (Dual-State Recurrent Neural Network) ◦ Recurrent Hybrid.
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
python
1from sentence_transformers import SentenceTransformer
23model = SentenceTransformer("ethicalabs/Echo-DSRN-v0.1.3-Embed-Intent", trust_remote_code=True, device="cpu")45sentences =[6"Can I order a pizza?",7"I am so hungry. what about pizza?",8"I like spaghetti."9]10embeddings = model.encode(sentences)1112similarities = model.similarity(embeddings, embeddings)13print(similarities.shape)
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 with MultipleNegativesRankingLoss shines: 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.
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.