Model: Roflmax/bge-m3-russian-legal Source: Original Platform
language, license, tags, pipeline_tag, library_name, base_model
| language | license | tags | pipeline_tag | library_name | base_model | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
apache-2.0 |
|
sentence-similarity | sentence-transformers | 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 примеров
Использование
Установка
pip install sentence-transformers
Получение эмбеддингов
ВАЖНО: Модель обучена с префиксами BGE-M3. Используйте их при инференсе!
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
Description
Languages
Markdown
100%