# Ռուսերեն retrieval-էմբեդեր 24 մլն պարամետրում — և մեկ թիվը, որը քիչ էր մնում փչացներ այն

> strizh-ru-retriever-ի պատմությունը. ինչպես RuModernBERT-small-ը շերտային prune-ով դարձավ քառաշերտ էնկոդեր, ինչու դիստիլյացիայի կարճ ուղին տվեց գեղեցիկ loss և մեռած որոնում, ինչ պահեց սեղմումը — և կոնֆիգում մոռացված արժեքը, որ լուռ կտրում էր ամեն մուտք։

- Published: 2026-08-21
- Evidence level: lab_single_run
- Funding: Սեփական ֆինանսավորում, ներքին հետազոտություն
- Canonical: https://agmind.ai/hy/reports/russian-embedder-24m-params/

[strizh-ru-retriever](https://huggingface.co/AGmind/strizh-ru-retriever)-ը
լաբորատորիայի կոմպակտ ռուսերեն նախադասությունների էնկոդերն է. 24,4 մլն պարամետր, չորս շերտ, մեկ 384-չափանի էմբեդինգ ամեն տեքստի համար ,
առանց query/document պրեֆիքսների, հրապարակված Apache-2.0-ով՝ կողքին
[GGUF կշիռներով](https://huggingface.co/AGmind/strizh-ru-retriever-GGUF)։
Թե ինչպես է այն ստացվել — ներառյալ սխալը, որի անունով այս էջը կոչված է —
ամբողջական պատմությունը ռուսերեն լոնգրիդ է
[Habr-ում](https://habr.com/ru/articles/1064138/), և հենց այդ հոդվածն է
այստեղ մեջբերված ամեն թվի առաջնային աղբյուրը։ Սա ուղեկից էջն է. նույն
պատմությունը՝ սեղմված, որտեղ թվերը հոդվածից արված մեջբերումներ են, ոչ թե
ռեեստրի claim-եր։

## Ինչու՞ սեղմել էմբեդեր, որն առանց այդ էլ տեղավորվում է

Ոչ հիշողության համար։ Բազային մոդելն այնքան փոքր է, որ կապրի ամենուր;
վերջացողը հաշվարկն էր։ Ինքնուրույն տեղակայված RAG-ում էմբեդերը կիսում է
սիլիցիումը գեներատորի հետ, և ամեն էմբեդված հարցում — առավել ևս կորպուսի
ամեն վերաինդեքսավորում — գողացվում է LLM-ի դեկոդի բյուջեից։ Ինչպես ասում է
հոդվածը, վերջանում էր ոչ թե հիշողությունը, այլ GPU-ի ժամանակը։ Նպատակը
առաջին փուլի ռետրիվեր էր՝ այնքան էժան, որ սպասարկող LLM-ի կողքին
նստելիս չզգացվի, և այնքան պարզ, որ փաթաթաններն այն սխալ գործածել
չկարողանան — դրա համար այն ընդունում է հում տեքստ՝ առանց query/document
պրեֆիքսների, որոնք ամեն ինտեգրացիա մոռանում է ավելացնել։

## Ինչը ձախողվեց, մինչև որևէ բան աշխատեց

Բազան `deepvk/RuModernBERT-small`-ն էր. 12 transformer շերտ, մոտ 35 մլն պարամետր ։
Ակնհայտ կարճ ուղին — MSE-ով փոքր մոդելի էմբեդինգները մեծ ուսուցչի
էմբեդինգներին մոտեցնելը — դարձավ հոդվածի լավագույն նախազգուշական հեքիաթը.
loss-ը կայունացավ մոտ 0.00062-ի վրա, իսկ որոնումը ծնվեց մեռած՝ Recall@10 = 0.029 ։
Պրոքսի-նպատակը կատարելապես սերտաճեց մի բանի, որը խնդիրը չէր։ Աշխատող
բաղադրատոմսը ծայրից ծայր կոնտրաստիվ է. նախ 12-շերտանոց դոնորը սովորեցվում
է որպես ռետրիվեր, ապա [0, 5, 9, 11] շերտերը պահվում են որպես ջերմ մեկնարկ ուսանողի համար ,
հետո քառաշերտ մոդելը վերաուսուցվում է 220 հազար զույգանոց խառը ռուսերեն-անգլերեն հավաքածուի վրա ՝
ավելի մեծ ռետրիվերի հանած կոշտ նեգատիվներով։

## Ի՞նչ պահեց սեղմումը

Հոդվածի որակի բենչմարքը MIRACL-ru dev-ն է՝ ֆիլտրված ենթաբազմության վրա, 1000 հարցումից 758-ը ;
Recall@10-ը, ինչպես հրապարակված է այնտեղ .

| Մոդել | Recall@10 |
| --- | --- |
| bge-m3 | 0.831 |
| multilingual-e5-small | 0.829 |
| USER2-small | 0.819 |
| **strizh-ru-retriever** | **0.751** |
| rubert-tiny2 | 0.633 |

Չֆիլտրված բազմության վրա արդյունքը 0.800 է ։ Այնպես որ ոչ, փոքր
մոդելը մեծերին չի հաղթում, և հոդվածն էլ չի ձևացնում, թե հաղթում է. այն
զիջում է չափված մի կտոր recall bge-m3-ի դիմաց և դրա փոխարեն գնում է մի
կարգ այլ տեղ։ Strix Halo տուփի վրա llama.cpp/Vulkan-ով, 16 զուգահեռությամբ, այն էմբեդում էր մոտ չորս հազար կարճ հարցում վայրկյանում — 3614-ից 4450՝ ըստ գործարկումների — bge-m3-ի մոտ 448-ի և multilingual-e5-small-ի 1837-ի դիմաց ։
Սպասարկող 35B դասի MoE-ի կողքին օնլայն 200 QPS էմբեդինգ-բեռով այն LLM-ին արժեցավ գեներացիայի մոտ 2%, որտեղ bge-m3-ն արժենում էր 7% ;
ամբողջական վերաինդեքսավորման տակ հարևան LLM-ը STRIZH-ի կողքին պահեց 14,0 տրանզակցիա րոպեում՝ bge-m3-ի կողքի 6,0-ի դիմաց ։
GGUF ֆայլերը 52 ՄԲ են F16-ում, 29 ՄԲ՝ Q8_0-ում, 26 ՄԲ՝ Q4_0-ում ։
Սա է փոխանակումը՝ իր գնապիտակով։

## Մեկ սխալ թիվը

Վրիպումն այս պատմության ամենավերապատմելի մասն է։ Թողարկված
`tokenizer_config.json`-ում մնացել էր `model_max_length: 256`
— հետք կոնտրաստիվ ուսուցումից, որն աշխատում էր 256-թոքենանոց հաջորդականություններով, մինչդեռ ճարտարապետությունն ընդունում է 8192 ։
Ամեն ստանդարտ փաթաթան կարդում է այդ դաշտը և լուռ կտրում մուտքը։ Ոչինչ չի
փլուզվում, ոչինչ չի զգուշացնում; մոդելը պարզապես երկար հատվածի մեծ մասը
երբեք չի տեսնում։ Այն երևաց լաբորատորիայի ներքին RAG կորպուսի վրա
dogfood-ի ժամանակ — 163 գեներացված հարց սեփական փաստաթղթերի վրա
— որտեղ նույն checkpoint-ը ուղղված բագով տալիս էր Recall@10 = 0.589, իսկ բագի հետ՝ 0.448. անկում 14,1 տոկոսային կետով ՝
ուղիղ rubert-tiny2-ի մակարդակ։ Կոնֆիգ ֆայլի մեկ թիվը քիչ էր մնում
չեղարկեր ամբողջ ուսուցումը, և կարճ հարցումներով ոչ մի բենչմարք դա երբեք
չէր բռնի։

Սա մեր լաբորատորիայի հիմնադիր դիտարկումն է՝ այլ գլխարկով. կոնֆիգուրացիայից
կտրված որակի թիվը
[քողարկված կոնֆիգ է](https://agmind.ai/hy/essays/benchmark-number-config-in-disguise/)։
Checkpoint-ն ուներ մեկ Recall@10; checkpoint-գումարած-առաքված-կոնֆիգը՝
ուրիշ, և օգտագործողների համար իրականը միայն երկրորդն է։ Ուղղումը — և
release checklist-ի նոր կետը, որ tokenizer-ի գործող կարգավորումները
համեմատում է ճարտարապետության հետ — դուրս եկավ հրապարակային թողարկումից
առաջ։

## Որտեղ է ամեն ինչ, և ինչ այս էջը ՉԻ պնդում

Առաջնային աղբյուրը [Habr-ի լոնգրիդն է](https://habr.com/ru/articles/1064138/)
(ռուսերեն)՝ ուսուցման բոլոր իտերացիաներով, գնահատման մեթոդաբանությամբ և
վերապահումներով։ Մոդելն ու նրա GGUF սարքումները Hugging Face-ում են, իսկ
արտեֆակտի ինքնությունը՝ [արտեֆակտների էջում](https://agmind.ai/hy/artifacts/)։ Ինչ այս էջը
չի պնդում. վերևի թվերից ոչ մեկը լաբորատորիայի ռեեստրի claim չէ։ Դրանք
հոդվածից արված մեջբերումներ են — մեկ լաբորատորիայի աշխատանք, գնահատված
սեփական հեղինակի կողմից, արագության թվերը՝ մեկ մեքենայից — և պահում են
հոդվածի սեփական վերապահումները։ Թե ինչ կպահանջեր դրանցից մեր
ռեեստրային կարգի պրոտոկոլը,
[առանձին հաշվետվություն է](https://agmind.ai/hy/reports/how-to-benchmark-local-llm/)։

---

Machine-readable claim registry: https://agmind.ai/claims.json · llms.txt: https://agmind.ai/llms.txt
