CoolFace
Modelpublic

Roflmax/bge-m3-russian-legal

sourceHugging Faceapache-2.0updated 11mo agoView on Hugging Face
2likes1.4kdownloads
Model Card

BGE-M3 Russian Legal Documents

Это модель для получения эмбеддингов русских юридических документов, дообученная на датасете из трех категорий: судебные решения, федеральные законы и региональные законы.

Модель

  • —Базовая модель: BAAI/bge-m3
  • —Размерность эмбеддингов: 1024
  • —Max sequence length: 512 токенов
  • —Язык: Русский
  • —Задача: Semantic search на юридических документах

Метрики качества

Результаты на тестовой выборке

МетрикаЗначение
Recall@176.9%
Recall@592.9%
Recall@1095.5%

Результаты по типам документов (validation set)

ДатасетRecall@1Recall@5Recall@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: evalavgrecall@5

Лицензия

Apache 2.0