← All posts
Research & Engineering

We trained the same model five more epochs. Recall@1 went up 53%, and two of sixteen languages got worse.

We trained the same model five more epochs. Recall@1 went up 53%, and two of sixteen languages got worse.

Our first release of this model was undertrained. We shipped it at a single epoch, measured it honestly, and it was a real improvement over the base model. Then we let the same model keep training on the same data, measured every epoch along the way, and it kept getting better. This is the story of what five more epochs bought us, and the honest part we are not hiding: two of the sixteen languages came out worse.

The model is embed-gov-indic v1.1, revision gov-indic-e4-ep6. It is public on Hugging Face and the weights are Apache-2.0.

What it is

embed-gov-indic is a cross-lingual retriever for Indian government press-release text across 16 Indian languages. Cross-lingual means you can ask in one Indian language and it will find the release about the same event that was filed in another. It is built on the open multilingual-e5-small base model, and it encodes a query and each passage into vectors so the closest passage to your query rises to the top. You give it a search query, it gives you back the releases most likely to answer it.

It is a specialist. We built and measured it for Indian government press releases, and that is the only thing we claim it does well. It is not a general-purpose search model and it is not a legal model. A model that tells you where it works is worth more than one that says it works everywhere.

The number that matters

We measure the plain, useful quantity: how often the single top-ranked result is the correct one. That is Recall@1. We score it on an in-distribution, cross-lingual query set, on GPU, and we compare three checkpoints on the exact same evaluation.

ModelCross-lingual Recall@1
Base (multilingual-e5-small)0.184
embed-gov-indic v1.0 (one epoch)0.235
embed-gov-indic v1.1 (six epochs)0.281

From the base model to v1.1 is 0.184 to 0.281, a 53% relative gain, and the bootstrap 95% confidence intervals for the two do not overlap. The same holds when we compare v1.1 against our own v1.0: the improvement from longer training is real and its interval clears zero. Put the other way, the correct passage lands in the top ten about 84% of the time.

One caution we will repeat wherever these numbers appear: Recall@1 and top-ten are retrieval ranking measures. They describe how often the right document is placed first, or near the top. They are not an accuracy or a confidence percentage, and we do not translate them into one.

The curve, epoch by epoch

The reason we can tell you the first version was undertrained is that we scored every epoch, not just the one we shipped. Here is the whole arc, as relative gain over the base model:

  • Epoch 1: +8.7%, confidence interval overlaps the base, so we treat it as not yet distinguishable.
  • Epoch 2: +16.2%, still overlapping.
  • Epoch 3, released as v1.0: +27.7%, and here the interval first clears the base.
  • Epoch 4, released as v1.1: +53%, clearing both the base and v1.0.

The lift did not arrive all at once, and the early epochs did not yet separate from the base with any confidence. We shipped v1.0 at the first point where the gain was solid, and we shipped v1.1 when more training made it solidly better again. If we had only looked at the final model, we could not have told you that.

The honest part: two languages got worse

More training helped in aggregate, but not everywhere. Going from v1.0 to v1.1, thirteen of the sixteen languages improved, and two regressed: Gujarati and Odia. They are better under v1.0 than under v1.1.

We could have replaced v1.0 and said nothing. Instead we kept both, each under its own revision tag, so anyone who cares about Gujarati or Odia can pin whichever version serves them better. Telling you which two languages moved the wrong way is the point, not a footnote to bury.

Two more scope limits belong here in the open. The headline is a single aggregate across a mixed-language query set, not a per-language guarantee. And our lowest-resource languages, Khasi, Nepali and Manipuri, are thin in the training data, so treat them as the least reliable of the sixteen.

Where the data came from

embed-gov-indic is trained on Press Information Bureau (PIB) government press releases. The same release is often published in many languages, which is exactly what gives us naturally parallel cross-lingual pairs to train on. We reuse that text under PIB's reproduction policy, which permits reproduction with attribution and carries no non-commercial and no share-alike restriction. The training is non-reconstructive: the model learns to place text in a vector space and cannot reproduce the source releases. We ship the weights, not the corpus, and the weights are clean Apache-2.0. This is general information about how the model was built, not legal advice.

Verify it yourself

We would rather you trust the method than the marketing, so everything above is checkable. The Hugging Face model card carries the full benchmark, the per-version numbers and the scope in one place. And the retriever is wired into our live cross-lingual playground demo, so you can type a query in one Indian language and watch it surface a government release filed in another. Pull the model, run it against your own text, and judge it on what you see.

huggingface.co/quanfire-ai/embed-gov-indic

DocPro

Want that same measure-it-honestly discipline applied to your own documents? The same team builds DocPro. Try it on your contracts and filings.

Share

Keep reading