Tekstin jakajat ja upotukset
Hallitskaa tekniikat, joilla suuret dokumentit jaetaan hallittavan kokoisiin osiin ja niistä luodaan numeeriset upotukset semanttista hakua varten.
Tekstin jakajat ja upotukset on ilmainen Tekoälyagentit LangChainilla ja autonomiset työnkulut-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 LangChainilla ja autonomiset työnkulut-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Tekoälyagentit LangChainilla ja autonomiset työnkulut-kurssilla on yhteensä 4 oppituntia.
Miksi teksti kannattaa jakaa osiin ja upottaa vektoreiksi
Kun käsittelette suuria dokumentteja, niiden syöttäminen suoraan suurkielimallille (LLM) aiheuttaa usein ongelmia. Suurkielimalleilla on tiukat syöterajat, joita kutsutaan konteksti-ikkunoiksi.
Tässä oppitunnissa opitte valmistelemaan suuria tekstimääriä suurkielimalleja varten kahdella keskeisellä tekniikalla: tekstin jakamisella ja vektoriupotuksilla. Ne ovat välttämättömiä kehittyneiden tekoälyagenttien rakentamisessa.
Ongelma: pitkät dokumentit
Kuvitelkaa, että käytössänne on 100-sivuinen PDF-dokumentti. Jos yritätte kysyä suurkielimallilta jotain siihen liittyvää, ette voi lähettää koko dokumenttia sellaisenaan.
- Konteksti-ikkunan rajat: Suurkielimallit voivat käsitellä kerrallaan vain tietyn määrän tekstiä (esimerkiksi 4 000–128 000 tokenia).
- Kustannukset: Pidemmät syötteet merkitsevät suurempia API-kustannuksia.
- Relevanssi: Konteksti-ikkunan täyttäminen epäolennaisella tiedolla voi saada suurkielimallin unohtamaan tärkeät kohdat.
Tekstin jakaminen ratkaisee tämän pilkkomalla dokumentit pienempiin, hallittaviin osiin.
Tekstinjakajien esittely
LangChain tarjoaa erilaisia tekstinjakajia, joilla dokumentit voidaan jakaa tehokkaasti. Niiden tavoitteena on pitää semanttisesti toisiinsa liittyvät tekstiosat yhdessä ja noudattaa samalla kokorajoja.
Sen sijaan että teksti katkaistaisiin mielivaltaisen merkkimäärän kohdalta, älykkäät jakajat pyrkivät tekemään jaon loogisista kohdista, kuten kappaleiden tai virkkeiden välistä.
Yleinen ja monipuolinen jakaja on RecursiveCharacterTextSplitter.
Recursive Character Text Splitter
RecursiveCharacterTextSplitter on tehokas työkalu. Se yrittää jakaa tekstin merkkiluettelon avulla ja käy merkit läpi järjestyksessä, kunnes osat ovat riittävän pieniä.
- Ensin se yrittää jakaa merkkijonon
\n\n-kohdista (kappaleiden kaksinkertainen rivinvaihto). - Jos osat ovat edelleen liian suuria, se kokeilee merkkiä
\n(rivien yksittäinen rivinvaihto). - Sen jälkeen se kokeilee välilyöntejä ja lopuksi yksittäisiä merkkejä.
Tämä rekursiivinen lähestymistapa auttaa säilyttämään tekstin semanttisen yhtenäisyyden.
Koodi: yksinkertainen jakoesimerkki
Katsotaan, miten RecursiveCharacterTextSplitter toimii. Jaamme lyhyen kertomuksen osiin.
from langchain_text_splitters import RecursiveCharacterTextSplitter
story = (
"Alice was beginning to get very tired of sitting by her sister on the bank, "
"and of having nothing to do: once or twice she had peeped into the book her "
"sister was reading, but it had no pictures or conversations in it, 'and what "
"is the use of a book,' thought Alice 'without pictures or conversation?'"
"So she was considering in her own mind (as well as she could, for the hot "
"day made her feel very sleepy and stupid), whether the pleasure of making "
"a daisy-chain would be worth the trouble of getting up and picking the "
"daisies, when suddenly a White Rabbit with pink eyes ran close by her."
)
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=100,
chunk_overlap=0
)
chunks = text_splitter.split_text(story)
for i, chunk in enumerate(chunks):
print(f"Chunk {i+1}: {chunk}\n")Osan koko ja päällekkäisyys selitettynä
Tekstin jakamisen kaksi keskeistä parametria ovat chunk_size ja chunk_overlap:
- Osan koko: Tämä on kunkin osan merkkien (tai tokenien, jakajasta riippuen) enimmäismäärä. Valitkaa koko, joka mahtuu suurkielimallinne konteksti-ikkunaan.
- Osien päällekkäisyys: Tämä määrittää, kuinka monta merkkiä (tai tokenia) peräkkäiset osat jakavat keskenään. Päällekkäisyys auttaa säilyttämään kontekstin jakojen välillä ja varmistaa, ettei tärkeää tietoa katoa osien rajakohdissa.
Näiden parametrien sopivan tasapainon löytäminen on tehokkaan haun kannalta olennaista.
Koodi: jako päällekkäisyyden kanssa
Muokataan edellistä esimerkkiämme niin, että käytämme parametria chunk_overlap. Huomaatte, kuinka tekstin osia toistuu vierekkäisissä osissa ja muodostaa näin jatkumon.
from langchain_text_splitters import RecursiveCharacterTextSplitter
story = (
"Alice was beginning to get very tired of sitting by her sister on the bank, "
"and of having nothing to do: once or twice she had peeped into the book her "
"sister was reading, but it had no pictures or conversations in it, 'and what "
"is the use of a book,' thought Alice 'without pictures or conversation?'"
"So she was considering in her own mind (as well as she could, for the hot "
"day made her feel very sleepy and stupid), whether the pleasure of making "
"a daisy-chain would be worth the trouble of getting up and picking the "
"daisies, when suddenly a White Rabbit with pink eyes ran close by her."
)
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=100,
chunk_overlap=20 # Added overlap
)
chunks = text_splitter.split_text(story)
for i, chunk in enumerate(chunks):
print(f"Chunk {i+1}: {chunk}\n")Mitä tekstin vektoriupotukset ovat
Kun dokumentit on jaettu osiin, miten löydätte käyttäjän kyselyyn parhaiten sopivat osat? Tässä kohtaa tekstin vektoriupotukset tulevat mukaan.
- Vektoriupotus on tekstin numeerinen esitys eli vektori.
- Merkitykseltään samankaltaisten tekstien vektoriupotukset ovat moniulotteisessa avaruudessa "lähempänä" toisiaan.
- Tämän ansiosta voimme tehdä semanttista hakua: löytää kyselyn kanssa käsitteellisesti samankaltaisia osia pelkkien avainsanaosumien sijaan.
Vektoriupotukset muodostavat Retrieval Augmented Generation (RAG) -menetelmien perustan.
Vektoriupotusten luominen LangChainilla
LangChainilla vektoriupotusten luominen eri malleilla on helppoa. Käytätte Embeddings-objektia, joka piilottaa taustalla olevan mallin yksityiskohdat.
Suosittuja vektoriupotusmalleja ovat OpenAI:n, Hugging Facen ja Cohere:n mallit sekä monet avoimen lähdekoodin vaihtoehdot, kuten `all-MiniLM-L6-v2`.
Yleensä alustatte vektoriupotusmallin ja kutsutte sitten sen metodia embed_query() yksittäiselle tekstille tai metodia embed_documents() osien luettelolle.
Koodi: vektoriupotusten luominen
Näin luotte vektoriupotuksen yksinkertaiselle tekstille OpenAI:n vektoriupotusmallilla. Muistakaa, että tarvitsette OpenAI API -avaimen, jotta tämä toimii.
import os
# Set your OpenAI API key as an environment variable
# os.environ["OPENAI_API_KEY"] = "YOUR_API_KEY"
from langchain_openai import OpenAIEmbeddings
# Initialize the embedding model
# Requires OPENAI_API_KEY env var or direct pass
embeddings_model = OpenAIEmbeddings()
text_to_embed = "The quick brown fox jumps over the lazy dog."
# Generate the embedding vector
embedding_vector = embeddings_model.embed_query(text_to_embed)
print(f"Original Text: '{text_to_embed}'")
print(f"Embedding Vector (first 5 values): {embedding_vector[:5]}...")
print(f"Vector Dimension: {len(embedding_vector)}")Pikatarkistus: tekstin jakaminen ja vektoriupotukset
Tarkastelkaa seuraavia tekstin jakamista ja vektoriupotuksia koskevia väitteitä:
Kertaus: jakaminen ja vektoriupotus RAG-menetelmää varten
Olette oppineet kaksi perustavanlaatuista tekniikkaa suurten dokumenttien käsittelyyn tekoälyagenteissa:
- Tekstin jakaminen: Suurten tekstien pilkkominen pienemmiksi, hallittaviksi osiksi
RecursiveCharacterTextSplitter-työkalun kaltaisilla työkaluilla. Jakamista hallitaan parametreillachunk_sizejachunk_overlap. - Vektoriupotukset: Tekstiosien muuntaminen numeerisiksi vektoreiksi vektoriupotusmalleilla (esimerkiksi
OpenAIEmbeddings), jotta semanttinen samankaltaisuushaku on mahdollista.
Nämä tekniikat ovat ratkaisevan tärkeitä tehokkaiden Retrieval Augmented Generation (RAG) -järjestelmien rakentamisessa. Niiden avulla agentit voivat etsiä ja hyödyntää olennaista tietoa älykkäästi laajoista tietämyskannoista.
Opi Tekoälyagentit LangChainilla ja autonomiset työnkulut 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
- 12
- Oppitunnit
- 50
Usein kysytyt kysymykset
Onko oppitunti ”Tekstin jakajat ja upotukset” ilmainen?
Kyllä – oppitunnin ”Tekstin jakajat ja upotukset” 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 LangChainilla ja autonomiset työnkulut-kurssin, päivitä CoddyKit PROhon. Tekoälyagentit LangChainilla ja autonomiset työnkulut-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Tekstin jakajat ja upotukset”?
Hallitskaa tekniikat, joilla suuret dokumentit jaetaan hallittavan kokoisiin osiin ja niistä luodaan numeeriset upotukset semanttista hakua varten. Harjoittelet Tekoälyagentit LangChainilla ja autonomiset työnkulut-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Tekoälyagentit LangChainilla ja autonomiset työnkulut-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Tekoälyagentit LangChainilla ja autonomiset työnkulut-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.
Kuinka kauan ”Tekstin jakajat ja upotukset”-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 LangChainilla ja autonomiset työnkulut-oppitunnilla?
Kyllä. Jokainen Tekoälyagentit LangChainilla ja autonomiset työnkulut-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
- Dokumenttilataajien perusteet
- Tekstin jakajat ja upotukset
- Vektorivarastot tiedonhakuun
- Retrievert ja kontekstuaalinen tiivistäminen