ai-babai commited on
Commit
33b2ff4
·
verified ·
1 Parent(s): 9d6c363

Add release model card and provenance

Browse files
Files changed (3) hide show
  1. README.md +209 -46
  2. README.ru.md +213 -0
  3. manifest.json +71 -0
README.md CHANGED
@@ -1,37 +1,76 @@
1
  ---
2
  license: mit
3
- library_name: llama.cpp
4
- pipeline_tag: feature-extraction
 
 
 
5
  base_model: ai-sage/Giga-Embeddings-instruct-3B-0826
 
 
6
  tags:
7
- - gguf
 
8
  - embeddings
9
- - qwen3
10
- - sentence-transformers
 
11
  - russian
12
- - multilingual
 
 
 
 
 
 
 
 
13
  ---
14
 
15
- # Giga Embeddings instruct 3B 0826 — GGUF
16
 
17
- GGUF conversions of [`ai-sage/Giga-Embeddings-instruct-3B-0826`](https://huggingface.co/ai-sage/Giga-Embeddings-instruct-3B-0826), pinned at source revision `ed7db5c91b900b39381b27b6e9c0a3d31137cd29`.
 
 
18
 
19
- These artifacts preserve the model's bidirectional Qwen3 attention, mean pooling, 2048-dimensional output, and all 398 source tensors. Conversion and validation used stock [`ggml-org/llama.cpp`](https://github.com/ggml-org/llama.cpp) revision `e750b887a82719c27200b71545f63ed78ec24719` (build 10763).
 
 
 
20
 
21
- ## Files
 
 
 
22
 
23
- | File | Size | Role |
24
- |---|---:|---|
25
- | `giga-embeddings-0826-3b-q8_0.gguf` | 3.35 GB | **Recommended/default**: strongest size/quality balance |
26
- | `giga-embeddings-0826-3b-q4_k_m.gguf` | 1.96 GB | **Lightweight/experimental**: smallest published option |
27
- | `giga-embeddings-0826-3b-bf16.gguf` | 6.31 GB | High-precision reference |
28
- | `giga-embeddings-0826-3b-q6_k.gguf` | 2.59 GB | Research/optional; see caveats below |
29
 
30
- SHA-256 values are provided in `SHA256SUMS`.
 
 
 
 
 
31
 
32
- ## llama.cpp usage
 
 
 
33
 
34
- Use a recent stock `llama.cpp` build. Example with the recommended Q8 model:
 
 
 
 
 
 
 
 
 
 
35
 
36
  ```bash
37
  llama-server \
@@ -43,53 +82,177 @@ llama-server \
43
  --host 127.0.0.1 --port 8080
44
  ```
45
 
46
- Then call the OpenAI-compatible embeddings endpoint:
 
 
 
47
 
48
  ```bash
49
  curl http://127.0.0.1:8080/v1/embeddings \
50
  -H 'Content-Type: application/json' \
51
- -d '{"model":"giga-embeddings-0826-3b-q8_0.gguf","input":["Ваш текст"]}'
 
 
 
 
 
 
 
52
  ```
53
 
54
- For CPU-only execution, replace `-ngl 99` with `-ngl 0`. The GGUF metadata selects mean pooling; no pooling override is required.
 
55
 
56
- ## Validation summary
 
 
57
 
58
- All four files passed both `llama-embedding` and `llama-server --embeddings` functional checks on macOS Metal and stock Linux/CUDA. Q8_0 and Q4_K_M additionally passed on stock Linux CPU. A separate fresh-process restart reproduced the exact same eight test embeddings on every tested Linux lane (cosine `1.0`, maximum component delta `0`).
59
 
60
- External retrieval used complete pinned RuBQ and SciFact test splits. Values below are equal-task macro averages:
 
 
 
61
 
62
- | Variant | NDCG@10 | MRR@10 | Recall@10 | NDCG loss vs BF16 |
 
 
 
 
 
 
 
63
  |---|---:|---:|---:|---:|
64
  | BF16 | 0.778758 | 0.767285 | 0.895762 | reference |
65
- | Q8_0 | 0.778431 | 0.767302 | 0.893750 | 0.0327 points |
66
- | Q6_K | 0.779334 | 0.768964 | 0.895146 | no measured loss |
67
- | Q4_K_M | 0.778297 | 0.769349 | 0.888652 | 0.0461 points |
 
 
 
 
 
 
 
68
 
69
- ## Memory and measured throughput
 
 
 
 
70
 
71
- Apple Silicon uses unified memory, so Metal allocation and process RSS are alternative views and must not be added together.
 
 
72
 
73
- | Variant | Metal allocation | Metal peak RSS | CPU peak RSS | RTX PRO 4500 peak VRAM |
 
 
 
 
 
74
  |---|---:|---:|---:|---:|
75
- | BF16 | 7,627 MiB | 7,827 MiB | 10,048 MiB | not measured |
76
- | Q8_0 | 4,810 MiB | 4,955 MiB | 9,207 MiB | 5,128 MiB |
77
- | Q6_K | 4,083 MiB | 4,245 MiB | 7,758 MiB | 4,402 MiB |
78
- | Q4_K_M | 3,482 MiB | 3,658 MiB | 6,572 MiB | 3,802 MiB |
 
 
 
 
 
 
 
 
 
79
 
80
- For a 16×1024-token batch, measured total throughput was 864/788/661/732 tokens/s on Mac Metal for BF16/Q8/Q6/Q4, and 11,185/9,141/10,263 tokens/s on an RTX PRO 4500 for Q8/Q6/Q4. On this Mac, BF16 was faster than the quantized variants; quantization primarily saves storage and memory.
 
81
 
82
- ## Caveats
 
 
 
 
 
83
 
84
- - Strict cross-backend numerical parity passed for BF16. Q8_0 and Q6_K missed only the frozen mean-cosine threshold by about `0.00003`; Q4_K_M diverged more. Functional, repeat, permutation, and fresh-process checks still passed.
85
- - Q6_K had one reproducible long-code representation outlier in the stricter internal quantization gate and was unusually slow on the tested Mac CPU and CUDA GPU. It is retained for research, not recommended over Q8 or Q4.
86
- - Q4_K_M failed the stricter internal representation/ranking gate despite its small full-retrieval NDCG loss. Treat it as an experimental lightweight option.
87
- - Windows, Ollama, LM Studio, Jan, and other runtimes were not tested. The verified compatibility claim is limited to stock `llama.cpp` on macOS Metal/CPU and Linux CUDA/CPU as described above.
 
88
 
89
- ## Provenance
90
 
91
- - Source model: `ai-sage/Giga-Embeddings-instruct-3B-0826@ed7db5c91b900b39381b27b6e9c0a3d31137cd29`
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
92
  - Source license: MIT
93
- - Converter/runtime: `ggml-org/llama.cpp@e750b887a82719c27200b71545f63ed78ec24719`
94
- - Artifact hashes: `SHA256SUMS`
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
95
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
  license: mit
3
+ language:
4
+ - ru
5
+ - en
6
+ pipeline_tag: sentence-similarity
7
+ library_name: gguf
8
  base_model: ai-sage/Giga-Embeddings-instruct-3B-0826
9
+ base_model_relation: quantized
10
+ quantized_by: ai-babai
11
  tags:
12
+ - feature-extraction
13
+ - sentence-similarity
14
  - embeddings
15
+ - text-embeddings
16
+ - semantic-search
17
+ - rag
18
  - russian
19
+ - local-ai
20
+ - gguf
21
+ - llama-cpp
22
+ - quantized
23
+ - q8
24
+ - q6
25
+ - q4
26
+ - arxiv:2608.23806
27
+ inference: false
28
  ---
29
 
30
+ # Giga Embeddings 0826 3B — GGUF for llama.cpp
31
 
32
+ [Русская карточка](README.ru.md) ·
33
+ [Original model](https://huggingface.co/ai-sage/Giga-Embeddings-instruct-3B-0826) ·
34
+ [Original paper](https://arxiv.org/abs/2608.23806)
35
 
36
+ Local Russian and English text embeddings for semantic search, RAG, text
37
+ similarity, clustering, and classification with stock `llama.cpp`. This
38
+ repository contains one BF16 reference and three direct quantizations of the
39
+ bidirectional Giga Embeddings 3B 0826 model.
40
 
41
+ **Start with `Q8_0`.** It is the recommended quality/size default. Choose
42
+ `Q4_K_M` only when download size and memory matter most; it is explicitly an
43
+ experimental lightweight option. BF16 is the high-precision reference. Q6_K is
44
+ included for research, but is not a better default than Q8_0 or Q4_K_M.
45
 
46
+ This is an independent `ai-babai` GGUF conversion, not an official `ai-sage`
47
+ release.
48
+
49
+ ## Choose a file
 
 
50
 
51
+ | Variant | Best for | Download | Saving vs BF16 | Measured Metal allocation | RTX PRO 4500 peak VRAM |
52
+ |---|---|---:|---:|---:|---:|
53
+ | **Q8_0** | **recommended default** | **3.354 GB** | **46.8%** | **4,810 MiB** | **5,128 MiB** |
54
+ | **Q4_K_M** | **lightweight / experimental** | **1.961 GB** | **68.9%** | **3,482 MiB** | **3,802 MiB** |
55
+ | BF16 | high-precision reference | 6.308 GB | — | 7,627 MiB | not measured |
56
+ | Q6_K | research / owner review | 2.591 GB | 58.9% | 4,083 MiB | 4,402 MiB |
57
 
58
+ Apple Silicon uses unified memory. Metal allocation and process RSS are
59
+ different views of the same shared memory and must not be added together. Peak
60
+ process RSS in the same Mac runs was 7,827 / 4,955 / 4,245 / 3,658 MiB for
61
+ BF16 / Q8_0 / Q6_K / Q4_K_M.
62
 
63
+ ## Quick start
64
+
65
+ Download the recommended file:
66
+
67
+ ```bash
68
+ hf download ai-babai/giga-embeddings-0826-3b-gguf \
69
+ giga-embeddings-0826-3b-q8_0.gguf \
70
+ --local-dir .
71
+ ```
72
+
73
+ Run a recent stock `llama.cpp` server:
74
 
75
  ```bash
76
  llama-server \
 
82
  --host 127.0.0.1 --port 8080
83
  ```
84
 
85
+ Use `-ngl 0` for CPU-only execution.
86
+
87
+ For retrieval, prepend an instruction to the **query** and embed documents as
88
+ plain text:
89
 
90
  ```bash
91
  curl http://127.0.0.1:8080/v1/embeddings \
92
  -H 'Content-Type: application/json' \
93
+ -d '{
94
+ "model": "giga-embeddings-0826-3b-q8_0.gguf",
95
+ "input": [
96
+ "Instruct: Given a query, retrieve relevant passages\nQuery: Где находится Москва?",
97
+ "Москва — столица Российской Федерации.",
98
+ "Париж — столица Франции."
99
+ ]
100
+ }'
101
  ```
102
 
103
+ Compare the returned normalized 2048-dimensional embeddings with cosine
104
+ similarity (equivalent to their dot product after normalization).
105
 
106
+ For symmetric tasks such as semantic similarity or deduplication, use the same
107
+ instruction for both sides or no instruction. The GGUF metadata selects the
108
+ required mean pooling; do not replace it with CLS or last-token pooling.
109
 
110
+ ## Quality at a glance
111
 
112
+ The original authors report 74.57 Russian MTEB, 71.93 English MTEB, 76.93 code
113
+ MTEB, and 63.9 multilingual MTEB for the source BF16 model. Those numbers belong
114
+ to the original model; we did not rerun the complete MTEB suites for these GGUF
115
+ files.
116
 
117
+ Our `giga-embeddings-external-retrieval-v1` evaluation used complete pinned
118
+ RuBQ (`e19b6ffa60b3bc248e0b41f4cc37c26a55c2a67b`) and SciFact
119
+ (`d56462d0e63a25450459c4f213e49ffdb866f7f9`) test splits, instruction-prefixed
120
+ queries, `title + "\n" + text` documents, and a 512-token contract. Values
121
+ below are equal-task macro averages. This is not a complete MTEB run, a
122
+ leaderboard submission, or a cross-model comparison.
123
+
124
+ | Variant | NDCG@10 | MRR@10 | Recall@10 | NDCG change vs BF16 |
125
  |---|---:|---:|---:|---:|
126
  | BF16 | 0.778758 | 0.767285 | 0.895762 | reference |
127
+ | **Q8_0** | **0.778431** | **0.767302** | **0.893750** | **−0.0327 points** |
128
+ | Q6_K | 0.779334 | 0.768964 | 0.895146 | +0.0576 points¹ |
129
+ | Q4_K_M | 0.778297 | 0.769349 | 0.888652 | 0.0461 points |
130
+
131
+ ¹The small positive aggregate difference is not evidence that Q6_K improves the
132
+ model. Q6_K failed a separate frozen representation gate on one reproducible
133
+ long-code sample.
134
+
135
+ The stricter frozen multilingual/code holdout compared each quantized GGUF with
136
+ the BF16 GGUF:
137
 
138
+ | Variant | Min / mean vector cosine | Top-1 agreement | Mean top-10 overlap | Gate |
139
+ |---|---:|---:|---:|---|
140
+ | Q8_0 | 0.993540 / 0.999734 | 100.00% | 99.06% | PASS |
141
+ | Q6_K | 0.974783 / 0.997845 | 99.61% | 97.07% | FAIL: one long-code outlier |
142
+ | Q4_K_M | 0.950085 / 0.982052 | 96.88% | 91.37% | FAIL: representation/ranking |
143
 
144
+ These agreement numbers measure preservation versus our BF16 GGUF, not absolute
145
+ retrieval accuracy. They are why Q4_K_M is labeled experimental even though its
146
+ full RuBQ+SciFact NDCG loss was small.
147
 
148
+ ## Measured speed
149
+
150
+ Median total throughput, after two warmups and across five repetitions, context
151
+ 2048 and parallelism 1:
152
+
153
+ | Backend / workload | BF16 | Q8_0 | Q6_K | Q4_K_M |
154
  |---|---:|---:|---:|---:|
155
+ | Apple M4 Pro Metal, 1×512 | 976 tok/s | 834 tok/s | 907 tok/s | 799 tok/s |
156
+ | Apple M4 Pro Metal, 16×1024 | 864 tok/s | 788 tok/s | 661 tok/s | 732 tok/s |
157
+ | Apple M4 Pro CPU, 1×512 | 243 tok/s | 345 tok/s | 149 tok/s | 189 tok/s |
158
+ | Apple M4 Pro CPU, 16×1024 | 298 tok/s | 275 tok/s | 140 tok/s | 205 tok/s |
159
+ | RTX PRO 4500 CUDA, 1×512 | not measured | 10,031 tok/s | 8,460 tok/s | 9,393 tok/s |
160
+ | RTX PRO 4500 CUDA, 16×1024 | not measured | 11,185 tok/s | 9,141 tok/s | 10,263 tok/s |
161
+
162
+ The Mac had an Apple M4 Pro and 48 GB unified memory. On Metal, BF16 was faster
163
+ than every quantized variant in the measured matrix; quantization primarily
164
+ saves storage and memory. Q6_K was also unusually slow on the tested CPU and
165
+ CUDA paths.
166
+
167
+ ## Tested runtimes
168
 
169
+ Validation used clean stock `ggml-org/llama.cpp` commit
170
+ `e750b887a82719c27200b71545f63ed78ec24719` (Linux build 10763).
171
 
172
+ | Runtime/backend | BF16 | Q8_0 | Q6_K | Q4_K_M |
173
+ |---|---|---|---|---|
174
+ | macOS Apple Silicon / Metal, CLI + server | tested | tested | tested | tested |
175
+ | macOS Apple Silicon / CPU, server resource API | tested | tested | tested | tested |
176
+ | Clean stock Linux / CUDA, CLI + server | tested | tested | tested | tested |
177
+ | Clean stock Linux x86 CPU, CLI + server | not tested | tested | not tested | tested |
178
 
179
+ All tested Linux lanes passed `llama-embedding`, `llama-server --embeddings`,
180
+ single/batch/repeat/permutation checks, and finite unit-norm 2048-dimensional
181
+ output checks. A separate fresh server process reproduced the same eight exact
182
+ test embeddings on each tested Linux lane (cosine 1.0, maximum component delta
183
+ 0).
184
 
185
+ ## Numerical and scope limitations
186
 
187
+ - Intended use is dense retrieval/RAG, semantic similarity, clustering, and
188
+ classification in Russian and English. This is not a generative model or a
189
+ cross-encoder reranker.
190
+ - Functional portability is not bit-identical cross-backend arithmetic. BF16
191
+ passed the frozen Mac Metal → CUDA numerical parity gate. Q8_0 and Q6_K
192
+ retained 8/8 top-1 agreement but narrowly missed its mean-cosine threshold:
193
+ about 0.99987 observed versus 0.99990 required. Q4_K_M showed larger drift,
194
+ with about 0.99929–0.99937 mean cosine and 6/8 to 8/8 top-1 agreement across
195
+ tested lanes.
196
+ - The portability sample contains eight exact prompts. Within-backend repeat,
197
+ permutation, and fresh-process checks passed; the observed differences are
198
+ backend arithmetic drift, not evidence of corrupt files.
199
+ - Runtime/resource testing used context 2048. A 4096-token workload and true
200
+ cold-cache startup were not benchmarked.
201
+ - External retrieval used a 512-token contract; 10.3% of SciFact corpus
202
+ documents were truncated.
203
+ - Windows, Ollama, LM Studio, Jan, and older `llama.cpp` builds were not tested.
204
+ Compatibility claims are limited to the stock `llama.cpp` matrix above.
205
+
206
+ ## Artifact integrity and provenance
207
+
208
+ | File | Bytes | SHA-256 |
209
+ |---|---:|---|
210
+ | `giga-embeddings-0826-3b-bf16.gguf` | 6,307,610,848 | `61820afd79134c8b3691fba0442aa203916d9a0c6101438a5e0a0bee61217919` |
211
+ | `giga-embeddings-0826-3b-q8_0.gguf` | 3,354,067,168 | `429f2d04a968ffe73137fe65c2e458a08236056168b905d208b4d81ecab08c22` |
212
+ | `giga-embeddings-0826-3b-q6_k.gguf` | 2,591,068,384 | `e7956ee5c0f0e6f776cc67c643f1cd99575697b928c373b644a31fb34b3dc247` |
213
+ | `giga-embeddings-0826-3b-q4_k_m.gguf` | 1,960,915,168 | `9f81d6e5015fc981d1c4ac9d66b8179efa4af21c7b2ce6d39acf04d0cdc9f5b5` |
214
+
215
+ - Source: `ai-sage/Giga-Embeddings-instruct-3B-0826`
216
+ - Exact source revision: `ed7db5c91b900b39381b27b6e9c0a3d31137cd29`
217
  - Source license: MIT
218
+ - Source `model.safetensors` SHA-256:
219
+ `de8519bef7ee360043970b0081088c5294e2a9196ad2d0570a33c4f51bb2e134`
220
+ - Source `tokenizer.json` SHA-256:
221
+ `6fb1280bd7fd529f425929b5df823a5a44485cd7fa9679d1ec1acaac4962e8ca`
222
+ - Source `tokenizer_config.json` SHA-256:
223
+ `843eeba481465c1485a5b5f24bd24d6c12c4e502c16f093c3ab6a0f058c2c5f2`
224
+ - Converter: local bidirectional-model patch
225
+ `409723a88b12071974ed5924a2dc1c8b2b2064f7` on top of upstream `llama.cpp`
226
+ `e750b887a82719c27200b71545f63ed78ec24719`
227
+ - Clean stock Linux validation runtime:
228
+ `ggml-org/llama.cpp@e750b887a82719c27200b71545f63ed78ec24719`, build 10763
229
+ - Validation harness: `7ba4e00e76b27316b1b3709476d807958bcd1e9d`
230
+ - Q8_0, Q6_K, and Q4_K_M were quantized directly from the accepted BF16 GGUF;
231
+ no cascade or requantization was used
232
+ - Architecture preserved: bidirectional Qwen3, 398/398 tensors, mean pooling,
233
+ 2048-dimensional output
234
+
235
+ Machine-readable provenance and hashes are also available in `manifest.json`
236
+ and `SHA256SUMS`.
237
+
238
+ ## Citation
239
 
240
+ Please cite both this GGUF release and the original Giga-Embeddings work:
241
+
242
+ ```bibtex
243
+ @software{popkov2026gigaembeddingsgguf,
244
+ author = {Maksim Popkov},
245
+ title = {Giga Embeddings 0826 GGUF},
246
+ year = {2026},
247
+ url = {https://huggingface.co/ai-babai/giga-embeddings-0826-3b-gguf}
248
+ }
249
+
250
+ @misc{kolodin2026gigaembeddings,
251
+ title = {Giga-Embeddings: Mixture-of-Experts Encoders for High-Throughput Text Embeddings},
252
+ author = {Egor Kolodin and Egor Krasnoperov and Evgeniy Kosarev and Fyodor Minkin},
253
+ year = {2026},
254
+ eprint = {2608.23806},
255
+ archivePrefix = {arXiv},
256
+ url = {https://arxiv.org/abs/2608.23806}
257
+ }
258
+ ```
README.ru.md ADDED
@@ -0,0 +1,213 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Giga Embeddings 0826 3B — GGUF для llama.cpp
2
+
3
+ [English](README.md) ·
4
+ [Исходная модель](https://huggingface.co/ai-sage/Giga-Embeddings-instruct-3B-0826) ·
5
+ [Оригинальная статья](https://arxiv.org/abs/2608.23806)
6
+
7
+ Локальные текстовые эмбеддинги для семантического поиска, RAG, сравнения
8
+ текстов, кластеризации и классификации на русском и английском языках. В
9
+ репозитории лежат эталонный BF16 и три прямых кванта двунаправленной модели
10
+ Giga Embeddings 3B 0826 для stock `llama.cpp`.
11
+
12
+ **Начинайте с `Q8_0`.** Это рекомендуемый баланс качества и размера.
13
+ `Q4_K_M` стоит выбирать, только если важнее всего размер загрузки и память: это
14
+ явно экспериментальный лёгкий вариант. BF16 — высокоточный reference. Q6_K
15
+ сохранён для исследований, но не является лучшим default вместо Q8 или Q4.
16
+
17
+ Это независимая GGUF-конверсия `ai-babai`, а не официальный релиз `ai-sage`.
18
+
19
+ ## Какой файл выбрать
20
+
21
+ | Вариант | Для чего | Загрузка | Экономия к BF16 | Metal allocation | Peak VRAM RTX PRO 4500 |
22
+ |---|---|---:|---:|---:|---:|
23
+ | **Q8_0** | **рекомендуемый default** | **3,354 ГБ** | **46,8%** | **4 810 MiB** | **5 128 MiB** |
24
+ | **Q4_K_M** | **лёгкий / экспериментальный** | **1,961 ГБ** | **68,9%** | **3 482 MiB** | **3 802 MiB** |
25
+ | BF16 | высокоточный reference | 6,308 ГБ | — | 7 627 MiB | не измерялось |
26
+ | Q6_K | исследование / owner review | 2,591 ГБ | 58,9% | 4 083 MiB | 4 402 MiB |
27
+
28
+ На Apple Silicon unified memory общая: Metal allocation и RSS — разные срезы
29
+ одной памяти, их нельзя складывать. Peak RSS в тех же Mac-тестах составил
30
+ 7 827 / 4 955 / 4 245 / 3 658 MiB для BF16 / Q8_0 / Q6_K / Q4_K_M.
31
+
32
+ ## Быстрый старт
33
+
34
+ ```bash
35
+ hf download ai-babai/giga-embeddings-0826-3b-gguf \
36
+ giga-embeddings-0826-3b-q8_0.gguf \
37
+ --local-dir .
38
+ ```
39
+
40
+ ```bash
41
+ llama-server \
42
+ -m giga-embeddings-0826-3b-q8_0.gguf \
43
+ --embeddings \
44
+ -c 2048 -b 2048 -ub 2048 -np 1 \
45
+ --cache-type-k f32 --cache-type-v f32 \
46
+ --flash-attn auto -ngl 99 \
47
+ --host 127.0.0.1 --port 8080
48
+ ```
49
+
50
+ Для запуска только на CPU замените `-ngl 99` на `-ngl 0`.
51
+
52
+ В retrieval-задачах инструкция добавляется только к **запросу**, а документы
53
+ кодируются без префикса:
54
+
55
+ ```bash
56
+ curl http://127.0.0.1:8080/v1/embeddings \
57
+ -H 'Content-Type: application/json' \
58
+ -d '{
59
+ "model": "giga-embeddings-0826-3b-q8_0.gguf",
60
+ "input": [
61
+ "Instruct: Given a query, retrieve relevant passages\nQuery: Где находится Москва?",
62
+ "Москва — столица Российской Федерации.",
63
+ "Париж — столица Франции."
64
+ ]
65
+ }'
66
+ ```
67
+
68
+ Результат — L2-нормированные векторы размерности 2048. Их можно сравнивать
69
+ скалярным произведением, эквивалентным cosine similarity. Для симметричных
70
+ задач вроде STS или дедупликации используйте одну инструкцию с обеих сторон
71
+ или не используйте её. В GGUF уже записан правильный mean pooling; CLS или
72
+ last-token pooling дадут неверный результат.
73
+
74
+ ## Качество
75
+
76
+ Авторы исходной модели приводят 74,57 Russian MTEB, 71,93 English MTEB, 76,93
77
+ code MTEB и 63,9 multilingual MTEB. Это метрики оригинального BF16; полный MTEB
78
+ для этих GGUF мы не перезапускали.
79
+
80
+ Наш `giga-embeddings-external-retrieval-v1` использовал полные зафиксированные
81
+ test splits RuBQ (`e19b6ffa60b3bc248e0b41f4cc37c26a55c2a67b`) и SciFact
82
+ (`d56462d0e63a25450459c4f213e49ffdb866f7f9`), instruction-prefixed queries,
83
+ документы в формате `title + "\n" + text` и лимит 512 токенов. Ниже — равный
84
+ macro-average двух задач. Это не полный MTEB, не leaderboard submission и не
85
+ сравнение разных моделей.
86
+
87
+ | Вариант | NDCG@10 | MRR@10 | Recall@10 | Изменение NDCG к BF16 |
88
+ |---|---:|---:|---:|---:|
89
+ | BF16 | 0,778758 | 0,767285 | 0,895762 | reference |
90
+ | **Q8_0** | **0,778431** | **0,767302** | **0,893750** | **−0,0327 points** |
91
+ | Q6_K | 0,779334 | 0,768964 | 0,895146 | +0,0576 points¹ |
92
+ | Q4_K_M | 0,778297 | 0,769349 | 0,888652 | −0,0461 points |
93
+
94
+ ¹Небольшой положительный delta не доказывает улучшение Q6_K. На отдельном
95
+ frozen representation gate у него воспроизводимо провалился один длинный
96
+ пример с кодом.
97
+
98
+ Более строгий frozen multilingual/code holdout сравнивал кванты с нашим BF16:
99
+
100
+ | Вариант | Min / mean cosine | Top-1 | Mean top-10 overlap | Gate |
101
+ |---|---:|---:|---:|---|
102
+ | Q8_0 | 0,993540 / 0,999734 | 100,00% | 99,06% | PASS |
103
+ | Q6_K | 0,974783 / 0,997845 | 99,61% | 97,07% | FAIL: один long-code outlier |
104
+ | Q4_K_M | 0,950085 / 0,982052 | 96,88% | 91,37% | FAIL: representation/ranking |
105
+
106
+ Поэтому Q4 помечен экспериментальным, хотя его потеря полного
107
+ RuBQ+SciFact NDCG невелика.
108
+
109
+ ## Измеренная скорость
110
+
111
+ Median total throughput после двух прогревов и по пяти повторам, context 2048,
112
+ parallelism 1:
113
+
114
+ | Backend / нагрузка | BF16 | Q8_0 | Q6_K | Q4_K_M |
115
+ |---|---:|---:|---:|---:|
116
+ | Apple M4 Pro Metal, 1×512 | 976 tok/s | 834 tok/s | 907 tok/s | 799 tok/s |
117
+ | Apple M4 Pro Metal, 16×1024 | 864 tok/s | 788 tok/s | 661 tok/s | 732 tok/s |
118
+ | Apple M4 Pro CPU, 1×512 | 243 tok/s | 345 tok/s | 149 tok/s | 189 tok/s |
119
+ | Apple M4 Pro CPU, 16×1024 | 298 tok/s | 275 tok/s | 140 tok/s | 205 tok/s |
120
+ | RTX PRO 4500 CUDA, 1×512 | не измерялось | 10 031 tok/s | 8 460 tok/s | 9 393 tok/s |
121
+ | RTX PRO 4500 CUDA, 16×1024 | не измерялось | 11 185 tok/s | 9 141 tok/s | 10 263 tok/s |
122
+
123
+ Mac — Apple M4 Pro с 48 ГБ unified memory. На Metal BF16 оказался быстрее всех
124
+ квантов: здесь квантизация нужна прежде всего для экономии хранения и памяти.
125
+ Q6_K также оказался необычно медленным на проверенных CPU и CUDA.
126
+
127
+ ## Проверенные runtime
128
+
129
+ Валидация выполнена на чистом stock `ggml-org/llama.cpp` commit
130
+ `e750b887a82719c27200b71545f63ed78ec24719` (Linux build 10763).
131
+
132
+ | Runtime/backend | BF16 | Q8_0 | Q6_K | Q4_K_M |
133
+ |---|---|---|---|---|
134
+ | macOS Apple Silicon / Metal, CLI + server | проверено | проверено | проверено | проверено |
135
+ | macOS Apple Silicon / CPU, server resource API | проверено | проверено | проверено | проверено |
136
+ | Clean stock Linux / CUDA, CLI + server | проверено | проверено | проверено | проверено |
137
+ | Clean stock Linux x86 CPU, CLI + server | не проверено | проверено | не проверено | проверено |
138
+
139
+ Все Linux-lanes прошли `llama-embedding`, `llama-server --embeddings`, single,
140
+ batch, repeat, permutation, dimension, finiteness и unit-norm checks. Отдельный
141
+ перезапуск server process повторил те же восемь эмбеддингов на каждом
142
+ проверенном Linux backend: cosine 1,0 и максимальная покомпонентная delta 0.
143
+
144
+ ## Ограничения
145
+
146
+ - Назначение: dense retrieval/RAG, semantic similarity, clustering и
147
+ classification на русском и английском. Это не генеративная модель и не
148
+ cross-encoder reranker.
149
+ - BF16 прошёл строгий Mac Metal → CUDA numerical parity gate. Q8_0 и Q6_K
150
+ сохранили 8/8 top-1, но едва не прошли frozen mean-cosine порог: наблюдалось
151
+ около 0,99987 при требовании 0,99990. У Q4_K_M drift больше: mean cosine
152
+ около 0,99929–0,99937, top-1 от 6/8 до 8/8 между lanes.
153
+ - Portability sample содержит восемь exact prompts. Все within-backend repeat,
154
+ permutation и fresh-process проверки прошли: это backend arithmetic drift,
155
+ а не признак повреждения GGUF.
156
+ - Resource-тесты ограничены context 2048; workload 4096 и настоящий
157
+ cold-cache startup не измерялись.
158
+ - Во внешнем retrieval использовался лимит 512 токенов; 10,3% документов
159
+ SciFact были обрезаны.
160
+ - Windows, Ollama, LM Studio, Jan и старые версии `llama.cpp` не тестировались.
161
+
162
+ ## Целостность и происхождение
163
+
164
+ | Файл | Байты | SHA-256 |
165
+ |---|---:|---|
166
+ | `giga-embeddings-0826-3b-bf16.gguf` | 6 307 610 848 | `61820afd79134c8b3691fba0442aa203916d9a0c6101438a5e0a0bee61217919` |
167
+ | `giga-embeddings-0826-3b-q8_0.gguf` | 3 354 067 168 | `429f2d04a968ffe73137fe65c2e458a08236056168b905d208b4d81ecab08c22` |
168
+ | `giga-embeddings-0826-3b-q6_k.gguf` | 2 591 068 384 | `e7956ee5c0f0e6f776cc67c643f1cd99575697b928c373b644a31fb34b3dc247` |
169
+ | `giga-embeddings-0826-3b-q4_k_m.gguf` | 1 960 915 168 | `9f81d6e5015fc981d1c4ac9d66b8179efa4af21c7b2ce6d39acf04d0cdc9f5b5` |
170
+
171
+ - Исходник: `ai-sage/Giga-Embeddings-instruct-3B-0826`
172
+ - Exact revision: `ed7db5c91b900b39381b27b6e9c0a3d31137cd29`
173
+ - Лицензия исходника: MIT
174
+ - Source `model.safetensors` SHA-256:
175
+ `de8519bef7ee360043970b0081088c5294e2a9196ad2d0570a33c4f51bb2e134`
176
+ - Source `tokenizer.json` SHA-256:
177
+ `6fb1280bd7fd529f425929b5df823a5a44485cd7fa9679d1ec1acaac4962e8ca`
178
+ - Source `tokenizer_config.json` SHA-256:
179
+ `843eeba481465c1485a5b5f24bd24d6c12c4e502c16f093c3ab6a0f058c2c5f2`
180
+ - Converter: локальный bidirectional-model patch
181
+ `409723a88b12071974ed5924a2dc1c8b2b2064f7` поверх upstream `llama.cpp`
182
+ `e750b887a82719c27200b71545f63ed78ec24719`
183
+ - Clean stock Linux validation runtime:
184
+ `ggml-org/llama.cpp@e750b887a82719c27200b71545f63ed78ec24719`, build 10763
185
+ - Validation harness: `7ba4e00e76b27316b1b3709476d807958bcd1e9d`
186
+ - Q8_0, Q6_K и Q4_K_M квантованы напрямую из принятого BF16 GGUF, без cascade
187
+ или requantization
188
+ - Сохранены bidirectional Qwen3, 398/398 tensors, mean pooling и dimension 2048
189
+
190
+ Машиночитаемые provenance и хеши лежат в `manifest.json` и `SHA256SUMS`.
191
+
192
+ ## Цитирование
193
+
194
+ Пожалуйста, указывайте и этот GGUF-релиз, и оригинальную работу
195
+ Giga-Embeddings:
196
+
197
+ ```bibtex
198
+ @software{popkov2026gigaembeddingsgguf,
199
+ author = {Maksim Popkov},
200
+ title = {Giga Embeddings 0826 GGUF},
201
+ year = {2026},
202
+ url = {https://huggingface.co/ai-babai/giga-embeddings-0826-3b-gguf}
203
+ }
204
+
205
+ @misc{kolodin2026gigaembeddings,
206
+ title = {Giga-Embeddings: Mixture-of-Experts Encoders for High-Throughput Text Embeddings},
207
+ author = {Egor Kolodin and Egor Krasnoperov and Evgeniy Kosarev and Fyodor Minkin},
208
+ year = {2026},
209
+ eprint = {2608.23806},
210
+ archivePrefix = {arXiv},
211
+ url = {https://arxiv.org/abs/2608.23806}
212
+ }
213
+ ```
manifest.json ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schema_version": 1,
3
+ "release": "giga-embeddings-0826-3b-gguf",
4
+ "publisher": "ai-babai",
5
+ "author": "Maksim Popkov",
6
+ "license": "MIT",
7
+ "source": {
8
+ "repository": "ai-sage/Giga-Embeddings-instruct-3B-0826",
9
+ "revision": "ed7db5c91b900b39381b27b6e9c0a3d31137cd29"
10
+ },
11
+ "converter": {
12
+ "repository": "ggml-org/llama.cpp",
13
+ "upstream_revision": "e750b887a82719c27200b71545f63ed78ec24719",
14
+ "local_patch_revision": "409723a88b12071974ed5924a2dc1c8b2b2064f7",
15
+ "quantization_source": "accepted BF16 GGUF",
16
+ "requantized": false
17
+ },
18
+ "validation_runtime": {
19
+ "repository": "ggml-org/llama.cpp",
20
+ "revision": "e750b887a82719c27200b71545f63ed78ec24719",
21
+ "linux_build": 10763
22
+ },
23
+ "validation_harness_revision": "7ba4e00e76b27316b1b3709476d807958bcd1e9d",
24
+ "source_files": {
25
+ "model.safetensors_sha256": "de8519bef7ee360043970b0081088c5294e2a9196ad2d0570a33c4f51bb2e134",
26
+ "tokenizer.json_sha256": "6fb1280bd7fd529f425929b5df823a5a44485cd7fa9679d1ec1acaac4962e8ca",
27
+ "tokenizer_config.json_sha256": "843eeba481465c1485a5b5f24bd24d6c12c4e502c16f093c3ab6a0f058c2c5f2"
28
+ },
29
+ "model": {
30
+ "architecture": "Qwen3 bidirectional embedding encoder",
31
+ "tensor_count": 398,
32
+ "pooling": "mean",
33
+ "embedding_dimension": 2048
34
+ },
35
+ "artifacts": [
36
+ {
37
+ "file": "giga-embeddings-0826-3b-bf16.gguf",
38
+ "quantization": "BF16",
39
+ "role": "high-precision reference",
40
+ "bytes": 6307610848,
41
+ "sha256": "61820afd79134c8b3691fba0442aa203916d9a0c6101438a5e0a0bee61217919"
42
+ },
43
+ {
44
+ "file": "giga-embeddings-0826-3b-q8_0.gguf",
45
+ "quantization": "Q8_0",
46
+ "role": "recommended default",
47
+ "bytes": 3354067168,
48
+ "sha256": "429f2d04a968ffe73137fe65c2e458a08236056168b905d208b4d81ecab08c22"
49
+ },
50
+ {
51
+ "file": "giga-embeddings-0826-3b-q6_k.gguf",
52
+ "quantization": "Q6_K",
53
+ "role": "research / owner review",
54
+ "bytes": 2591068384,
55
+ "sha256": "e7956ee5c0f0e6f776cc67c643f1cd99575697b928c373b644a31fb34b3dc247"
56
+ },
57
+ {
58
+ "file": "giga-embeddings-0826-3b-q4_k_m.gguf",
59
+ "quantization": "Q4_K_M",
60
+ "role": "lightweight / experimental",
61
+ "bytes": 1960915168,
62
+ "sha256": "9f81d6e5015fc981d1c4ac9d66b8179efa4af21c7b2ce6d39acf04d0cdc9f5b5"
63
+ }
64
+ ],
65
+ "tested_runtimes": {
66
+ "macos_apple_silicon_metal": ["BF16", "Q8_0", "Q6_K", "Q4_K_M"],
67
+ "macos_apple_silicon_cpu": ["BF16", "Q8_0", "Q6_K", "Q4_K_M"],
68
+ "linux_cuda": ["BF16", "Q8_0", "Q6_K", "Q4_K_M"],
69
+ "linux_x86_cpu": ["Q8_0", "Q4_K_M"]
70
+ }
71
+ }