Улучшить ранжирование поиска по relevance set #13

Merged
admin merged 3 commits from feature/search-relevance-ranking into main 2026-08-18 08:35:11 +00:00
17 changed files with 31 additions and 19 deletions

View File

@@ -3,6 +3,8 @@
## Не выпущено
- Добавлена инструкция по подготовке и независимой проверке relevance set.
- Улучшено ранжирование relevance-оценки: запрос теперь сопоставляет название и
текст документа как единое поле.
## 0.5.0 — 2026-08-15

View File

@@ -10,15 +10,15 @@ Telegram-бот — только часть рабочего окружения
## Текущее состояние
Сейчас реализованы Telegram-бот-секретарь версии `0.2.2` и backend версии
`0.5.0`: подготовка поискового индекса и оценка Recall@K/MRR@K на вручную
`0.5.1`: подготовка поискового индекса и оценка Recall@K/MRR@K на вручную
размеченном наборе запросов.
| Компонент | Версия | Состояние |
|---|---:|---|
| Telegram-бот | `0.2.2` | на Synology работает `0.2.1`; обновление после слияния |
| Backend | `0.5.0` | добавлена воспроизводимая оценка качества поиска |
| Backend | `0.5.1` | добавлена воспроизводимая оценка качества поиска |
| Frontend | — | ещё не создан |
| Сбор и обработка правовых данных | `0.5.0` | добавлены relevance set и baseline-метрики |
| Сбор и обработка правовых данных | `0.5.1` | добавлены relevance set и baseline-метрики |
| RAG и база знаний | — | ещё не созданы |
## Структура репозитория
@@ -59,4 +59,4 @@ python3 -m unittest discover -s tools/telegram-bot -v
---
Акылдаш · Telegram-бот v0.2.2 · Backend v0.5.0 · Frontend — не создан
Акылдаш · Telegram-бот v0.2.2 · Backend v0.5.1 · Frontend — не создан

View File

@@ -1,6 +1,6 @@
# Backend Акылдаш
Версия: `0.5.0`
Версия: `0.5.1`
Первая backend-область проекта — загрузка правовых документов из официального
Open Data API ЦБД Минюста Кыргызской Республики. Код расположен в
@@ -191,4 +191,4 @@ PYTHONPATH=backend python3 -m search.evaluate_relevance \
---
Акылдаш · Backend v0.5.0 · Frontend — не создан
Акылдаш · Backend v0.5.1 · Frontend — не создан

View File

@@ -21,7 +21,7 @@ from datetime import datetime, timezone
from pathlib import Path
from typing import Callable, Iterable
APP_VERSION = "0.5.0"
APP_VERSION = "0.5.1"
API_BASE_URL = "https://cbd.minjust.gov.kg/api/v1/OpenData/"
LANGUAGES = {"Rus": "ru", "Kyr": "ky"}
IMAGE_LANGUAGES = {"Russian": "ru", "Kyrgyz": "ky"}

View File

@@ -23,7 +23,7 @@ from pathlib import Path
from typing import Callable
from urllib.parse import urlsplit
APP_VERSION = "0.5.0"
APP_VERSION = "0.5.1"
SCHEMA_VERSION = "1"
NORMALIZER_VERSION = "1.0.0"
LANGUAGES = ("ru", "ky")

View File

@@ -55,6 +55,7 @@ def search(base_url: str, index: str, item: dict, top_k: int) -> list[str]:
"multi_match": {
"query": item["query"],
"fields": [f"document_name_{language}", f"text_{language}"],
"type": "cross_fields",
}
},
}

View File

@@ -15,7 +15,7 @@ import urllib.request
from pathlib import Path
from typing import Iterator
APP_VERSION = "0.5.0"
APP_VERSION = "0.5.1"
LANGUAGES = {"ru", "ky"}
DEFAULT_MAPPING = Path(__file__).with_name("minjust-fragments-index.json")

View File

@@ -40,6 +40,7 @@ class SearchRelevanceTest(unittest.TestCase):
body = json.loads(request.call_args_list[0].args[2])
self.assertFalse(body["track_total_hits"])
self.assertEqual(body["collapse"], {"field": "document_code"})
self.assertEqual(body["query"]["bool"]["must"]["multi_match"]["type"], "cross_fields")
if __name__ == "__main__":

View File

@@ -33,4 +33,4 @@
---
Акылдаш · Telegram-бот v0.2.2 · Backend v0.5.0 · Frontend — не создан
Акылдаш · Telegram-бот v0.2.2 · Backend v0.5.1 · Frontend — не создан

View File

@@ -78,4 +78,4 @@ Telegram позволяет запретить пользователям отп
---
Акылдаш · Telegram-бот v0.2.2 · Backend v0.5.0 · Frontend — не создан
Акылдаш · Telegram-бот v0.2.2 · Backend v0.5.1 · Frontend — не создан

View File

@@ -5,7 +5,7 @@
- Telegram-бот: `0.2.2`
- Telegram-бот на Synology: `0.2.1`
- Backend: `0.5.0`
- Backend: `0.5.1`
- Frontend: не создан
## Краткий итог
@@ -135,6 +135,14 @@
## История изменений статуса
### 2026-08-18
- Оценщик поиска использует `cross_fields` для совместного сопоставления
названия и текста документа.
- На размеченном наборе из 50 запросов Recall@10 вырос с `0.23` до `0.30`,
MRR@10с `0.1854` до `0.2272`.
- Версия backend обновлена до `0.5.1`.
### 2026-08-14
- Добавлены шаблон relevance set v1 и воспроизводимый расчёт Recall@K/MRR@K.
@@ -226,4 +234,4 @@
---
Акылдаш · Telegram-бот v0.2.2 · Backend v0.5.0 · Frontend — не создан
Акылдаш · Telegram-бот v0.2.2 · Backend v0.5.1 · Frontend — не создан

View File

@@ -398,4 +398,4 @@ Git сохраняет актуальную версию
---
Акылдаш · Telegram-бот v0.2.2 · Backend v0.5.0 · Frontend — не создан
Акылдаш · Telegram-бот v0.2.2 · Backend v0.5.1 · Frontend — не создан

View File

@@ -258,4 +258,4 @@ runtime-зависимостями frontend. Регистрация в стор
---
Акылдаш · Telegram-бот v0.2.2 · Backend v0.5.0 · Frontend — не создан
Акылдаш · Telegram-бот v0.2.2 · Backend v0.5.1 · Frontend — не создан

View File

@@ -214,4 +214,4 @@ python3 backend/normalization/minjust_cbd.py
---
Акылдаш · Telegram-бот v0.2.2 · Backend v0.5.0 · Frontend — не создан
Акылдаш · Telegram-бот v0.2.2 · Backend v0.5.1 · Frontend — не создан

View File

@@ -44,4 +44,4 @@
---
Акылдаш · Telegram-бот v0.2.2 · Backend v0.5.0 · Frontend — не создан
Акылдаш · Telegram-бот v0.2.2 · Backend v0.5.1 · Frontend — не создан

View File

@@ -180,4 +180,4 @@
---
Акылдаш · Telegram-бот v0.2.2 · Backend v0.5.0 · Frontend — не создан
Акылдаш · Telegram-бот v0.2.2 · Backend v0.5.1 · Frontend — не создан

View File

@@ -48,4 +48,4 @@ python3 -m unittest -v
---
Акылдаш · Telegram-бот v0.2.2 · Backend v0.5.0 · Frontend — не создан
Акылдаш · Telegram-бот v0.2.2 · Backend v0.5.1 · Frontend — не создан