Files
qmd-query-expansion-ru/README.md
ModelHub XC 0d8aa975bc 初始化项目,由ModelHub XC社区提供模型
Model: AGmind/qmd-query-expansion-ru
Source: Original Platform
2026-07-21 02:14:09 +08:00

83 lines
5.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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).