Monimutkaisten dokumenttirakenteiden käsittely
Toteuttakaa strategioita, joilla tietoa pilkotaan ja haetaan tehokkaasti monimutkaisista dokumenteista, kuten taulukoista tai sisäkkäisistä osioista.
Monimutkaisten dokumenttirakenteiden käsittely on ilmainen LLM-sovellukset tuotannossa (RAG + vektoritietokanta + välimuisti)-oppitunti CoddyKitissä. Tämä on oppitunti 3/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 LLM-sovellukset tuotannossa (RAG + vektoritietokanta + välimuisti)-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. LLM-sovellukset tuotannossa (RAG + vektoritietokanta + välimuisti)-kurssilla on yhteensä 4 oppituntia.
Pelkkää tekstiä pidemmälle: monimutkaiset dokumentit
RAG-järjestelmiä rakennettaessa käsittelemme usein dokumentteja, jotka eivät ole vain yhtenäistä perustekstiä. Tällaisia ovat esimerkiksi talousraportit, tieteelliset artikkelit ja oikeudelliset sopimukset.
Näissä dokumenteissa on usein taulukoita, sisäkkäisiä osioita (kuten lukuja ja alalukuja) sekä muita monimutkaisia rakenteita. Tavallisilla tekstin pilkkomismenetelmillä on usein vaikeuksia näiden kanssa: ne rikkovat kontekstin ja heikentävät haun tehokkuutta.
Taulukot: RAG:n haaste
Taulukot ovat hyvä esimerkki monimutkaisista rakenteista. Ne esittävät tiedot jäsennellyssä, ruudukkomaisessa muodossa, jossa rivien ja sarakkeiden väliset suhteet ovat ratkaisevan tärkeitä.
- Kadonnut konteksti: Yksinkertainen merkkeihin perustuva pilkkoja voi jakaa taulukkorivin kahtia ja erottaa arvon sen otsikosta, jolloin lohkosta tulee merkityksetön.
- Heikot upotukset: Ilman asianmukaista kontekstia taulukon osista luodut upotukset eivät välttämättä kuvaa tietoja tarkasti.
Taulukoiden huomioivat pilkkomisstrategiat
Taulukoiden tehokkaaseen käsittelyyn tarvitsemme erityisiä strategioita:
- Poiminta: Tunnista taulukot ja poimi ne erillisiksi kokonaisuuksiksi.
- Sarjallistaminen: Muunna taulukot LLM:lle sopivampaan tekstimuotoon, kuten Markdowniksi tai rakenteiseksi JSON:ksi, ja säilytä niiden väliset suhteet.
- Tiivistäminen: Luo erittäin suurista taulukoista tiivis yhteenveto upotusta varten ja linkitä se koko taulukkoon.
Näin LLM saa taulukosta täyden ja merkityksellisen kontekstin.
Taulukkotietojen poiminta (Python)
Tässä on yksinkertainen Python-esimerkki, joka näyttää, miten merkkijonona esitettyä taulukkoa voidaan käsitellä ja muuntaa jäsennellymmäksi rivien luetteloksi.
import csv
import io
def process_table_string(table_str):
# Use StringIO to treat the string as a file
f = io.StringIO(table_str)
reader = csv.reader(f, delimiter='|')
rows = []
for i, row in enumerate(reader):
# Strip whitespace and filter empty strings
cleaned_row = [item.strip() for item in row if item.strip()]
if cleaned_row and i > 0: # Skip header line
rows.append(cleaned_row)
return rows
if __name__ == "__main__":
data = """
Name | Age | City
-------|-----|--------
Alice | 30 | New York
Bob | 24 | London
Charlie| 35 | Paris
"""
processed_data = process_table_string(data)
for row in processed_data:
print(row)Sisäkkäisten dokumenttien ymmärtäminen
Dokumenteilla on usein luontainen hierarkia. Ajattele kirjaa, jossa on lukuja, osioita ja aliosioita. Jokainen osa rakentuu edellisen varaan, ja sen merkitys liittyy usein ylemmän tason kontekstiin.
Tavallinen pilkkominen voi erottaa aliosion sen pääosion otsikosta, jolloin haettu lohko on ilman oikeaa kontekstia vähemmän informatiivinen tai jopa hämmentävä.
Dokumentin hierarkian säilyttäminen
Sisäkkäisten rakenteiden tehokkaaseen käsittelyyn käytämme hierarkkista pilkkomista:
- Semanttiset rajat: Kiinteiden merkkimäärien sijaan pilko loogisten jakojen, kuten otsikkotasojen (H1, H2, H3), perusteella.
- Ylemmän tason konteksti: Sisällytä ylemmän tason osion otsikko alemman tason lohkoon. Esimerkiksi lohko osiosta ”2.1” voisi alkaa tekstillä ”Luku 2: Johdanto – osio 2.1: Aihe”.
- Metatiedot: Tallenna koko polku tai hierarkiataso lohkon metatietoihin.
Osioihin perustuva pilkkominen (Python)
Tämä Python-esimerkki havainnollistaa yksinkertaista tapaa jakaa dokumentti lohkoihin Markdown-tyylisten otsikoiden perusteella. Jokainen lohko sisältää yhden osion sisällön.
def chunk_by_headings(document_text):
lines = document_text.split('\n')
chunks = []
current_chunk = []
current_heading = ""
for line in lines:
if line.startswith('# '): # Main heading
if current_chunk:
chunks.append({'heading': current_heading, 'content': '\n'.join(current_chunk).strip()})
current_heading = line.strip()
current_chunk = [line]
elif line.startswith('## '):
# Sub-heading, can be part of the current chunk, or signal a new sub-chunk
# For simplicity, we'll just add it to the current chunk content here
# More advanced logic might create nested chunks or separate entries
current_chunk.append(line)
else:
current_chunk.append(line)
if current_chunk:
chunks.append({'heading': current_heading, 'content': '\n'.join(current_chunk).strip()})
return chunks
if __name__ == "__main__":
doc = """
# Chapter 1: Introduction
This is the introduction text.
## Section 1.1: Background
More details about the background.
# Chapter 2: Methods
Here we describe the methods used.
## Section 2.1: Data Collection
How data was collected.
"""
document_chunks = chunk_by_headings(doc)
for i, chunk in enumerate(document_chunks):
print(f"--- Chunk {i+1} ---")
print(f"Heading: {chunk['heading']}")
print(f"Content snippet: {chunk['content'][:50]}...")
print()Metatiedot rikkaampaa kontekstia varten
Metatiedot ovat lohkoon liitettyjä lisätietoja, jotka kuvaavat sitä olematta osa lohkon päätekstiä. Ne ovat erittäin tehokkaita monimutkaisten dokumenttien käsittelyssä.
- Dokumentin otsikko: Mistä lähdedokumentista tämä lohko on peräisin?
- Sivunumero: Miltä kohdalta alkuperäistä dokumenttia tämä löytyi?
- Ylemmän tason osio/luku: Mihin laajempaan kontekstiin tämä lohko kuuluu?
- Taulukon tunniste: Jos kyseessä on taulukko, mikä taulukko se on?
Metatiedot mahdollistavat kohdennetun suodatuksen haun aikana ja tarjoavat LLM:lle arvokasta kontekstia.
Yksivektorihakua pidemmälle
Hyvin monimutkaisessa sisällössä yksinkertaiset tekstilohkot eivät välttämättä riitä. Monivektorihaku on edistynyt tekniikka, jossa samasta sisällöstä luodaan erityyppisiä upotuksia.
Voit esimerkiksi upottaa taulukosta pienen ja tiiviin yhteenvedon nopeaa hakua varten ja tallentaa koko yksityiskohtaisen taulukon erikseen. RAG-järjestelmä hakee yhteenvedon ja noutaa relevantissa tapauksessa koko taulukon välitettäväksi LLM:lle.
Monimutkaisten dokumenttien testi
Olet tutustunut erilaisiin strategioihin monimutkaisten asiakirjarakenteiden käsittelyyn RAG-järjestelmissä. Testataan seuraavaksi ymmärrystäsi.
Kertaus: monimutkaisten asiakirjojen hallinta
Onnittelut! Olet tutustunut keskeisiin strategioihin monimutkaisten asiakirjarakenteiden käsittelyyn RAG-järjestelmissä.
- Näimme, miten taulukot voivat menettää asiayhteytensä tavallisessa pilkkomisessa, ja opimme poimimaan ja sarjallistamaan ne.
- Käsittelimme sisäkkäisiä asiakirjoja ja hierarkkisen pilkkomisen merkitystä suhteiden säilyttämisessä.
- Lopuksi korostimme metadatan hyötyä pilkottujen osien rikastamisessa ja täsmällisemmän haun mahdollistamisessa.
Kun sovellat näitä tekniikoita, RAG-järjestelmäsi voi tuottaa tarkempia ja asiayhteyteen paremmin sopivia vastauksia jopa kaikkein monimutkaisimmista asiakirjoista!
Opi LLM-sovellukset tuotannossa (RAG + vektoritietokanta + välimuisti) 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
- 48
Usein kysytyt kysymykset
Onko oppitunti ”Monimutkaisten dokumenttirakenteiden käsittely” ilmainen?
Kyllä – oppitunnin ”Monimutkaisten dokumenttirakenteiden käsittely” 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 LLM-sovellukset tuotannossa (RAG + vektoritietokanta + välimuisti)-kurssin, päivitä CoddyKit PROhon. LLM-sovellukset tuotannossa (RAG + vektoritietokanta + välimuisti)-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Monimutkaisten dokumenttirakenteiden käsittely”?
Toteuttakaa strategioita, joilla tietoa pilkotaan ja haetaan tehokkaasti monimutkaisista dokumenteista, kuten taulukoista tai sisäkkäisistä osioista. Harjoittelet LLM-sovellukset tuotannossa (RAG + vektoritietokanta + välimuisti)-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni LLM-sovellukset tuotannossa (RAG + vektoritietokanta + välimuisti)-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin LLM-sovellukset tuotannossa (RAG + vektoritietokanta + välimuisti)-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.
Kuinka kauan ”Monimutkaisten dokumenttirakenteiden käsittely”-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ä LLM-sovellukset tuotannossa (RAG + vektoritietokanta + välimuisti)-oppitunnilla?
Kyllä. Jokainen LLM-sovellukset tuotannossa (RAG + vektoritietokanta + välimuisti)-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
- Kyselyiden uudelleenkirjoitus ja uudelleenjärjestäminen
- Monivaiheiset ja agenttipohjaiset RAG-mallit
- Monimutkaisten dokumenttirakenteiden käsittely
- Itse kyselyitä muodostavat retrieverit ja lähdeviitteet