Tekoälyagentit · Oppitunti

Pilkontastrategiat (kiinteä, lausekohtainen, semanttinen)

Tutustukaa kiinteän, lauseita huomioivan ja semanttisen pilkonnan kompromisseihin hakutulosten laadun kannalta.

Oppitunti 2/414 vaihetta

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:

  1. Muodostakaa lausetason paloista embeddingit
  2. 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.

Aloita maksutta

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

  1. Mihin RAG ratkaisee ongelman (tietokatkos, hallusinaatiot)
  2. Pilkontastrategiat (kiinteä, lausekohtainen, semanttinen)
  3. Dokumenttijoukon indeksointi
  4. Yksinkertaisen RAG:n rakentaminen FAISSilla tai Chromalla
← Takaisin: Tekoälyagentit