Kitengo 3 / 11

Chunking na Maandalizi ya Hati

Faida:

  • Tathmini kwa nambari ukubwa wa sehemu, mwingiliano na upatanishi wa kisemantiki
  • Kuchagua mkakati unaofaa wa kugawanya aina tofauti za hati (PDF, meza, msimbo, logi ya gumzo)
  • Imarisha ubora wa urejeshaji na uchujaji kwa kuongeza metadata kwa kila kipande

Hii ndiyo hatua iliyopuuzwa zaidi lakini muhimu zaidi katika RAG: jinsi unavyochanganua hati. Hii inaitwa chunking. Hata ikiwa utatoa hati sawa kwa mfano huo huo, kwa sababu ya chunking mbaya urejeshaji hurudisha kipande kibaya na mfano hautatoa jibu kubwa kamwe. Katika kitengo hiki, tunashughulikia mikakati ya kugawanyika, jinsi ya kuzibadilisha kulingana na aina ya hati, na jinsi ya kuongeza metadata muhimu kwa kila kipande.

Kwa Nini Tunapasua?

Kuna sababu tatu. Kwanza, miundo ya kupachika hubadilisha maandishi hadi urefu fulani kuwa vekta yenye maana; Ikiwa sura nzima ya kurasa 40 imesongamana kwenye vekta moja, maana yake inakuwa "fifi." Pili, tunataka kuupa mfano sehemu tu inayohitajika kama muktadha; kukabidhi hati nzima ni ghali na inasumbua. Tatu, ili kurejesha kuwa sahihi, kitengo cha utafutaji lazima kiwe kidogo na kinazingatia.

Kwa hivyo chunk ndio kitengo kidogo zaidi cha urejeshaji. Haipaswi kuwa kubwa sana au ndogo sana - sawa tu.

Ukubwa wa Chunk na Mizani ya Kuingiliana

Kuna mipangilio miwili kuu: saizi ya chunk (ni ishara/maneno ngapi yatakuwa kwenye kipande) na kuingiliana (sehemu iliyoshirikiwa na vipande vya jirani).

Visehemu vidogo sana (k.m. tokeni 100): vimelenga lakini vimetenganishwa na muktadha. Anasema "kwa siku 14", lakini siku 14 ni nini imesalia katika sentensi iliyotangulia. Vipande vikubwa sana (k.m. tokeni 2000): huhifadhi muktadha lakini nyuzi nyingi zimechanganywa; upachikaji huchanganyikiwa na mada zisizo na maana huungana.

Kuingiliana hutatua tatizo la mpaka. Iwapo sentensi itaangukia kwenye mpaka wa sehemu mbili, basi hugawanyika mara mbili bila kuingiliana na maana yake hupotea. Kuingiliana kwa tokeni 50-100 huhakikisha kwamba taarifa inayoanguka ndani ya kikomo inabakia katika angalau sehemu moja.

Ukubwa wa chunk

Faida

Hasara

maudhui yanayofaa

Ndogo (ishara 100-250)

Unyeti wa juu, umakini

Muktadha unaweza kuvunjika

Maswali Yanayoulizwa Mara kwa Mara, makala fupi, ufafanuzi

Wastani (ishara 300-600)

Mizani; matukio mengi

-

Taratibu, maandishi ya sera

Kubwa (ishara 800-1500)

Uadilifu wa muktadha

upachikaji wa ukungu

Maelezo, maelezo marefu

Kidokezo: Ikiwa hujui wapi kuanza, anza na 400-500 token chunk na 50-80 ishara kuingiliana; kisha pima na urekebishe na data yako mwenyewe. Saizi ya "kulia" sio ya ulimwengu wote, inategemea muktadha.

Mikakati ya Chunking

Ukubwa usiobadilika: Hupunguza maandishi kila tokeni za N. Ni rahisi na ya haraka, lakini inaweza kukatiza katikati ya sentensi.

Kitenganishi (kirudishi/kitenganishi): Hugawanya kulingana na aya na kisha mipaka ya sentensi; Inahifadhi vyema uadilifu wa maana. Mifumo mingi ya uzalishaji huanza na hii.

