Model: AGmind/qmd-query-expansion-ru Source: Original Platform
language, license, base_model, pipeline_tag, tags
| language | license | base_model | pipeline_tag | tags | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
|
apache-2.0 | Qwen/Qwen3-1.7B | text-generation |
|
qmd-query-expansion-ru
Русская модель расширения поисковых запросов для 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, #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). Вдобавок BM25-поиск qmd использует Porter-стеммер, который не понимает русскую морфологию — поэтому лексические расширения обязаны сами покрывать словоформы и синонимы («получить получение вернуть возврат»). Эта модель обучена делать и то, и другое.
Подключение (одна строка)
В ~/.config/qmd/index.yml (или проектном .qmd/index.yml):
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 в репозитории.
| метрика | наша | сток 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 в размерном контракте (50–250 симв.) |
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. Родственная модель: AGmind/agmind-rag-splitter-ru.