Voitot:
- Arvioi numeerisesti palan kokoa, päällekkäisyyttä ja semanttista osiointia koskevia kompromisseja
- Sopivan lohkomisstrategian valitseminen eri asiakirjatyypeille (PDF, taulukko, koodi, chat-loki)
- Paranna haun laatua ja suodatusta lisäämällä metatiedot jokaiseen osaan
Tämä on RAG:n kaikkein huomiotta jäänyt, mutta ratkaisevin vaihe: miten asiakirja hajotetaan. Tätä kutsutaan chunking. Vaikka antaisit saman asiakirjan samalle mallille, huonon paloittelun vuoksi haku palauttaa väärän kappaleen eikä malli koskaan anna hyvää vastausta. Tässä osiossa käsittelemme pirstoutumisstrategioita, niiden mukauttamista dokumenttityypin mukaan ja merkityksellisten metatietojen lisäämistä jokaiseen fragmenttiin.
Miksi silputamme?
Syitä on kolme. Ensinnäkin upotusmallit muuntavat tekstin tiettyyn pituuteen asti merkitykselliseksi vektoriksi; Jos kokonainen 40-sivuinen luku tiivistetään yhteen vektoriin, merkitys hämärtyy. Toiseksi haluamme antaa mallille vain sen osan, jota tarvitaan kontekstina; koko asiakirjan luovuttaminen on kallista ja häiritsevää. Kolmanneksi, jotta haku olisi tarkka, hakuyksikön on oltava pieni ja keskittynyt.
Joten pala on pienin hakuyksikkö. Se ei saa olla liian suuri tai liian pieni - juuri sopiva.
Palan koko ja päällekkäisyystasapaino
On olemassa kaksi pääasetusta: kappaleen koko (kuinka monta merkkiä/sanaa on osassa) ja limitys (naapuripalojen jakama osa).
Hyvin pienet palat (esim. 100 merkkiä): keskittynyt, mutta irrallaan kontekstista. Hän sanoo "14 päiväksi", mutta se 14 päivää jää edelliseen lauseeseen. Erittäin suuret palat (esim. 2000 merkkiä): säilyttää kontekstin, mutta monet säikeet sekoitetaan; upottaminen menee sekaisin ja asiaankuulumattomat aiheet kohtaavat.
Päällekkäisyys ratkaisee rajaongelman. Jos lause osuu täsmälleen kahden osan rajalle, se jaetaan kahdeksi ilman päällekkäisyyttä ja sen merkitys menetetään. 50-100 tokenin päällekkäisyys varmistaa, että rajan sisällä olevat tiedot pysyvät ennallaan ainakin yhdessä osassa.
Palan koko
Etu
Epäkohta
sopivaa sisältöä
Pieni (100-250 merkkiä)
Korkea herkkyys, keskittynyt
Konteksti voi katketa
UKK, lyhyitä artikkeleita, määritelmiä
Keskikokoinen (300–600 merkkiä)
tasapaino; useimmat skenaariot
—
Menettelyt, politiikkatekstit
Suuri (800-1500 kuponkia)
Kontekstin eheys
epäselvä upotus
Kertomus, pitkät selitykset
Vinkki: Jos et tiedä mistä aloittaa, aloita 400–500 tunnuksella ja 50–80 päällekkäisyydellä. sitten mittaa ja säädä omilla tiedoillasi. "Oikea" koko ei ole universaali, se riippuu kontekstista.
Purkamisstrategiat
Kiinteä koko: Leikkaa tekstin joka N merkki. Se on yksinkertainen ja nopea, mutta voi keskeyttää lauseen puolivälissä.
Erotinpohjainen (rekursiivinen/erotin): Jakaa kappaleen ja sitten lauserajojen mukaan; Se säilyttää paremmin merkityksen eheyden. Useimmat tuotantojärjestelmät alkavat tästä.
Semanttinen paloittelu: Se tarkastelee lauseiden upotuksia ja jakaa ne siellä, missä aihe vaihtuu. Se on laadukkain mutta kallein menetelmä; Suurilla volyymeilla transaktiokustannukset kasvavat.
Rakennetietoinen: Käyttää asiakirjan rakennetta, kuten otsikoita, osia, taulukoita. Esimerkiksi Markdown-asiakirjan jakaminen otsikoiden mukaan varmistaa, että jokaisella osalla on oma otsikkonsa.
Mukauttaminen asiakirjatyypin mukaan
Kaikki asiakirjat eivät ole samanlaisia. Strategia vaihtelee tyypeittäin:
- PDF/käytäntöteksti: Kirjanmerkkipohjainen, keskikokoinen. Tyhjennä sivun ylä-/alatoistot (ylä-/alatunniste).
- Taulukot: Älä irrota riviä kontekstista; säilytä jokainen rivi otsikkotiedoilla ("Tuote: X, hinta: Y, varasto: Z"). Raakataulukon muuntaminen tavalliseksi tekstiksi on usein välttämätöntä.
- Koodi: Jaettu funktion/luokkarajojen mukaan; Älä leikkaa toimintoa tieltä.
- Chat/lipputallennus: Jaa viestillä tai keskustelukierroksella; Säilytä tieto siitä, kuka sanoi mitä.
# hakasulkupohjainen paloittelu (käsitteellinen) chunks = bol( text, target_size=450, # token overlap=70, # token brackets=["\n\n", "\n", ". ", " "] # kappale ensimmäinen, sana viimeinen)
Lisää metatiedot jokaiseen kappaleeseen
Sirpalointi ei ole vain "jakaa"; on rikastuttaa jokaista palaa. Jokainen kappaleeseen kiinnittämäsi tagi on kullan arvoinen tulevaa suodatusta ja lähdeviittausta varten.
# Rikastettu osa (käsitteellinen){ "text": "Vuotuinen palkallinen loma on 14 päivää 1-5 vuoden palveluksessa...", "metadata": { "lähde": "ik_el_kitabi_v7.pdf", "section": "5.2 Vuosiloma", "sivu": 23, "date": "2025", "IK"-":", }}
Toinen tehokas tekniikka on kontekstuaalisen otsikon lisääminen: kirjoitetaan jokaisen kappaleen alkuun sen luvun otsikko, johon se kuuluu. Näin ollen jopa hajanainen kappale, kuten "14 päivää", on paremmin upotettu ja merkityksellisempi kuin "Vuosiloma - 14 päivää".
Heikko paloittelu / voimakas paloittelu
Heikko (sokea kova leikkaus, ei metatietoja):
Katkaise teksti 1000 merkin välein. Säilytä vain teksti.# Tulos: taulukot jaetaan keskelle, "14 päivää" jää ilman kontekstia,# ei tiedetä mistä dokumentista se tuli, suodatinta ei voi tehdä.
Tehokas (rakennetietoinen + otsikko + metatiedot):
Jaa asiakirja otsikoiden mukaan; lisää osion otsikko jokaiseen osaan; liitä lähde, sivu, päivämäärä ja yksityisyyden metatiedot; muuntaa taulukkorivit pelkkiksi tekstiksi otsikoineen.# Tulos: kohdistettu, kontekstuaalinen, suodatettava, lähdettävä.
Kolme minikoteloa
Tapaus 1 – Maalauskatastrofi. Rahoitustiimi jakoi 200-sivuisen hinnaston sokealla kovaleikkauksella; taulukon rivit jaettiin satunnaisesti. "Mikä on tuotteen X hinta?" Malli luki väärän rivin ja antoi väärän hinnan (9 tapausta 12:sta on väärin). Kun muunsin taulukon rivit pelkäksi tekstiksi muodossa "Tuote: … | Hinta: … | Yksikkö: …", virhe pieneni nollaan 12:sta.
Tapaus 2 – Erittäin suuri pala. Wikissä jokainen sivu koostuu yhdestä palasta (jotkut sanovat 3000 merkkiä). Upotus on epäselvä, koska yhdellä sivulla on "loma", "ylityö" ja "palkka"; Työaika-osio tuli esille myös lomakysymyksen osalta. Kun sivut jaettiin keskikokoisiin otsikoiden perusteella, recell@5 nousi 64 prosentista 91 prosenttiin.
Tapaus 3 – Katkaistu lause ilman päällekkäisyyttä. 250 token kiinteä leikkaus lakitiimille, ei päällekkäisyyksiä. Kriittinen määritelmä osui aivan kahden osan rajalle ja jakautui kahtia; Kumpikaan ei sisällä täydellistä vastausta. Kun 60 token päällekkäisyyttä lisättiin, sama määritelmä säilyi yhtenä kappaleena ja oikea vastaus palautettiin.
Yleisiä virheitä
- Sokea kiinteä leikkaus: Halkaisee lauseet ja taulukot keskeltä; merkitys on kadonnut.
- Päällekkäisyyden jättäminen nollaan: Rajalle osuva tieto jakautuu ja katoaa.
- Ei lisätä metatietoja: Suodatus ja lähteen näyttäminen muuttuvat mahdottomaksi.
- Taulukoiden jättäminen raakana: Malli ei pysty ratkaisemaan taulukkorakennetta; Muunna rivit tavalliseksi tekstiksi.
- Yhden strategian asettaminen: PDF-tiedostoa, koodia ja taulukkoa ei jaeta samalla menetelmällä; Sopeutua genreen.
Varoitus: Älä aseta Chunkingia kerran ja unohda se. Mittaa haun laatu uudelleen, kun uusia asiakirjatyyppejä saapuu (liput uudesta järjestelmästä, skannatut PDF-tiedostot). Huono syöttötieto tarkoittaa huonoa vastausta ("roskat sisään, roskat ulos").
Yhteenvetona
- Pala on pienin hakuyksikkö; Ei liian iso eikä liian pieni – sen tulee olla tasapainossa sisällön mukaan.
- Palakoko ilmaisee tarkennuksen ja kontekstin tasapainon; Päällekkäisyys hallitsee rajahäviötä.
- Haarukoihin perustuva ja rakennetietoinen paloittelu on useimpien sukupolvien järjestelmien lähtökohta; semanttinen paloittelu on hyvälaatuista, mutta kallista.
- Tyypit, kuten taulukko, kirjoitus ja chat, vaativat omat strategiansa; Muunna taulukot tavalliseksi tekstiksi.
- Lisää lähde/päivämäärä/luku/yksityisyyden metatiedot ja osion otsikko jokaiseen kappaleeseen; Tämä on suodatuksen ja lainauksen perusta.
Sovellustehtävä
Jaa valitsemasi asiakirjan osa kolmeen eri tavalla: (1) pienet 200 merkkiä sisältävät palat, (2) keskikokoiset 500 merkkiä (70 merkkiä päällekkäin), (3) yksittäiset suuret palat. Esitä samat 3 kysymystä jokaisesta strategiasta, merkitse manuaalisesti, mikä pala tulee tuoda, ja kirjoita perustelut, mikä strategia toimii parhaiten kyseiselle asiakirjalle. Lisää sitten jokaiseen kappaleeseen vähintään neljä metatietokenttää ja "luvun otsikko". Jos asiakirja sisältää taulukon, muunna taulukon rivi pelkkää tekstiä muotoon "field:value".
tarkistuslista
- [ ] Voin kertoa, että pala on pienin hakuyksikkö ja koko on tarkennuksen ja kontekstin tasapaino.
- [ ] Tiedän, miksi päällekkäisyys estää rajan katoamisen.
- [ ] Pystyn erottamaan hakasulkeisiin perustuvan, semanttisen ja rakennetietoisen paloittelun.
- [ ] Pystyn mukauttamaan strategiaa taulukkoon, koodiin ja chattiin.
- [ ] Vahvistan hakua lisäämällä metatiedot ja luvun otsikon jokaiseen kappaleeseen.