Mgawanyiko wa kisemantiki: Huangalia upachikaji wa sentensi na kuzigawanya pale ambapo mabadiliko ya somo hutokea. Ni njia bora zaidi lakini ya gharama kubwa zaidi; Kwa kiasi kikubwa, gharama za manunuzi huongezeka.

Kufahamu Muundo: Hutumia muundo wa hati kama vile vichwa, sehemu, majedwali. Kwa mfano, kugawanya hati ya Markdown kwa vichwa huhakikisha kwamba kila sehemu ina kichwa chake.

Kurekebisha kwa Aina ya Hati

Sio kila hati ni sawa. Mkakati hutofautiana kwa aina:

  • Maandishi ya PDF/sera: Kulingana na alamisho, saizi ya wastani. Futa marudio ya juu/chini ya ukurasa (kichwa/kijachini).
  • Majedwali: Usiondoe mstari nje ya muktadha; weka kila safu iliyo na maelezo ya kichwa ("Kipengee: X, Bei: Y, Hisa: Z"). Kubadilisha jedwali ghafi kuwa maandishi wazi mara nyingi ni muhimu.
  • Msimbo: Mgawanyiko kwa kazi / mipaka ya darasa; Usikatize kipengele cha kukokotoa.
  • Kurekodi kwa gumzo/tiketi: Gawanya kwa ujumbe au mazungumzo pande zote; Dumisha ufahamu wa nani alisema nini.

vipande # vya msingi wa mabano (dhana) = bol( maandishi, target_size=450, # token overlap=70, # tokeni mabano=["\n\n", "\n", ". ", " "] # aya ya kwanza, neno mwisho)

Ongeza Metadata kwa Kila Wimbo

Chunking sio "kugawa" tu; ni kutajirisha kila kipande. Kila lebo unayoambatisha kwenye wimbo ina thamani ya uzito wake kwa dhahabu kwa kuchuja siku zijazo na kutaja chanzo.

# Enriched chunk (conceptual){ "text": "Likizo ya malipo ya kila mwaka ni siku 14 na miaka 1-5 ya huduma...", "metadata": { "source": "ik_el_kitabi_v7.pdf", "section": "5.2 Likizo ya Mwaka", "page": 23, "date": "6:202:5de" "ndani"}}

Mbinu nyingine yenye nguvu ni kuongeza kichwa cha muktadha: kuandika kichwa cha sura inayomilikiwa mwanzoni mwa kila kipande. Kwa hivyo, hata kipande kisichounganishwa kama "Kwa siku 14" kinapachikwa vyema na kina maana zaidi kama "Likizo ya Kila Mwaka - siku 14."

Chunking dhaifu / Chunking Nguvu

Dhaifu (njia ngumu kipofu, hakuna metadata):

Punguza maandishi kwa kila herufi 1000. Weka maandishi pekee.# Matokeo: majedwali yamegawanywa katikati, "siku 14" hubaki bila muktadha,# haijulikani ilitoka hati gani, hakuna kichungi kinachoweza kufanywa.

Nguvu (kufahamu muundo + kichwa + metadata):

Gawanya hati kwa vichwa; ongeza kichwa cha sehemu kwa kila sehemu; ambatisha chanzo, ukurasa, tarehe na metadata ya faragha; badilisha safu mlalo hadi maandishi wazi kwa vichwa vyake.# Matokeo: yanalenga, ya muktadha, yanayoweza kuchujwa, yanayoweza kupatikana.

Kesi Tatu Ndogo

Kesi ya 1 - Maafa ya uchoraji. Timu ya fedha iligawanya orodha ya bei ya kurasa 200 na kukata ngumu; safu mlalo za jedwali ziligawanywa bila mpangilio. "Bei ya bidhaa X ni nini?" Mfano huo ulisoma mstari usio sahihi na ulitoa bei mbaya (kesi 9 kati ya 12 sio sawa). Nilipobadilisha safu mlalo za jedwali kuwa maandishi wazi katika umbizo la "Bidhaa: ... | Bei: ... | Kitengo: ..." hitilafu ilipungua hadi 0 kati ya 12.

