初始化项目,由ModelHub XC社区提供模型

Model: AGmind/qmd-query-expansion-ru
Source: Original Platform
This commit is contained in:
ModelHub XC
2026-07-21 02:14:09 +08:00
commit 0d8aa975bc
9 changed files with 538 additions and 0 deletions

82
README.md Normal file
View File

@@ -0,0 +1,82 @@
---
language:
- ru
license: apache-2.0
base_model: Qwen/Qwen3-1.7B
pipeline_tag: text-generation
tags:
- search
- query-expansion
- rag
- russian
- qmd
- gguf
---
# qmd-query-expansion-ru
**Русская модель расширения поисковых запросов для [qmd](https://github.com/tobi/qmd)** — локального поискового движка Тоби Лютке. Drop-in замена стоковой `tobil/qmd-query-expansion-1.7B`, которая на русских запросах не работает.
*EN TL;DR: Russian query-expansion model for qmd. The stock model is English-only and fails on Russian queries ([#774](https://github.com/tobi/qmd/issues/774), [#454](https://github.com/tobi/qmd/issues/454)); this is a drop-in fix trained with the upstream `finetune/` recipe. Benchmark below.*
## Зачем
Стоковая модель qmd обучена на 100% английских данных. Русский запрос она «переводит» в английский шаблон-галлюцинацию (*«…is an important concept… in software development»* — про борщ), а формат вывода разваливается ([issue #774](https://github.com/tobi/qmd/issues/774)). Вдобавок BM25-поиск qmd использует Porter-стеммер, который **не понимает русскую морфологию** — поэтому лексические расширения обязаны сами покрывать словоформы и синонимы («получить получение вернуть возврат»). Эта модель обучена делать и то, и другое.
## Подключение (одна строка)
В `~/.config/qmd/index.yml` (или проектном `.qmd/index.yml`):
```yaml
models:
generate: "hf:AGmind/qmd-query-expansion-ru/qmd-query-expansion-ru-q4_k_m.gguf"
```
Переиндексация не нужна. Контракт тот же, что у стока: `/no_think Expand this search query: {запрос}` → построчный вывод `hyde:` / `lex:` / `vec:`.
## Бенчмарк: 450 отложенных русских запросов, наша vs сток
Механические метрики (без LLM-судей), сэмплинг как в рантайме qmd (temp 0.7, top-k 20, top-p 0.8). Скрипт: `bench_qmd.py` в [репозитории](https://github.com/botAGI/AGmind-ML/tree/main/qmd-query-expansion-ru).
| метрика | **наша** | сток `tobil/…-1.7B` |
|---|---|---|
| валидный контракт qmd (ровно 1 `hyde:` + 3 `lex:` + 2 `vec:`, без мусора) | **99.8%** | 0.0% |
| вывод на русском (≥70% кириллицы) | **99.3%** | 26.2% |
| английский шаблон-боилерплейт («…is an important concept…») | **0.0%** | 22.9% |
| `hyde` в размерном контракте (50250 симв.) | **96.0%** | 19.8% |
| дословное эхо запроса вместо расширения | 0.4% | 1.3% |
Сток не выдал валидный контракт **ни на одном из 450** русских запросов и в ~23% ответов галлюцинирует английский шаблон. Наша держит контракт на 99.8%, оставаясь русской.
## Пример
Запрос: **«как оформить налоговый вычет за лечение»**
```
hyde: Для оформления налогового вычета за лечение необходимо подтвердить расходы на медицинские услуги...
lex: налоговый вычет лечение оформление декларация
lex: расходы медицинские услуги справки врачей
lex: вычет налога подача декларация
vec: Как получить налоговый вычет за медицинские расходы
vec: Подача заявки на налоговый вычет за лечение и справки
```
Сток на тот же запрос: `hyde: Как оформить налоговый вычет за лечение is an important concept that relates to... It provides functionality for various use cases in software development.`
## Обучение
- База: Qwen/Qwen3-1.7B (та же, что у стока), LoRA r16/α32 all-proj, 5 эпох — точный SFT-рецепт апстрима (`tobi/qmd/finetune`).
- Данные: 5 075 русских запросов (MIRACL-ru apache-2.0, Mr.TyDi-ru apache-2.0, Яндекс.Кью CC0) → дистилляция учителем (DeepSeek, n=2 сэмпла + rule-based reward-фильтр ≥70, средний скор 94.8).
- Формат идентичен трейн-схеме апстрима (`{"query", "output": [["hyde",…],["lex",…],["vec",…]]}`, hyde первой).
## Ограничения
- Модель 1.7B: `hyde:`-пассажи могут фантазировать детали (номера деклараций, ингредиенты). Для расширения поиска это терпимо — термины остаются в теме, — но не считайте hyde фактами.
- Обучена для русского; для английских запросов используйте сток.
## Файлы
- `qmd-query-expansion-ru-q4_k_m.gguf` — для qmd / llama.cpp (рекомендуется)
- safetensors — merged fp16 для transformers
Код, генератор датасета, трейн- и бенч-скрипты: [github.com/botAGI/AGmind-ML → qmd-query-expansion-ru](https://github.com/botAGI/AGmind-ML/tree/main/qmd-query-expansion-ru). Родственная модель: [AGmind/agmind-rag-splitter-ru](https://huggingface.co/AGmind/agmind-rag-splitter-ru).