Files
bge-m3-russian-legal/README.md

108 lines
3.5 KiB
Markdown
Raw Normal View History

---
language:
- ru
license: apache-2.0
tags:
- sentence-transformers
- feature-extraction
- sentence-similarity
- legal
- russian
- bge-m3
pipeline_tag: sentence-similarity
library_name: sentence-transformers
base_model: BAAI/bge-m3
---
# BGE-M3 Russian Legal Documents
Это модель для получения эмбеддингов русских юридических документов, дообученная на датасете из трех категорий: судебные решения, федеральные законы и региональные законы.
## Модель
- **Базовая модель**: BAAI/bge-m3
- **Размерность эмбеддингов**: 1024
- **Max sequence length**: 512 токенов
- **Язык**: Русский
- **Задача**: Semantic search на юридических документах
## Метрики качества
### Результаты на тестовой выборке
| Метрика | Значение |
|---------|----------|
| **Recall@1** | 76.9% |
| **Recall@5** | 92.9% |
| **Recall@10** | 95.5% |
### Результаты по типам документов (validation set)
| Датасет | Recall@1 | Recall@5 | Recall@10 |
|---------|----------|----------|-----------|
| **court_law** (судебные решения) | 67.5% | 87.9% | 92.6% |
| **other_law** (федеральные законы) | 85.1% | 96.7% | 97.4% |
| **reg_law** (региональные законы) | 75.6% | 96.9% | 98.8% |
## Датасет для обучения
- **Размер**: 26,734 уникальных пар (query, document)
- **Дедупликация**: Да (70% удалено по chunk_text)
- **Категории**:
- court_law: 14,046 примеров
- other_law: 3,823 примеров
- reg_law: 8,865 примеров
## Использование
### Установка
```bash
pip install sentence-transformers
```
### Получение эмбеддингов
**ВАЖНО**: Модель обучена с префиксами BGE-M3. Используйте их при инференсе!
```python
from sentence_transformers import SentenceTransformer
# Загрузка модели
model = SentenceTransformer("Roflmax/bge-m3-russian-legal")
# Для запросов используйте префикс
query = "Represent this sentence for searching relevant passages: Какое наказание за управление в состоянии опьянения?"
query_embedding = model.encode(query)
# Для документов префикс пустой (просто текст)
documents = [
"Статья 264 УК РФ. Нарушение правил дорожного движения...",
"КоАП РФ статья 12.8. Управление транспортным средством..."
]
doc_embeddings = model.encode(documents)
# Поиск похожих документов
from sklearn.metrics.pairwise import cosine_similarity
similarities = cosine_similarity([query_embedding], doc_embeddings)[0]
# Топ-5 результатов
top_indices = similarities.argsort()[-5:][::-1]
for idx in top_indices:
print(f"Document {idx}: similarity={similarities[idx]:.4f}")
```
## Параметры обучения
- **Loss function**: MultipleNegativesRankingLoss (scale=20.0)
- **Epochs**: 3
- **Batch size**: 64
- **Learning rate**: 2e-5
- **Warmup ratio**: 0.1
- **Precision**: bfloat16
- **Best model selection**: eval_avg_recall@5
## Лицензия
Apache 2.0