Kesi ya 2 - Chunk kubwa sana. Katika wiki, kila ukurasa umeundwa na kipande kimoja (wengine wanasema ishara 3,000). Upachikaji umetiwa ukungu kwa sababu kuna "kuondoka", "muda wa ziada" na "mshahara" kwenye ukurasa mmoja; Sehemu ya saa za kazi pia ilianza kutumika kuhusu swali la likizo. Wakati kurasa ziligawanywa katika ukubwa wa kati kwa kichwa, recall@5 iliongezeka kutoka 64% hadi 91%.

Kesi ya 3 - Sentensi iliyokatwa bila kuingiliana. Tokeni 250 zilizokatwa kwa timu ya wanasheria, hakuna mwingiliano. Ufafanuzi muhimu ulianguka kwenye mpaka wa sehemu mbili na kugawanywa katika mbili; Hakuna moja au nyingine iliyo na jibu kamili. Wakati mwingiliano wa tokeni 60 ulipoongezwa, ufafanuzi uleule ulibakia katika kipande kimoja na jibu sahihi lilirejeshwa.

Makosa ya kawaida

  • Kata isiyobadilika kipofu: Hugawanya sentensi na meza katikati; maana imepotea.
  • Kuacha mwingiliano kwa sifuri: Taarifa inayoangukia kwenye mpaka imegawanywa na kupotea.
  • Sio kuongeza metadata: Uchujaji na onyesho la chanzo huwa haliwezekani.
  • Kuacha meza mbichi: Mfano hauwezi kutatua muundo wa meza; Badilisha mistari kuwa maandishi wazi.
  • Kuweka mkakati mmoja: PDF, msimbo na jedwali hazijagawanywa kwa njia sawa; Badilisha kwa aina.
Tahadhari: Usiweke Chunking mara moja na kuisahau. Pima upya ubora wa kurejesha aina mpya za hati zinapowasili (tiketi kutoka kwa mfumo mpya, PDF zilizochanganuliwa). Data mbaya ya ingizo inamaanisha mwitikio mbaya ("takataka ndani, takataka nje").

Kwa muhtasari

  • Chunk ni kitengo kidogo zaidi cha kurejesha; Sio kubwa sana au ndogo sana - inapaswa kuwa na usawa kulingana na maudhui.
  • Ukubwa wa chunk unaonyesha usawa wa muktadha wa kuzingatia; Muingiliano hudhibiti upotezaji wa mipaka.
  • Ugawaji wa msingi wa mabano na ufahamu wa muundo ndio mahali pa kuanzia kwa mifumo mingi ya kizazi; semantic chunking ni bora lakini ghali.
  • Aina kama vile jedwali, hati, na gumzo zinahitaji mikakati yao wenyewe; Badilisha majedwali kuwa maandishi wazi.
  • Ongeza metadata ya chanzo/tarehe/sura/faragha na kichwa cha sehemu kwa kila wimbo; Huu ndio msingi wa kuchuja na kunukuu.

Jukumu la maombi

Vunja sehemu ya hati unayochagua kwa njia tatu tofauti: (1) vipande vidogo vya tokeni 200, (2) vipande vya kati vya tokeni 500 (kuingiliana kwa ishara 70), (3) vipande vikubwa moja. Uliza maswali 3 sawa kwa kila mkakati, uweke alama kwa mikono ni kipande gani cha kuleta, na uandike sababu ya mkakati gani unafaa zaidi kwa hati hiyo. Kisha ongeza angalau sehemu nne za metadata na "kichwa cha sura" kwa kila wimbo. Ikiwa hati ina jedwali, badilisha safu mlalo ya jedwali kuwa maandishi wazi katika umbizo la "uga:thamani".

orodha ya ukaguzi

  • [ ] Ninaweza kusema kuwa chunk ndio sehemu ndogo zaidi ya urejeshaji na saizi ni usawa wa muktadha wa kuzingatia.
  • [ ] Ninajua kwa nini Muingiliano huzuia upotevu wa mipaka.
  • [ ] Ninaweza kutofautisha kati ya utengano wa msingi wa mabano, kisemantiki na ufahamu wa muundo.
  • [ ] Ninaweza kurekebisha mkakati wa jedwali, msimbo na gumzo.
  • [ ] Ninaimarisha urejeshaji kwa kuongeza metadata na kichwa cha sura kwenye kila wimbo.