Zyski:
- Oceń numerycznie rozmiar porcji, nakładanie się i kompromisy w zakresie fragmentacji semantycznej
- Wybór odpowiedniej strategii fragmentowania dla różnych typów dokumentów (PDF, tabela, kod, dziennik czatu)
- Popraw jakość wyszukiwania i filtrowanie, dodając metadane do każdej porcji
Jest to najczęściej pomijany, ale najbardziej decydujący krok w RAG: sposób podziału dokumentu. Nazywa się to fragmentacją. Nawet jeśli przekażesz ten sam dokument temu samemu modelowi, z powodu złego podziału na fragmenty, pobranie zwróci niewłaściwy element i model nigdy nie da dobrej odpowiedzi. W tej części omawiamy strategie fragmentacji, sposoby ich dostosowywania do typu dokumentu i dodawania znaczących metadanych do każdego fragmentu.
Dlaczego niszczymy?
Są trzy powody. Po pierwsze, modele osadzające przekształcają tekst o określonej długości w znaczący wektor; Jeśli cały 40-stronicowy rozdział zostanie upchnięty w jednym wektorze, znaczenie stanie się „zamazane”. Po drugie, chcemy dać modelowi tylko tę część, która jest potrzebna jako kontekst; przekazanie całego dokumentu jest kosztowne i rozpraszające. Po trzecie, aby wyszukiwanie było precyzyjne, jednostka poszukiwawcza musi być mała i skupiona.
Zatem porcja jest najmniejszą jednostką pobierania. Nie powinien być ani za duży, ani za mały – w sam raz.
Rozmiar kawałka i równowaga nakładania się
Istnieją dwa główne ustawienia: rozmiar porcji (ile tokenów/słów będzie w porcji) i nakładanie się (część współdzielona przez sąsiednie porcje).
Bardzo małe fragmenty (np. 100 tokenów): skupione, ale oderwane od kontekstu. Mówi „przez 14 dni”, ale w poprzednim zdaniu podano, jakie 14 dni pozostało. Bardzo duże fragmenty (np. 2000 tokenów): zachowuje kontekst, ale zawiera wiele wątków; osadzanie staje się pogmatwane i nieistotne tematy łączą się.
Nakładanie się rozwiązuje problem granic. Jeśli zdanie wypada dokładnie na granicy dwóch części, zostaje podzielone na dwie części bez nakładania się na siebie i traci swoje znaczenie. Nałożenie 50-100 tokenów gwarantuje, że informacja mieszcząca się w limicie pozostanie nienaruszona przynajmniej w jednej części.
Rozmiar kawałka
Zaleta
Wada
odpowiednią treść
Mały (100-250 tokenów)
Wysoka czułość, skupienie
Kontekst może zostać uszkodzony
FAQ, krótkie artykuły, definicje
Średni (300-600 tokenów)
Równowaga; większość scenariuszy
—
Procedury, teksty polityk
Duży (800-1500 tokenów)
Integralność kontekstu
niewyraźne osadzenie
Narracja, długie wyjaśnienia
Wskazówka: jeśli nie wiesz od czego zacząć, zacznij od fragmentu 400-500 tokenów i nakładania się 50-80 tokenów; następnie zmierz i dostosuj na podstawie własnych danych. „Właściwy” rozmiar nie jest uniwersalny, zależy od kontekstu.
Strategie fragmentowania
Stały rozmiar: przycina tekst co N żetonów. Jest to proste i szybkie, ale może przerwać w połowie zdania.
Oparty na separatorach (rekurencyjny/separator): dzieli według granic akapitu, a następnie zdania; Lepiej zachowuje integralność znaczenia. Większość systemów produkcyjnych zaczyna się od tego.
Fragmentacja semantyczna: analizuje osadzenie zdań i dzieli je tam, gdzie następuje zmiana podmiotu. Jest to metoda najwyższej jakości, ale najdroższa; Przy dużych wolumenach koszty transakcyjne rosną.
Świadomość struktury: wykorzystuje strukturę dokumentu, taką jak nagłówki, sekcje, tabele. Na przykład podzielenie dokumentu Markdown według nagłówków gwarantuje, że każda część będzie miała swój własny nagłówek.
Dostosowanie według typu dokumentu
Nie każdy dokument jest taki sam. Strategia różni się w zależności od typu:
- Tekst PDF/polityki: oparty na zakładkach, średniej wielkości. Usuń powtórzenia na górze/na dole strony (nagłówek/stopka).
- Tabele: Nie wyrywaj wiersza z kontekstu; zachowaj każdy wiersz z informacjami nagłówkowymi („Artykuł: X, Cena: Y, Stan magazynowy: Z”). Konwersja nieprzetworzonej tabeli na zwykły tekst jest często niezbędna.
- Kod: podzielony według granic funkcji/klas; Nie usuwaj funkcji z drogi.
- Nagrywanie czatu/biletu: podzielone według wiadomości lub rundy rozmowy; Zachowaj wiedzę o tym, kto co powiedział.
# fragmenty oparte na nawiasach (koncepcyjne) = bol( tekst, rozmiar_docelowy=450, # nakładanie się tokenów=70, # nawiasy tokenowe=["\n\n", "\n", ". ", " "] # pierwszy akapit, ostatnie słowo)
Dodaj metadane do każdej ścieżki
Dzielenie na kawałki to nie tylko „dzielenie”; jest wzbogacenie każdego kawałka. Każdy tag, który dołączysz do utworu, jest na wagę złota, aby umożliwić przyszłe filtrowanie i cytowanie źródła.
# Wzbogacony fragment (koncepcyjny){ "text": "Coroczny płatny urlop wynosi 14 dni przy stażu pracy 1-5 lat...", "metadata": { "source": "ik_el_kitabi_v7.pdf", "section": "5.2 Urlop roczny", "page": 23, "data": "2025-06", "department": "IK", "privacy": "internal" }}
Inną skuteczną techniką jest dodanie nagłówka kontekstowego: zapisanie tytułu rozdziału, do którego należy, na początku każdego artykułu. Zatem nawet chaotyczny artykuł, taki jak „Przez 14 dni”, jest zarówno lepiej osadzony, jak i bardziej znaczący, jak „Urlop roczny – 14 dni”.
Słabe kawałkowanie/silne kawałkowanie
Słabe (ślepe, twarde, bez metadanych):
Obcinaj tekst co 1000 znaków. Zachowaj tylko tekst.# Wynik: tabele są podzielone pośrodku, „14 dni” pozostaje bez kontekstu,# nie wiadomo, z jakiego dokumentu pochodzi, nie można zastosować żadnego filtra.
Potężny (świadomy struktury + nagłówek + metadane):
Podziel dokument według nagłówków; dodaj tytuł sekcji do każdej części; dołącz źródło, stronę, datę i metadane dotyczące prywatności; konwertuj wiersze tabel na zwykły tekst z ich nagłówkami. # Wynik: skoncentrowany, kontekstowy, możliwy do filtrowania, możliwy do uzyskania.
Trzy mini etui
Przypadek 1 — Katastrofa malarska. Zespół finansowy podzielił 200-stronicowy cennik za pomocą cięcia na ślepo; wiersze tabeli zostały losowo podzielone. „Jaka jest cena produktu X?” Modelka odczytała błędny wiersz i podała niewłaściwą cenę (9 na 12 przypadków jest błędnych). Kiedy przekonwertowałem wiersze tabeli na zwykły tekst w formacie „Produkt: … | Cena: … | Jednostka: …” błąd zmniejszył się do 0 z 12.
Przypadek 2 — Niezwykle duży kawałek. Na wiki każda strona składa się z pojedynczego fragmentu (niektórzy twierdzą, że 3000 tokenów). Osadzanie jest niewyraźne, ponieważ na jednej stronie znajdują się „urlopy”, „nadgodziny” i „lista płac”; Sekcja dotycząca godzin pracy również miała znaczenie w kwestii urlopu. Kiedy strony zostały podzielone na średnie według tytułu, wskaźnik zapamiętywania@5 wzrósł z 64% do 91%.
Przypadek 3 – Zdanie skrócone bez nakładania się. Stały koszt 250 tokenów dla zespołu prawnego, bez nakładania się. Definicja krytyczna znalazła się na granicy dwóch części i podzieliła się na dwie części; Ani jedno, ani drugie nie zawiera pełnej odpowiedzi. Po dodaniu 60 nakładających się żetonów ta sama definicja pozostała nienaruszona w jednym kawałku i zwrócono poprawną odpowiedź.
Typowe błędy
- Ślepe, stałe cięcie: dzieli zdania i tabele w środku; znaczenie zostało utracone.
- Pozostawienie nałożenia na poziomie zerowym: Informacje, które wpadają na granicę, są dzielone i tracone.
- Brak dodawania metadanych: Filtrowanie i wyświetlanie źródła stają się niemożliwe.
- Pozostawienie surowych tabel: model nie może rozwiązać struktury tabeli; Konwertuj linie na zwykły tekst.
- Narzucanie jednej strategii: PDF, kod i tabela nie są dzielone tą samą metodą; Dostosuj się do gatunku.
Uwaga: nie ustawiaj Chunkingu raz i zapomnij o tym. Zmierz ponownie jakość pobierania, gdy pojawią się nowe typy dokumentów (bilety z nowego systemu, zeskanowane pliki PDF). Złe dane wejściowe oznaczają złą reakcję („śmieci wchodzą, śmieci wypływają”).
Podsumowując
- Kawałek to najmniejsza jednostka pobierania; Ani za duży, ani za mały – należy go wyważyć odpowiednio do treści.
- Rozmiar kawałka wskazuje równowagę między ostrością a kontekstem; Nakładanie się zarządza utratą granic.
- Porcjowanie oparte na nawiasach i uwzględniające strukturę jest punktem wyjścia dla większości systemów generacji; fragmentacja semantyczna jest dobrej jakości, ale droga.
- Typy takie jak tabela, skrypt i czat wymagają własnych strategii; Konwertuj tabele na zwykły tekst.
- Dodaj źródło/datę/rozdział/metadane dotyczące prywatności i tytuł sekcji do każdej ścieżki; To jest podstawa filtrowania i cytowania.
Zadanie aplikacji
Podziel sekcję wybranego dokumentu na trzy różne sposoby: (1) małe części po 200 żetonów, (2) średnie części po 500 żetonów (70 żetonów nałożonych na siebie), (3) pojedyncze duże części. Zadaj te same 3 pytania dla każdej strategii, ręcznie zaznacz, który element chcesz wprowadzić, i zapisz uzasadnienie, która strategia najlepiej sprawdza się w przypadku tego dokumentu. Następnie dodaj co najmniej cztery pola metadanych i „tytuł rozdziału” do każdej ścieżki. Jeśli dokument zawiera tabelę, przekonwertuj wiersz tabeli na zwykły tekst w formacie „pole:wartość”.
lista kontrolna
- [ ] Widzę, że porcja to najmniejsza jednostka pobierania, a rozmiar to równowaga ostrości i kontekstu.
- [ ] Wiem, dlaczego nakładanie się zapobiega utracie granic.
- [ ] Potrafię rozróżnić podział na nawiasy, semantyczny i uwzględniający strukturę.
- [ ] Potrafię dostosować strategię do tabeli, kodu i czatu.
- [ ] Wzmacniam wyszukiwanie, dodając metadane i tytuł rozdziału do każdej ścieżki.