parlorsky/legal-rag-benchmark-ru
收藏Hugging Face2026-04-08 更新2026-04-12 收录
下载链接:
https://hf-mirror.com/datasets/parlorsky/legal-rag-benchmark-ru
下载链接
链接失效反馈官方服务:
资源简介:
---
language:
- ru
tags:
- legal
- rag
- benchmark
- knowledge-graph
- russian
- nlp
license: mit
pretty_name: "Legal RAG Benchmark (Russian)"
size_categories:
- 1K<n<10K
---
# Legal RAG Benchmark — Russian Legal Documents
Сравнительный бенчмарк 5 подходов к вопросно-ответным системам (QA) на корпусе российских правовых документов.
## 📊 Результаты
| Система | Точность (F) | Релевантность (R) | Полнота (C) | Overall | Латенция |
|---------|:---:|:---:|:---:|:---:|:---:|
| **Improved RAG (наш)** | **5.00** | **5.00** | **4.72** | **4.93** | 12.1s |
| Baseline RAG | 5.00 | 4.88 | 4.40 | 4.81 | 7.5s |
| Pure LLM | 4.44 | 4.84 | 3.92 | 4.45 | 34.7s |
| Wikontic AIRI | 3.40 | 3.04 | 2.04 | 2.83 | 6.3s |
| GraphRAG Microsoft | 3.56 | 1.92 | 1.20 | 2.23 | 35.3s |
> Подробный отчёт с графиками: [benchmark_report.pdf](benchmark_report.pdf)
## 🏗️ Структура репозитория
```
├── README.md # Документация
├── benchmark_report.pdf # PDF отчёт с графиками
├── test_dataset.json # 25 тестовых вопросов с эталонными ответами
├── sample_docs/ # 12 исходных правовых документов (txt)
│
├── improved_rag/ # Артефакты нашего Improved RAG
│ ├── vector_store/
│ │ ├── index.faiss # FAISS индекс (dense retrieval)
│ │ ├── embeddings.npy # Матрица эмбеддингов
│ │ ├── documents.json # Метаданные документов
│ │ └── config.json # Конфиг vector store
│ ├── bm25_index/
│ │ └── bm25_index.json # BM25 индекс (sparse retrieval)
│ ├── chunks.json # 9162 текстовых фрагмента
│ ├── chunks_with_entities.json # Фрагменты с извлечёнными сущностями
│ ├── ontology.json # Онтология предметной области
│ └── system_config.json # Конфигурация системы
│
├── graphrag/ # Артефакты GraphRAG Microsoft
│ ├── settings.yaml # Конфигурация GraphRAG
│ └── output/
│ ├── entities.parquet # 1507 извлечённых сущностей
│ ├── relationships.parquet # Связи между сущностями
│ ├── communities.parquet # 216 сообществ (Leiden clustering)
│ ├── community_reports.parquet # Отчёты по сообществам
│ ├── text_units.parquet # 2413 текстовых единиц
│ ├── documents.parquet # Метаданные документов
│ └── lancedb/ # LanceDB векторное хранилище
│ ├── default-entity-description.lance/
│ ├── default-community-full_content.lance/
│ └── default-text_unit-text.lance/
│
├── wikontic/ # Артефакты Wikontic AIRI
│ ├── triplets.json # 594 извлечённых триплета (KG)
│ ├── initial_triplets.json # 597 исходных триплетов (до фильтрации)
│ ├── entity_aliases.json # 807 сущностей (без эмбеддингов)
│ ├── entity_aliases_full.json # 807 сущностей (с Contriever эмбеддингами)
│ ├── property_aliases.json # 257 свойств (без эмбеддингов)
│ ├── property_aliases_full.json # 257 свойств (с эмбеддингами)
│ └── filtered_triplets.json # Отфильтрованные триплеты
│
└── benchmark_results/ # Результаты бенчмарка
├── comparison.json # Baseline RAG + Improved RAG + Pure LLM (25 вопросов)
├── wikontic_results.json # Wikontic результаты (25 вопросов)
└── graphrag_results.json # GraphRAG результаты (25 вопросов)
```
## 🔧 Тестируемые системы
### 1. Improved RAG (наше решение) — Overall: 4.93
- **Retrieval**: гибридный BM25 + dense (FAISS) с 9162 фрагментами
- **Reranking**: Qwen3-Reranker-4B — нейросетевой реранкер
- **Generation**: Gemma-4-31B-it-abliterated через vLLM
- **Индексация**: ~30 минут
### 2. Baseline RAG — Overall: 4.81
- **Retrieval**: только dense (FAISS), без BM25 и реранкера
- **Generation**: та же Gemma-4-31B
- Показывает вклад гибридного поиска и реранкера: +2.5% к Overall
### 3. Pure LLM — Overall: 4.45
- Gemma-4-31B без контекста из документов
- Контрольная группа: показывает вклад RAG (+8% к Overall)
### 4. Wikontic AIRI — Overall: 2.83
- **Knowledge Graph**: извлечение триплетов через LLM
- **Storage**: MongoDB (entity/property aliases с Contriever эмбеддингами)
- **Проблемы**: транслитерация русского в латиницу, неполнота KG (594 триплета)
### 5. GraphRAG Microsoft — Overall: 2.23
- **Graph**: 1507 entities, связи, 216 community clusters
- **Search**: local search через LanceDB embeddings (Jina v3)
- **Проблемы**: community reports дают обобщённые ответы, Completeness=1.20
## 📋 Тестовый набор
25 вопросов по 5 категориям:
- **def** (13) — определения юридических понятий
- **factual** (4) — фактические вопросы о правовых нормах
- **legal** (4) — юридические тонкости и ограничения
- **cross** (3) — кросс-документные вопросы
- **process** (1) — процедурные вопросы
Документы: 12 федеральных законов и нормативных актов РФ (банковское право, долевое строительство, промышленная политика, ГЧП, рынок ценных бумаг).
## 🚀 Как использовать
### Восстановить Improved RAG
```python
import faiss, json, numpy as np
# Загрузить FAISS индекс
index = faiss.read_index("improved_rag/vector_store/index.faiss")
embeddings = np.load("improved_rag/vector_store/embeddings.npy")
with open("improved_rag/vector_store/documents.json") as f:
documents = json.load(f)
with open("improved_rag/chunks.json") as f:
chunks = json.load(f)
print(f"FAISS: {index.ntotal} vectors, {len(chunks)} chunks")
```
### Восстановить Wikontic KG
```python
import json
from pymongo import MongoClient
client = MongoClient("mongodb://localhost:27017")
db = client["triplets_db"]
for collection in ["triplets", "entity_aliases_full", "property_aliases_full", "initial_triplets"]:
with open(f"wikontic/{collection}.json") as f:
docs = json.load(f)
if docs:
db[collection.replace("_full", "")].insert_many(docs)
print(f"{collection}: {len(docs)} docs restored")
```
### Восстановить GraphRAG
```python
# GraphRAG output можно использовать напрямую — скопируйте содержимое
# graphrag/output/ в папку output/ вашего GraphRAG проекта
# pip install graphrag
# graphrag query --root ./graphrag --method local -q "Ваш вопрос"
```
### Загрузить результаты бенчмарка
```python
import json
with open("benchmark_results/comparison.json") as f:
results = json.load(f)
for system in results:
data = results[system]
avg_overall = sum(q["overall"] for q in data) / len(data)
print(f"{system}: Overall={avg_overall:.2f}")
```
## ⚙️ Инфраструктура
- **GPU**: NVIDIA RTX PRO 6000 Blackwell (96GB VRAM)
- **LLM**: Gemma-4-31B-it-abliterated (vLLM, bfloat16)
- **Reranker**: Qwen3-Reranker-4B (vLLM)
- **Embeddings**: Jina-embeddings-v3 (для GraphRAG), Contriever (для Wikontic)
- **OS**: Ubuntu 22.04, Python 3.10
## 📝 Методология оценки
Каждый ответ оценивается LLM-судьёй (Gemma-4-31B) по 3 критериям (1-5):
- **Factual Accuracy (F)** — фактическая точность
- **Relevance (R)** — релевантность вопросу
- **Completeness (C)** — полнота покрытия ключевых аспектов
- **Overall** = (F + R + C) / 3
Все системы используют одну и ту же LLM для генерации, что обеспечивает справедливое сравнение retrieval-компонентов.
## 📄 Лицензия
MIT
## 🔗 Ссылки
- [Wikontic AIRI](https://github.com/AIRI-Institute/Wikontic) — исходный репозиторий Wikontic
- [GraphRAG Microsoft](https://github.com/microsoft/graphrag) — исходный репозиторий GraphRAG
提供机构:
parlorsky



