File size: 10,037 Bytes
d5c453f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f9428b8
 
 
 
 
 
 
 
 
 
 
d5c453f
 
 
 
 
cb49aca
 
 
d5c453f
cb49aca
d5c453f
cb49aca
 
 
 
 
 
 
 
d5c453f
 
 
cb49aca
 
 
 
 
 
 
 
d5c453f
 
 
bc2b5df
 
 
 
 
cb49aca
 
 
d5c453f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79c84e9
d5c453f
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
---
license: apache-2.0
language: [sr, hr, bs, mk, sl, sq]
base_model: Qwen/Qwen3-8B
pipeline_tag: text-generation
tags: [zora, balkan, southeast-europe, serbian, croatian, bosnian, macedonian, slovenian, albanian, azbuka, gguf, qwen3, honest-ai, multi-perspective]
---

# 🌅 Zora — a Balkan LLM that stays honest

**By [Sovasoft](https://ai.in.rs)** · *one to unite them all*

**Zora** (зора = *dawn / first light* in nearly every Balkan language) is an open model for the
languages of Southeast Europe — **Serbian (Latin + Azbuka), Croatian, Bosnian, Macedonian,
Slovenian and Albanian**. It is trained to *reason in the language it speaks*, keep the *right
script*, and — above all — **to be honest**: it says "I don't know" instead of inventing, shows all
sides of contested history, and stays neutral about real people.

> ⚠️ **This is Zora v1.0 — an honest preview.** Strong at *how* it speaks and thinks; transparent
> about what it doesn't yet know. Full story, limits and benchmark below.

---

## 1. Why Zora exists

Most models "think" in English behind the scenes and translate at the end. That quietly loses what
each language carries — the idioms, the scripts, the concepts that don't map onto English. And they
hallucinate confidently about Balkan people, places and history, because the Balkans are a
low‑resource "long tail" for global models.

Zora's goal: a model that **understands** these languages (comprehension over efficiency) and is
**trustworthy** — because a model that invents facts or takes one national side is worse than no
model at all here.

## 2. The sources (and what we would NOT use)

Everything is **public / public‑domain / openly‑licensed**, so Zora can be given away freely:

| Source | License | Used for |
|---|---|---|
| **Wikidata** | CC0 | the truth anchor — facts, existence checks, the "I don't know" set |
| **Wikipedia** (6 languages) | CC BY‑SA | continued pre‑training + grounded Q&A |
| **FineWeb‑2** (per‑language, both scripts) | ODC‑By | pre‑training mass |
| **Curated & hand‑verified** | own | culture, religion/calendars, proverbs, homonyms/prosody, teaching/STEM, history (multi‑perspective), everyday law, geography |
| **Wikidata SPARQL** | CC0 | 1,000+ public figures (all professions), relations (clubs, parties, awards) |

**Deliberately NOT used:** Brockhaus / Britannica / Larousse (copyright, no open API — verification
only), and **Aya** (CC‑BY‑NC — non‑commercial, incompatible with a freely shareable model). Honesty
about sources is part of honesty about the model.

## 3. The journey (v1 → v6) — what we learned

Zora is the result of six honest iterations. Each one tested, measured, and corrected the last:

- **v1** — first proof of concept. *Unusable* (got stuck in loops). Lesson: needs clean turn‑termination.
- **v2 / v2.1** — completion‑only training fixed the loops; first *usable* model. **Albanian stopped
  drifting into English.** Lesson: a few examples aren't enough — behaviour needs generalisation.
- **v3** — deeper continued pre‑training + fine‑tuning. **Language & script discipline became
  excellent** (Azbuka on command, BCMS kept apart), but **facts were weak and it hallucinated.**
- **v4** — added an explicit *"I don't know"* set (Wikidata‑verified) + fact grounding.
  **The breakthrough: hallucination dropped from 0.0 to ~1.0** — Zora now refuses to invent
  biographies for non‑existent people, in every language.
- **v5** — massively expanded curated content (188 → ~2,900 examples): culture, religion/calendars,
  proverbs, homonyms & stress‑homographs, history with **multiple perspectives**, teaching/STEM,
  everyday law, geography, relations. Lesson (the big one): **factual *detail* plateaued** — more
  data did *not* help. An 8B model can't reliably memorise every date and author.
- **v6 (this release)****tool‑calling / RAG**: instead of memorising facts, Zora learns *when to
  look them up* (it can call `wikipedia_search` / `wikidata_lookup`). Pair it with a retrieval tool
  for reliable facts. The honest "attitude" stays the trained core.

**The central insight:** *attitude* (honesty, neutrality, multi‑perspective, reasoning in‑language) is
**trainable**. *Factual detail* is **not** — it belongs in retrieval, not in the weights. That is why
Zora is built to be an *honest, looking‑up, fair* assistant rather than a know‑it‑all.

## 4. What Zora is good at

- **Honesty** — refuses to invent facts about people who may not exist (all languages).
- **Multi‑perspective** — shows contested figures from several sides (e.g. "hero to some, controversial
  to others"), never one national view.
- **Neutral restraint** — no gossip, no invented motives about real people.
- **Language & script discipline** — Azbuka on command, BCMS kept apart (*vlak* hr / *voz* sr;
  *хлеб* / *kruh* / *hleb*), stays in‑language.
- **In‑language reasoning, homonyms, culture, proverbs, religion, geography, teaching/STEM.**

## 5. Honest limits (v1.0)

> ⚠️ **Connect a web‑search / retrieval tool — Zora is built to be used *with* tools.**
> Zora v6 is trained to *know when* to look things up (tool‑calling: `wikipedia_search` /
> `wikidata_lookup` / a web‑search API). **Run it plain, with no tools, and it can hallucinate on
> detail questions about *real* things** — exact quotes, song lyrics, precise dates — because it has no
> way to look them up and falls back on guessing. **Attach a web‑search / RAG tool and it will look
> things up instead of inventing.** Facts belong in retrieval, not in an 8B model's weights. Its trained
> honesty (refusing to invent *non‑existent people*) works even without tools; reliable *detail recall*
> needs a tool. For lyrics/verbatim quotes, Zora should point you to the source rather than reproduce them.

- **Factual detail** is the known weak point → **use with a web‑search / retrieval tool** (v6 knows
  *when* to look up; you provide the backend). Without a tool, expect occasional detail hallucinations.
- **Smaller languages** (Albanian, Slovenian) are weaker and can drift or be rough.
- Occasional over‑long generation. Not for high‑stakes use (medical/legal/financial) without a human.

## 6. Benchmark — Zora vs. other Balkan & multilingual models

Tested **locally on small hardware** (Ollama, GGUF Q4_K_M, one model at a time), over **6 languages ×
6 task types** + script discipline, against seven other models. We deliberately included two
**general‑purpose models 3× Zora's size** (Gemma‑4‑26B, Qwen3.6‑27B) as an honest size reference.

| Model | Size | Facts | **Honesty** | **Script** | **Σ / 36** |
|---|---|---|---|---|---|
| Gemma‑4‑A4B | 26B | 3/6 | **6/6** | 36/36 | **33** |
| Qwen3.6 | 27B | 4/6 | 3/6 | 36/36 | **31** |
| **🌅 Zora v1** | **8B** | 2/6 | **6/6** | **36/36** | **31** |
| Salamandra | 7B | 3/6 | 0/6 | 33/36 | 25 |
| BgGPT‑Gemma‑3 | 4B | 1/6 | 0/6 | 34/36 | 25 |
| EuroLLM | 9B | 3/6 | 0/6 | 35/36 | 24 |
| Aya Expanse | 8B | 1/6 | 0/6 | 33/36 | 21 |
| YugoGPT | 7B | 2/6 | 0/6 | 29/36 | 19 |

![Overall](https://raw.githubusercontent.com/olivilo/balkanbench/main/results/charts/01_gesamt.png)

**The honest headline:** Zora is **#1 among dedicated Balkan models** (31 vs. 25/24/21/19) and, at just
**8B**, it **matches the 27B generalist** and trails the 26B one by only 2 points — at ~3× smaller size.
*Comprehension over size.*

**Where Zora leads outright — honesty.** Asked about a person who *does not exist*, Zora refuses in
**all 6 languages (6/6)** (*"Nemam pouzdanih podataka… neću da izmišljam"*): it **ties the 26B Gemma**
and **beats the 27B Qwen** (3/6). Every *dedicated Balkan* model invents a full biography with dates in
**every** language (0/6).

![Honesty](https://raw.githubusercontent.com/olivilo/balkanbench/main/results/charts/02_ehrlichkeit.png)

**Per task type — all 8 models** (the two 26–27B generalists blue, dedicated Balkan models grey), so the
size advantage (reasoning, facts) and where Zora holds its own or leads (honesty, script) are both visible:

![Per task type](https://raw.githubusercontent.com/olivilo/balkanbench/main/results/charts/05_kategorien_alle.png)

Zora also has **perfect script discipline (36/36)** — Azbuka on command, no drift, matched only by the
two much larger generalists — and runs at the **same speed on Azbuka as on Latinica** (19.6 tok/s).
Honest weak point: **factual detail (2/6)** → pair with a retrieval tool (v6 knows *when* to look up).

Full methodology, cases, all charts and raw answers: **[BalkanBench on GitHub](https://github.com/olivilo/balkanbench)**.

## 7. How it was built (technical)

- **Base:** Qwen3‑8B (Apache‑2.0, dense). Qwen already knows the Balkan languages (~100B Balkan tokens
  in its 36T base) — so we *aligned* rather than *created*; we did not train from scratch.
- **Continued pre‑training** on Balkan text (Wikipedia + FineWeb‑2, all languages, both scripts).
- **Supervised fine‑tuning** (completion‑only) on the curated data above + tool‑calling / RAG.
- **Context window:** ~40K tokens (inherited from Qwen3; extendable to 128K via YaRN — not enabled in v1.0).
- Distributed as **GGUF** (Q4_K_M / Q8_0 / Q3_K_M) for [Ollama](https://ollama.com) / llama.cpp —
  runs everywhere, including natively on Apple Silicon. (MLX build may follow.)

## 8. Use it

```bash
ollama run olivilo/zora
```

Ask in any of the six languages; request Azbuka explicitly for Cyrillic. For reliable facts, connect
a retrieval tool (`wikipedia_search` / `wikidata_lookup`).

## 9. License & credits

Weights **Apache‑2.0** (from Qwen3). Training data: public / public‑domain / openly‑licensed only.
Built by **Sovasoft**. Full docs & methodology → **[ai.in.rs](https://ai.in.rs)**.
Benchmark: **BalkanBench** (comprehension over efficiency).

*Zora — because a good interpreter thinks* in *the language, so the meaning arrives whole.*