language, license, tags, pipeline_tag, library_name, base_model
language license tags pipeline_tag library_name base_model
ru
apache-2.0
sentence-transformers
feature-extraction
sentence-similarity
legal
russian
bge-m3
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
Model synced from source: Roflmax/bge-m3-russian-legal
Readme 31 KiB
Languages
Markdown 100%