Agentic RAG: doświadczenie w budowaniu systemów wyszukiwania dokumentów sądowych DIFC
Trudności przeszukiwania wektorowego w RAG
Przeszukiwanie wektorowe jest skuteczne dla fragmentów semantycznie podobnych (np. "przerwanie umowy" ≈ "rozwiązanie kontraktu"), ale nie radzi sobie z konkretnymi faktami, takimi jak "miasto sądu w sprawie Jason vs. Kruger". Skala dokumentów pogłębia problem: od szybkiego wyszukiwania w małej bibliotece do konieczności indeksowania w ogromnych zbiorach.
Kluczem do sukcesu jest chunkowanie — dzielenie tekstu na logiczne fragmenty. Proste podejście (według wzorców: artykuł 1, paragraf 2) działa przy silnej hierarchii, ale wymaga optymalnego rozmiaru. Mały chunk daje wyraźny wektor bez kontekstu; duży — rozmyty.
Przykład problemu:
- Oryginalny tekst: "Na posiedzeniu obecni byli: Uczestnik 1, Uczestnik 2, Uczestnik 3".
- Podział według znaków listy → każdy punkt traci sens.
Strategie chunkowania i hybrydowe przeszukiwanie
Hybrydowe przeszukiwanie łączy wektory, BM25 i metadane. Reranker (model oparty na parach pytanie-odpowiedź) przekształca top-k*10 na top-k dla większej precyzji.
Warianty chunkowania:
| Podejście | Opis | Zalety | Wady |
|--------|----------|-------|--------|
| B1. Stały rozmiar + nakładanie | Chunki po N tokenach z nakładaniem | Prostota | Ryzyko zerwania kontekstu |
| B2. Hierarchiczne | Duże chunkowanie → małe; kontekst z dużych | Zachowanie kontekstu | Złożoność implementacji |
| B3. Semantyczne | Grupowanie według znaczenia za pomocą ML | Relevance | Wysokie koszty zasobów |
Zespół zastosował B1 i B2, pomijając B3 z powodu ograniczeń czasowych.
Architektura prostego rozwiązania
Qdrant + LlamaIndex do bazy wektorowej, Unstructured do wyodrębniania z PDF z zachowaniem struktury.
Chunkowanie: po stronach + nakładanie. Przeszukiwanie: hybrydowe + regex dla wzorców + filtrowanie po metadanych. Reranker: tak.
Zalety:
- Szybka implementacja.
- Przewidywalność.
- Grounding z chunków (strony).
Wady:
- Regex: fałszywe sygnały / pomylenia.
- Silna zależność od struktury.
- Pierwotnie grounding nie był w metadanych (poprawione).
Wyniki:
- Etap eliminacyjny: dokładność det 0.9 → 0.81 (po poprawce), grounding 0.5 → 0.58.
- Finał: dokładność 0.79, grounding 0.63, prędkość średnia.
Agenty RAG: router i narzędzia
Chunkowanie: hierarchiczne. Algorytm:
- Analiza struktury przez LLM na próbkach.
- Zapisanie wzorców.
- Rekursywne łączenie małych chunków do docelowego rozmiaru.
Problemy: niestabilność wzorców na stronach → brudne chunki.
Przeszukiwanie: router agenta dystrybuuje zadania do 4 narzędzi (metadane, dokładne dopasowanie, porównanie dokumentów, hybrydowe), z filtrami po numerze sprawy/przepisie. Architektura: router → narzędzia (z rerankerem) → generator agenta.
Zalety:
- Poprawny wybór narzędzi w zależności od kontekstu.
- Filtracja działała.
Wady:
- Niestabilne chunkowanie.
- Brudne chunki.
- Nieprzetestowane (błędy API przed końcówką).
Wyniki etapu eliminacyjnego: dokładność 0.74, grounding 0.6, niska prędkość (2 wywołania LLM). Finał nie został oddany.
Co ważne
- Hybrydowe przeszukiwanie + reranker to konieczność dla dokładności poza semantyką.
- Chunkowanie po stronach jest prostsze i bardziej stabilne niż hierarchiczne w krótkim czasie.
- Agenci są pomocni w routingu, ale wymagają rygorystycznego schematu narzędzi i testów.
- Grounding w metadanych jest kluczowy dla deterministycznych odpowiedzi.
- Regex uzupełnia, ale nie zastępuje wektorów; ostrożnie z fałszywymi sygnałami.
Ostateczny wniosek: proste rozwiązanie dało stabilne wyniki 0.79/0.63. Agentowe ma potencjał, ale wiąże się z ryzykiem w chunkowaniu i debugowaniu. Doświadczenie pokazało: skup się na przewidywalności, zamiast na skomplikowanych rozwiązaniach.
— Editorial Team
Brak komentarzy.