Pilkontastrategiat (kiinteä, lausekohtainen, semanttinen)
Tutustukaa kiinteän, lauseita huomioivan ja semanttisen pilkonnan kompromisseihin hakutulosten laadun kannalta.
Pilkontastrategiat (kiinteä, lausekohtainen, semanttinen) on ilmainen Tekoälyagentit-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Tekoälyagentit-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Tekoälyagentit-kurssilla on yhteensä 4 oppituntia.
Miksi paloitella?
Koko 200-sivuista PDF-tiedostoa ei voi muuttaa yhdeksi vektoriksi — vektori olisi liian abstrakti vastatakseen tiettyihin kyselyihin. Paloitelkaa dokumentti pienemmiksi osiksi (kukin noin 200–800 tokenia), muodostakaa jokaisesta embedding ja suorittakaa haku palatasolla.
Kiinteän koon paloittelu
Yksinkertaisin tapa — jakakaa teksti aina N merkin tai tokenin välein:
def fixed_chunks(text, chunk_size=1000, overlap=200):
chunks = []
i = 0
while i < len(text):
chunks.append(text[i:i + chunk_size])
i += chunk_size - overlap
return chunks
sample_text = "A" * 2500
chunks = fixed_chunks(sample_text, chunk_size=1000, overlap=200)
print(f"Split {len(sample_text)} characters into {len(chunks)} chunks")
for i, c in enumerate(chunks):
print(f"Chunk {i+1}: {len(c)} chars")
Miksi limittää?
Limitys (yleensä 10–20 % palan koosta) varmistaa, että rajan ylittävä lause esiintyy kokonaisena vähintään yhdessä palassa. Ilman limitystä paloihin jakautunut tärkeä fakta ei ehkä ole haettavissa.
Lausepohjainen paloittelu
Jakakaa teksti lauserajojen kohdalta — älkää koskaan katkaisko lausetta keskeltä:
import re
def sentence_chunks(text, max_chars=1000):
sentences = re.split(r'(?<=[.!?])\s+', text)
chunks = []
current = ''
for s in sentences:
if len(current) + len(s) > max_chars and current:
chunks.append(current.strip())
current = s
else:
current += ' ' + s
if current:
chunks.append(current.strip())
return chunks
sample_text = "This is sentence one. This is sentence two! Is this sentence three? Yes it is."
chunks = sentence_chunks(sample_text, max_chars=40)
for i, c in enumerate(chunks):
print(f"Chunk {i+1}: {c!r}")
Rekursiivinen paloittelu (LangChain)
LangChainin RecursiveCharacterTextSplitter yrittää jakaa tekstin ensin kappalerajojen, sitten lauseiden ja lopuksi sanojen kohdalta — säilyttäen rakenteen mahdollisimman hyvin.
from langchain.text_splitter import RecursiveCharacterTextSplitter
splitter = RecursiveCharacterTextSplitter(
chunk_size=800,
chunk_overlap=100,
separators=['\n\n', '\n', '. ', ' ']
)
chunks = splitter.split_text(document)Semanttinen paloittelu
Jakakaa teksti kohdasta, jossa aihe vaihtuu. Toteutuksissa muodostetaan jokaisesta lauseesta embedding ja teksti jaetaan kohtiin, joissa peräkkäisten lauseiden embeddingit ovat kaukana toisistaan.
Laskenta on hitaampaa, mutta tuloksena syntyy aiheen kannalta yhtenäisiä paloja.
Markdown-tietoinen paloittelu
Markdown-dokumenteissa jakakaa teksti otsikkorajojen kohdalta, jotta osiot pysyvät yhdessä. Jokainen pala perii ylemmän tason otsikkonsa kontekstiksi.
Kooditietoinen paloittelu
Lähdekoodissa jakakaa teksti funktio- ja luokkarajojen, ei merkkimäärän, kohdalta. tree-sitterin kaltaiset työkalut mahdollistavat AST:n huomioivan paloittelun.
Palan koon valinta
Kompromissit:
- Pienet palat (noin 200 tokenia) — täsmälliset osumat, mutta enemmän hallittavia paloja
- Suuret palat (noin 1000 tokenia) — enemmän kontekstia osumaa kohden, mutta vähemmän täsmällisyyttä
Oletus: 500–800 tokenia ja 10–20 %:n limitys.
Metatietojen säilyttäminen
Liittäkää jokaiseen palaan metatiedot:
- Lähteen URL-osoite / tiedostopolku
- Sivunumero
- Dokumentin otsikko
- Osio / otsikko
- Luonti- ja päivitysaikaleimat
Metatiedot ovat hyödyllisiä suodatuksessa, lähdeviitteissä ja uudelleenjärjestämisessä.
Kontekstualisoidut palat
Uudempi tekniikka: lisätkää jokaisen palan alkuun LLM:n tuottama yhden rivin konteksti (esimerkiksi "Tämä pala on yrityksen vuoden 2024 toisen neljänneksen talousraportista ja käsittelee liikevaihtoa."). Tämä parantaa hakua 30–50 %.
Ylä- ja alapalat
Indeksoikaa pienet palat täsmällisiä osumia varten, mutta palauttakaa niiden SUUREMPI ylemmän tason kappale kontekstiksi:
- Muodostakaa lausetason paloista embeddingit
- Palauttakaa osuman löytyessä sen ylemmän tason 800 tokenin pala
Miksi limittää?
Miksi palat yleensä limittyvät 10–20 %?
Kertaus
Aloittakaa rekursiivisella merkkipohjaisella paloittelulla, jossa palan koko on noin 800 tokenia ja limitys 10 %. Lisätkää semanttista ja rakenteellista tietoisuutta tarpeiden kasvaessa.
Opi Tekoälyagentit tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 60
- Oppitunnit
- 239
Usein kysytyt kysymykset
Onko oppitunti ”Pilkontastrategiat (kiinteä, lausekohtainen, semanttinen)” ilmainen?
Kyllä – oppitunnin ”Pilkontastrategiat (kiinteä, lausekohtainen, semanttinen)” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Tekoälyagentit-kurssin, päivitä CoddyKit PROhon. Tekoälyagentit-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Pilkontastrategiat (kiinteä, lausekohtainen, semanttinen)”?
Tutustukaa kiinteän, lauseita huomioivan ja semanttisen pilkonnan kompromisseihin hakutulosten laadun kannalta. Harjoittelet Tekoälyagentit-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Tekoälyagentit-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Tekoälyagentit-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.
Kuinka kauan ”Pilkontastrategiat (kiinteä, lausekohtainen, semanttinen)”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Tekoälyagentit-oppitunnilla?
Kyllä. Jokainen Tekoälyagentit-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Mihin RAG ratkaisee ongelman (tietokatkos, hallusinaatiot)
- Pilkontastrategiat (kiinteä, lausekohtainen, semanttinen)
- Dokumenttijoukon indeksointi
- Yksinkertaisen RAG:n rakentaminen FAISSilla tai Chromalla