BlogRAG

Jak dzielić umowy, polityki i długie dokumenty, nie gubiąc warunków

Dziel dokumenty według struktury, którą już mają, czyli numerowanych klauzul, sekcji z nagłówkami i wierszy tabel, a do każdego chunka dołączaj ścieżkę nagłówków i potrzebne definicje. Potem porównaj dwie lub trzy strategie na pytaniach, których odpowiedź zależy od wyjątku albo warunku. Żaden rozmiar chunka nie pasuje do wszystkich dokumentów, więc niech zdecyduje twój własny zestaw testowy.

Zaktualizowano

Jak odpowiedź odrywa się od swoich warunków

Dokumenty biznesowe umieszczają regułę w jednym miejscu, a jej ograniczenia w innym. Klauzula płatności mówi, że faktury są płatne w 30 dni, a następna, że nie dotyczy to kwot spornych. Polityka urlopowa używa pojęcia uprawniony pracownik, zdefiniowanego dwie strony wcześniej. Tabela cen zawiera liczby, których waluta i data obowiązywania stoją w wierszu nagłówka na poprzedniej stronie.

Jeśli pociąć taki dokument na równe kawałki, wyszukiwanie może zwrócić regułę bez wyjątku. Model odpowiada wtedy pewnie i myli się dokładnie w tym przypadku, o który pytał użytkownik. Nakładanie się chunków pomaga, gdy zdanie zostało przecięte na granicy. Definicji sprzed dwóch stron nie przywróci.

Dziel według struktury, którą dokument już ma

Wytyczne Microsoftu dotyczące chunkingu wiążą metodę ze stopniem ustrukturyzowania dokumentu. Teksty prawne i specyfikacje mają strukturę domyślną, czyli numerowane akapity bez znaczników, i dla nich zalecane są własny kod albo własne modele; chunki stałej wielkości z nakładaniem pasują do tekstu nieustrukturyzowanego, takiego jak maile i notatki. Wybór metody nazywają też decyzją półtrwałą, bo późniejsza zmiana wpływa na wszystko, co jest dalej w łańcuchu.

  • Umowy: jeden chunk na numerowaną klauzulę, z podpunktami razem
  • Polityki: jeden chunk na sekcję z nagłówkiem, dalszy podział tylko na podnagłówkach
  • Procedury: każda procedura w całości, jeśli się mieści, bo krok wyrwany z kolejności jest niebezpieczny
  • Tabele: wiersze albo grupy wierszy z powtórzonym nagłówkiem w każdym chunku

Przenieś kontekst do każdego chunka

Klauzula w rodzaju „termin z punktu 4.2 nie ma zastosowania” sama w sobie nic nie znaczy. Dodaj na początku to, czego potrzebowałby czytelnik: tytuł dokumentu, ścieżkę nagłówków, wersję albo datę obowiązywania i definicje pojęć użytych w chunku. Anthropic przetestował w 2024 roku pokrewny pomysł: model generował krótki kontekst dla każdego chunka, dopisywany przed embeddingiem i indeksowaniem słów kluczowych. W tych eksperymentach odsetek błędów w pierwszej dwudziestce spadł o 35 procent z kontekstowymi embeddingami i o 49 procent po dodaniu kontekstowego wyszukiwania po słowach kluczowych. Te liczby opisują zbiory danych Anthropic, a nie twoje.

Odwołania krzyżowe wymagają drugiego mechanizmu. Gdy pobrana klauzula odsyła do innej, aplikacja może dociągnąć tę drugą albo wyszukiwać małe chunki i przekazywać modelowi całą sekcję nadrzędną.

Wybór strategii przez eksperyment

Zbierz pytania, których poprawna odpowiedź zależy od warunku, wyjątku albo definicji, i oznacz zarówno fragment z odpowiedzią, jak i fragment z warunkiem. Zdefiniuj dwie lub trzy strategie i uruchom każdą na tych samych pytaniach z tym samym budżetem tokenów na pobrany tekst, dopasowując liczbę chunków do ich rozmiaru. LlamaIndex zaznacza, że mniejsze chunki mogą wymagać większego top-k, żeby pobrać dość materiału. Jeśli wolisz ustalić stałą liczbę chunków, podawaj, ile kontekstu i jaki koszt każda strategia przekazuje wtedy do modelu, bo większe chunki wnoszą do promptu więcej tekstu.

Wyniki eksperymentu z chunkingiem (hipotetyczne)
Chunking experiment: supplier contracts (hypothetical numbers)
40 labelled questions; every run passes about 4,000 tokens of
retrieved text to the prompt, so k is adjusted to the chunk size

Strategy                               k    Answer passage   Answer + its
                                            in prompt        condition in prompt
A  fixed size, small chunks           12    33 / 40          19 / 40
B  one chunk per numbered clause       8    34 / 40          27 / 40
C  clause + heading path + defined     7    36 / 40          33 / 40
   terms prepended to each chunk

Decision: C for contracts. Re-run when the template or embedding model changes.

Liczby w przykładzie są zmyślone. Porównaj dwie ostatnie kolumny: wszystkie trzy strategie zwykle wprowadzają regułę do promptu, a różnica wychodzi dopiero wtedy, gdy wymagany jest także warunek. Zestaw testowy bez pytań zależnych od warunków oceniłby je niemal tak samo.

Koszty i miejsca, w których chunking według struktury zawodzi

Każdy typ dokumentu z własnym parserem to kod do utrzymania, a Microsoft wymienia liczbę odrębnych implementacji chunkingu jako czynnik kosztowy. Zeskanowane dokumenty z niepewnymi nagłówkami, klauzule dłuższe, niż przyjmuje model embeddingów, i wzory zmieniające numerację między wersjami osłabiają to podejście. Generowanie kontekstu dla każdego chunka modelem dodaje koszt przy ingestii. A ponieważ chunki i embeddingi zależą od siebie, zmiana strategii albo modelu embeddingów oznacza ponowne indeksowanie.

Rozsądna ścieżka: zacznij od domyślnego splittera swojego frameworka jako udokumentowanego punktu odniesienia, dodaj chunking według struktury dla dwóch lub trzech typów dokumentów, których dotyczą najważniejsze pytania, i zachowaj eksperyment, żeby dało się go powtórzyć po zmianie wzorów.

Pytania

Od jakiego rozmiaru chunka zacząć?

Przyjmij domyślną wartość swojego frameworka jako punkt odniesienia i zapisz ją. LlamaIndex na przykład dokumentuje domyślny rozmiar chunka 1024 z nakładaniem 20. Traktuj to jako punkt startowy do pobicia na własnych pytaniach, a nie jako zalecenie dla umów.

Czy model z długim kontekstem sprawia, że chunking jest zbędny?

Pozwala przekazywać większe chunki albo całe sekcje, co zmniejsza ryzyko odcięcia warunków. Przy dużym zbiorze nadal potrzebujesz wyszukiwania, żeby wybrać, co przekazać, a każdy dodatkowy token kosztuje czas i pieniądze przy każdym żądaniu. Sprawdź ten kompromis na własnych dokumentach.

Porozmawiaj z inżynierem

Przyjdź z jednym zadaniem, które chcesz usprawnić. Rozmowa trwa 30 minut i nie wymaga dostępu do twoich systemów ani danych.

Rezerwacja odbywa się w Kalendarzu Google.

Wolisz najpierw napisać? Zostaw adres e-mail i kilka zdań, a odpowiemy, proponując terminy.

Przycisk przygotowuje e-mail w twoim własnym programie pocztowym, a wysyłasz go samodzielnie. Polityka prywatności (wersja robocza)