Optimalizace RAG pro právní dokumenty: lekce z Agentic RAG Legal Challenge
Tým vývojářů otestoval RAG na kolekci právních dokumentů z soutěže Agentic RAG Legal Challenge. Hlavním cílem bylo zlepšení přesnosti citování a spolehlivosti odpovědí (grounding). Dokumenty z DIFC (soudní rozsudky, zákony, regulační akt) byly extrahovány z PDF s využitím vizuálního vykreslení stránek do obrázků a následného zpracování modelu Qwen 3.5-9b na Mac Studio M3 Ultra.
Sémantické částečné rozdělení dokumentů pomocí embedderů FRIDA (dense) a GTE (sparse) umožnilo rozdělit 30 dokumentů na přibližně 2000 částí. Každá část obsahuje:
- text: dokončený fakt nebo myšlenku
- path: původní dokument
- context: popis kontextu části v rámci dokumentu
Kontext je generován LLM (Qwen), který dostane část i celý dokument. Tím se kompenzuje ztráta spojitosti při rozdělení. Embeddingy jsou uloženy v Qdrant. Indexace 30 dokumentů trvala přibližně 2 hodiny, hlavní bottleneck byl prefill při generování kontextu (15–20 sekund/část lokálně).
Pipeline generování odpovědí
Pro každý dotaz:
- Intent: LLM generuje varianty dotazů pro vyhledávání.
- Select: Vektorizace prostřednictvím FRIDA/GTE, vyhledání v Qdrant s RRF, top-N částí. LLM provádí reranking a vybírá relevantní části.
- Answer: Odfiltrovány části jsou posílány LLM s požadavkem na odpověď + uvedením čísel použitých částí pro grounding.
Metriky soutěže: Total = (0.7 × S_det + 0.3 × S_asst) × G × T × F. Klíčový faktor G (grounding) – ověření odkazů na stránky. S_det – přesnost deterministických odpovědí (boolean, datum, jméno, číslo). S_asst – kvalita volně formulovaných odpovědí podle LLM-soudce.
Výsledky experimentů a benchmarků
15 testů na warm-up (30 dokumentů, 100 dotazů) ukázaly evoluci od základního RAG k optimalizovanému řešení. Klíčové verze:
| Verze | S_det | S_asst | G | Total |
|--------|--------|---------|---|--------|
| v3 (GPT-5.4) | 0.843 | 0.667 | 0.451 | 0.362 |
| v5 (CAG Qwen 1M) | 0.971 | 0.553 | 0.563 | 0.403 |
| v6 (BM25) | 0.943 | 0.540 | 0.390 | 0.269 |
| v7 (BM25 + semantic RRF) | 0.871 | 0.567 | 0.717 | 0.468 |
| v11 (MORAG v3) | 1.000 | 0.680 | 0.757 | 0.664 |
| v15 (finále) | 0.986 | 0.733 | 0.901 | 0.780 |
Růst G z 0,45 na 0,90 rozhodl o úspěchu. BM25 dosáhl nejhoršího výsledku (Total 0,269). CAG (plný kontext 350K tokenů v Qwen 3.5-Flash) exceloval v S_det (0,971), ale selhal u groundingu.
Vnitřní RAG od OpenAI na PDF dosáhl 0,362 – přijatelná přesnost, ale slabé citování.
Porovnání přístupů: RAG vs alternativy
- BM25: Rychlé vyhledávání klíčových slov (TF-IDF), ale ignoruje smysl – nízké G (0,390).
- CAG: Celý kontext v promptu (1M tokenů), vysoká S_det, ale grounding trpí kvůli chybějícím explicitním odkazům.
- Hybridní RAG (MORAG): FRIDA/GTE + RRF + LLM-reranking + uvažování podle typu dotazu. Dosáhl 1,000 S_det, 0,901 G.
Agentic prvek: po fázi Select model autonomně rozhoduje o dalších krocích (zapnutí/vypnutí uvažování, pinování map).
MORAG (github.com/catonmoon/morag) překonal vnitřní RAG od OpenAI/Grok ve všech metrikách.
Mac Studio M3 Ultra zvládl indexaci (embeddings native), ale nevydržel těžké úlohy s prefill – přepnuto na OpenRouter.
Co je důležité
- Grounding (G) je rozhodující faktor: i ideální odpověď je bez platných odkazů na stránky neplatná.
- Hybridní vyhledávání (husté + řídké + RRF) + LLM-reranking kriticky zvyšuje relevanci částí.
- Sémantické částečné rozdělení s generováním kontextu zachovává spojitost bez náročných LLM.
- Typ dotazu určuje režim: uvažování pro volné texty, přímé pro deterministické odpovědi.
— Editorial Team
Zatím žádné komentáře.