69 lines
3.5 KiB
Markdown
69 lines
3.5 KiB
Markdown
---
|
||
language:
|
||
- ru
|
||
license: apache-2.0
|
||
base_model: t-tech/T-lite-it-2.1
|
||
datasets:
|
||
- AGmind/agmind-rag-splitter-ru-data
|
||
pipeline_tag: text-generation
|
||
tags:
|
||
- rag
|
||
- chunking
|
||
- text-segmentation
|
||
- russian
|
||
- lora
|
||
---
|
||
|
||
# RU Context-Aware Document Splitter (T-lite-it-2.1 LoRA)
|
||
|
||
Дообучение **`t-tech/T-lite-it-2.1`** (Qwen3-8B), которое режет русские документы на самодостаточные смысловые чанки для RAG, держа таблицы/код целыми. На вход — текст, заранее разбитый на нумерованные юниты; на выход — индексы границ + topic в JSON.
|
||
|
||
## Использование
|
||
Это **completion**-модель, обученная на raw-Alpaca промпте (без чат-шаблона). Сначала разбей документ на нумерованные юниты; чанки собери на хосте по возвращённым индексам.
|
||
|
||
**Промпт:**
|
||
```
|
||
### Instruction:
|
||
Раздели документ на смысловые части для системы поиска (RAG). Каждая часть читается независимо, не разрывая предложений, таблиц и кода. Верни ТОЛЬКО номера единиц, после которых проходит граница, в формате JSON.
|
||
|
||
### Input:
|
||
[1] Первое предложение. [2] Второе. [3] | таблица |...|
|
||
### Response:
|
||
```
|
||
**Вывод:** `{"splits": [2], "topic": "..."}` — `splits` = индексы юнитов, после которых граница (1-индексные). Режь оригинал по этим точкам.
|
||
|
||
Полный пре-/пост-процессинг + рецепт сервинга на llama.cpp — в [GitHub-репозитории](https://github.com/botAGI/AGmind-ML/tree/main/agmind-rag-splitter-ru).
|
||
|
||
## Результаты (согласие с метками учителя)
|
||
|
||
Исходный snapshot **N=300** из holdout-1500:
|
||
|
||
| Валидный JSON | F1@0 | F1@±1 | exact-set |
|
||
|---|---|---|---|
|
||
| 100% | 0.656 | 0.821 | 29% |
|
||
|
||
Перепроверка на полном **holdout-1500** (2026-06-26, raw stdout — в `eval/` GitHub-репозитория):
|
||
|
||
| Прогон | JSON | F1@0 | F1@±1 | exact |
|
||
|---|---|---|---|---|
|
||
| HF bf16 | 99.9% | 0.665 | 0.825 | 30.0% |
|
||
| GGUF Q5_K_M, AMD Vulkan | 100% | 0.661 | 0.826 | 29.9% |
|
||
|
||
На полном holdout GGUF Q5_K_M практически равен HF-модели; работает на AMD Vulkan через llama.cpp.
|
||
|
||
## Данные
|
||
Датасет: [`AGmind/agmind-rag-splitter-ru-data`](https://huggingface.co/datasets/AGmind/agmind-rag-splitter-ru-data) (~17k train + 12k синтетика, дистилляция от DeepSeek-V4-Flash).
|
||
|
||
## Обучение
|
||
bf16 LoRA (r32, rsLoRA, all-linear, response-only) на RTX 5090; ~17k примеров дистилляции (DeepSeek-V4-Flash). См. `docs/methodology.md` в репо.
|
||
|
||
## Файлы
|
||
- LoRA-адаптер / merged FP16-веса
|
||
- `*-Q5_K_M.gguf` (llama.cpp, Vulkan/CPU)
|
||
|
||
## Ограничения
|
||
Метрики — согласие с учителем, не human-ground-truth. Лёгкая пере-сегментация. Для очень больших таблиц нужна отдельная табличная стратегия, а не эта боундари-модель.
|
||
|
||
## Лицензия
|
||
Apache-2.0 (наследует лицензию базы T-lite-it-2.1).
|