Улучшить ранжирование поиска по relevance set #13
@@ -3,6 +3,8 @@
|
|||||||
## Не выпущено
|
## Не выпущено
|
||||||
|
|
||||||
- Добавлена инструкция по подготовке и независимой проверке relevance set.
|
- Добавлена инструкция по подготовке и независимой проверке relevance set.
|
||||||
|
- Улучшено ранжирование relevance-оценки: запрос теперь сопоставляет название и
|
||||||
|
текст документа как единое поле.
|
||||||
|
|
||||||
## 0.5.0 — 2026-08-15
|
## 0.5.0 — 2026-08-15
|
||||||
|
|
||||||
|
|||||||
@@ -10,15 +10,15 @@ Telegram-бот — только часть рабочего окружения
|
|||||||
## Текущее состояние
|
## Текущее состояние
|
||||||
|
|
||||||
Сейчас реализованы Telegram-бот-секретарь версии `0.2.2` и backend версии
|
Сейчас реализованы 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`; обновление после слияния |
|
| Telegram-бот | `0.2.2` | на Synology работает `0.2.1`; обновление после слияния |
|
||||||
| Backend | `0.5.0` | добавлена воспроизводимая оценка качества поиска |
|
| Backend | `0.5.1` | добавлена воспроизводимая оценка качества поиска |
|
||||||
| Frontend | — | ещё не создан |
|
| Frontend | — | ещё не создан |
|
||||||
| Сбор и обработка правовых данных | `0.5.0` | добавлены relevance set и baseline-метрики |
|
| Сбор и обработка правовых данных | `0.5.1` | добавлены relevance set и baseline-метрики |
|
||||||
| RAG и база знаний | — | ещё не созданы |
|
| 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 — не создан
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Backend Акылдаш
|
# Backend Акылдаш
|
||||||
|
|
||||||
Версия: `0.5.0`
|
Версия: `0.5.1`
|
||||||
|
|
||||||
Первая backend-область проекта — загрузка правовых документов из официального
|
Первая backend-область проекта — загрузка правовых документов из официального
|
||||||
Open Data API ЦБД Минюста Кыргызской Республики. Код расположен в
|
Open Data API ЦБД Минюста Кыргызской Республики. Код расположен в
|
||||||
@@ -191,4 +191,4 @@ PYTHONPATH=backend python3 -m search.evaluate_relevance \
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
Акылдаш · Backend v0.5.0 · Frontend — не создан
|
Акылдаш · Backend v0.5.1 · Frontend — не создан
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ from datetime import datetime, timezone
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Callable, Iterable
|
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/"
|
API_BASE_URL = "https://cbd.minjust.gov.kg/api/v1/OpenData/"
|
||||||
LANGUAGES = {"Rus": "ru", "Kyr": "ky"}
|
LANGUAGES = {"Rus": "ru", "Kyr": "ky"}
|
||||||
IMAGE_LANGUAGES = {"Russian": "ru", "Kyrgyz": "ky"}
|
IMAGE_LANGUAGES = {"Russian": "ru", "Kyrgyz": "ky"}
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ from pathlib import Path
|
|||||||
from typing import Callable
|
from typing import Callable
|
||||||
from urllib.parse import urlsplit
|
from urllib.parse import urlsplit
|
||||||
|
|
||||||
APP_VERSION = "0.5.0"
|
APP_VERSION = "0.5.1"
|
||||||
SCHEMA_VERSION = "1"
|
SCHEMA_VERSION = "1"
|
||||||
NORMALIZER_VERSION = "1.0.0"
|
NORMALIZER_VERSION = "1.0.0"
|
||||||
LANGUAGES = ("ru", "ky")
|
LANGUAGES = ("ru", "ky")
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ def search(base_url: str, index: str, item: dict, top_k: int) -> list[str]:
|
|||||||
"multi_match": {
|
"multi_match": {
|
||||||
"query": item["query"],
|
"query": item["query"],
|
||||||
"fields": [f"document_name_{language}", f"text_{language}"],
|
"fields": [f"document_name_{language}", f"text_{language}"],
|
||||||
|
"type": "cross_fields",
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ import urllib.request
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Iterator
|
from typing import Iterator
|
||||||
|
|
||||||
APP_VERSION = "0.5.0"
|
APP_VERSION = "0.5.1"
|
||||||
LANGUAGES = {"ru", "ky"}
|
LANGUAGES = {"ru", "ky"}
|
||||||
DEFAULT_MAPPING = Path(__file__).with_name("minjust-fragments-index.json")
|
DEFAULT_MAPPING = Path(__file__).with_name("minjust-fragments-index.json")
|
||||||
|
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ class SearchRelevanceTest(unittest.TestCase):
|
|||||||
body = json.loads(request.call_args_list[0].args[2])
|
body = json.loads(request.call_args_list[0].args[2])
|
||||||
self.assertFalse(body["track_total_hits"])
|
self.assertFalse(body["track_total_hits"])
|
||||||
self.assertEqual(body["collapse"], {"field": "document_code"})
|
self.assertEqual(body["collapse"], {"field": "document_code"})
|
||||||
|
self.assertEqual(body["query"]["bool"]["must"]["multi_match"]["type"], "cross_fields")
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|||||||
@@ -33,4 +33,4 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
Акылдаш · Telegram-бот v0.2.2 · Backend v0.5.0 · Frontend — не создан
|
Акылдаш · Telegram-бот v0.2.2 · Backend v0.5.1 · Frontend — не создан
|
||||||
|
|||||||
@@ -78,4 +78,4 @@ Telegram позволяет запретить пользователям отп
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
Акылдаш · Telegram-бот v0.2.2 · Backend v0.5.0 · Frontend — не создан
|
Акылдаш · Telegram-бот v0.2.2 · Backend v0.5.1 · Frontend — не создан
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
- Telegram-бот: `0.2.2`
|
- Telegram-бот: `0.2.2`
|
||||||
- Telegram-бот на Synology: `0.2.1`
|
- Telegram-бот на Synology: `0.2.1`
|
||||||
- Backend: `0.5.0`
|
- Backend: `0.5.1`
|
||||||
- Frontend: не создан
|
- 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
|
### 2026-08-14
|
||||||
|
|
||||||
- Добавлены шаблон relevance set v1 и воспроизводимый расчёт Recall@K/MRR@K.
|
- Добавлены шаблон 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 — не создан
|
||||||
|
|||||||
@@ -398,4 +398,4 @@ Git сохраняет актуальную версию
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
Акылдаш · Telegram-бот v0.2.2 · Backend v0.5.0 · Frontend — не создан
|
Акылдаш · Telegram-бот v0.2.2 · Backend v0.5.1 · Frontend — не создан
|
||||||
|
|||||||
@@ -258,4 +258,4 @@ runtime-зависимостями frontend. Регистрация в стор
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
Акылдаш · Telegram-бот v0.2.2 · Backend v0.5.0 · Frontend — не создан
|
Акылдаш · Telegram-бот v0.2.2 · Backend v0.5.1 · Frontend — не создан
|
||||||
|
|||||||
@@ -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 — не создан
|
||||||
|
|||||||
@@ -44,4 +44,4 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
Акылдаш · Telegram-бот v0.2.2 · Backend v0.5.0 · Frontend — не создан
|
Акылдаш · Telegram-бот v0.2.2 · Backend v0.5.1 · Frontend — не создан
|
||||||
|
|||||||
@@ -180,4 +180,4 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
Акылдаш · Telegram-бот v0.2.2 · Backend v0.5.0 · Frontend — не создан
|
Акылдаш · Telegram-бот v0.2.2 · Backend v0.5.1 · Frontend — не создан
|
||||||
|
|||||||
@@ -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 — не создан
|
||||||
|
|||||||
Reference in New Issue
Block a user