Navigazzjoni prinċipali

Eżempji prattiċi ta’ soluzzjonijiet RAG apposta

Eżempji reali juru kif sistemi mfassla apposta ta’ ġenerazzjoni miżjuda bl-irkupru jsolvu problemi kumplessi tal-għarfien fl-intrapriżi.

Illum il-ġurnata, ir-RAG kultant għandu reputazzjoni ħażina, jew għax in-nies issa jaħsbu li huwa għalkollox trivjali (faċli biex tibda, iżda mhux daqshekk faċli biex tespandih) jew għax jaħsbu li qabżuh is-“sistemi aġentiċi” (li f’ħafna każijiet, jekk tħares ftit taħt il-wiċċ, malajr jibdew jixbhu ħafna lir-RAG…).

Dan il-blog jippreżenta eżempju prattiku jew tnejn biex juri kif nindirizzaw xi sfidi komuni, jiġifieri:

  • L-immaniġġjar ta’ data mħallta ta’ test u numri u għaliex dan ifixkel RAG sempliċi: il-kliem ewlieni jaħbat u n-numri m’għandhomx tifsira semantika.

  • Għaliex jgħin li l-embeddings jitfasslu abbażi tas-sommarju: iġġenera sommarju deskrittiv qasir għal kull biċċa, imbagħad oħloq l-embedding u fittex permezz tiegħu.

  • Kif tiġġenera sommarji kuntestwali: inkludi l-kuntest tad-dokument ewlieni biex statistika b’għamla simili tibqa’ distinta.

  • Meta għandek tiddependi fuq il-kodiċi u l-mudelli Pydantic: fejn il-kontenut kelma b’kelma huwa importanti, għaqqad kodiċi apposta u/jew mudell Pydantic ma’ sejħiet lil LLM biex tiżgura l-affidabbiltà.

Il-bini ta’ soluzzjonijiet RAG apposta

Il-prinċipji bażiċi

Is-sistemi RAG iħaddmu kollox minn bots tal-appoġġ sa assistenti interni tal-għarfien.

Minn wara l-kwinti, normalment:

  1. Aqsam f’biċċiet id-dokumenti tas-sors tiegħek

  2. Ikkonverti kull biċċa f’embedding fi spazju vettorjali

  3. Irkupra l-aqwa K biċċiet meta ssir il-mistoqsija

  4. Iġġenera tweġiba bbażata fuq dawk il-biċċiet

Settijiet ta’ għodod popolari—LangChain, LlamaIndex u l-Filestore ta’ OpenAI—jagħmlu dawn il-passi kważi trivjali. Iżda f’pipelines reali se tiltaqa’ ma’ data li mhijiex biss test dens, u RAG bażiku jista’ jsibha diffiċli. Fit-taqsimiet li ġejjin se nuru eżempji konkreti ta’ sfidi marbuta mad-data u nibnu s-soluzzjoni gradwalment hekk kif tiżdied il-kumplessità.

Meta l-affarijiet isiru aktar ikkumplikati

  1. Meta d-data tiegħek mhijiex biss test (ħaġa pjuttost komuni)

Ikkunsidra l-biċċa data li ġejja f’kuntest ta’ logħob:

JSON

{ "Attack": { "Range": { "default": 5, "with_Draconic_Ascension": 5.5, }, "Speed": { "default": "2 seconds", "with_Draconic_Ascension": "2.2 seconds", }, "Damage": { "default": 10, "with_Draconic_Ascension": 12, } }} 

L-embeddings jaħdmu bis-saħħa tar-relazzjonijiet li tgħallmu bejn il-kliem permezz tat-tifsira semantika u l-grammatika. Fid-data ta’ hawn fuq għandna taħlita ta’ test u numri li, barra minn dan il-kuntest preċiż, ma għandhom l-ebda rabta mal-kliem. Għalhekk nistgħu ngħidu li din il-biċċa data hija essenzjalment taħlita ta’ kliem kemxejn deskrittiv segwit minn numri każwali.

Dan ma jkunx problema kieku din kienet l-unika tip ta’ data li għandna, għax xorta nistgħu nirkuprawha permezz tal-embeddings tal-ftit kliem deskrittiv disponibbli (jew sempliċement nużaw text-to-SQL). Iżda x’jiġri jekk din il-biċċa tkun midfuna fost ħafna biċċiet mimlijin test fejn jidher ukoll l-istess kliem? Pereżempju:

JSON

{"Draconic_Ascension": { "description": "Transform into dragon form. Attack range and speed are increased by 10%, damage is boosted by 20%.", "details": { "activation_conditions": "Can only be activated when HP is below 50%or Fury meter is full.", "visual_effects": "Wings unfurl, scales shimmer with embers, voice lines change to echoing growls.", "lore": "An ancient bloodline awakens. The bearer of the mark channels the soul of the last Flamewing Wyrm, becoming a living storm of fire and fury." } }}

Issa immaġina li rridu nirkupraw “What is the attack range with Draconic Ascension?” Wisq probabbli ma nkunux nistgħu nirkupraw il-biċċa rilevanti li rridu, għax tintilef fost l-istorbju ta’ biċċiet oħra li fihom l-istess kliem ewlieni.

Il-problema ewlenija hija li ma nistgħux niddistingwu sew bejn dawn il-biċċiet ta’ data, minkejja li fihom tipi differenti ta’ informazzjoni dwar l-istess suġġett. Nistgħu b’xi mod narrikkixxu jew intejbu dan? Dażgur li nistgħu:smile:

  1. Arrikkixxi d-data tiegħek billi tiġborha fil-qosor—iva, qrajt sew

Minflok noħolqu embedding direttament mill-biċċa, l-ewwel nistgħu niġġeneraw sommarju li jiddeskrivi d-data, imbagħad noħolqu embedding u nirkupraw abbażi tas-sommarju. Fl-istadju tal-ġenerazzjoni xorta nużaw id-data oriġinali marbuta mas-sommarju.

Għalhekk, għaż-żewġ eżempji ta’ biċċiet murija hawn fuq, niġġeneraw sommarji bħal dawn:

  1. Statistika dwar il-firxa, il-veloċità u l-ħsara tal-attakk (awtomatikament u b’Draconic Ascension).

  2. Deskrizzjoni u dettalji ta’ Draconic Ascension, inklużi l-kundizzjonijiet tal-attivazzjoni, l-effetti viżivi u l-ġrajja fl-isfond.

Imbagħad intejbu wkoll il-mistoqsija biex tkun “allinjata” mas-sommarju. Pereżempju, nibdlu “What is the attack range with Draconic Ascension?” għal “What is the statistics of attack range with Draconic Ascension?” Dan huwa partikolarment importanti meta l-mistoqsija għall-irkupru tiġi minn utenti barra mill-oqsma tekniċi li jistaqsu bi ~~“stil liberu”~~ lingwaġġ uman normali, għax fl-aħħar mill-aħħar la jafu u lanqas jimpurtahom kif jaħdem RAG biex jimmassimizza l-preċiżjoni u r-recall.

Dijagramma li turi meta l-affarijiet isiru aktar ikkumplikati.

  1. Tiżolax l-affarijiet mill-kuntest tagħhom (prinċipju li jgħodd għall-ħajja b’mod ġenerali)

Xenarju ieħor huwa meta jkollna ħafna biċċiet ta’ data li jidhru l-istess, bħal dawn:

Plain Text

# Chunk one{ "Attack": { "Range": { "default": 9, }, ... }}# Chunk two{ "Attack": { "Range": { "default": 6, }, ... }}# Chunk three{ "Attack": { "Range": { "default": 7, }, ... }}

Jekk inżommu l-istess approċċ, immaġina li nistaqsu “what is character X’s attack range?” Inkunu qed nilagħbu logħba ta’ raden ibbażata fuq ix-xorti b’dawn is-sommarji li għadna kemm iġġenerajna, għax anki huma jkunu jixbhu ħafna lil xulxin. Allura kif nistgħu niddistingwu bejniethom?

It-tweġiba sempliċi hi li nipprovdu l-kuntest. Nistgħu sempliċement ninkludu fil-biċċa data referenza għad-dokument ewlieni tagħha, pereżempju {”character”: “X”} f’dan il-każ. B’hekk inkunu nistgħu nirkupraw b’mod preċiż id-data t-tajba għall-karattru X, anki meta jkollna l-istess data għall-karattri Y u Z.

Madankollu, approċċ aħjar u aktar ġeneralizzabbli jkun li niġġeneraw sommarju kuntestwali tal-biċċa. Jiġifieri, minflok niġġeneraw sommarju tal-biċċa data biss, nistgħu ngħaddu kemm id-dokument ewlieni kif ukoll il-biċċa biex tiġi ġġenerata ġabra kuntestwali ġenerali. Fis-sommarju nispjegaw kif din il-biċċa tidħol fid-dokument ewlieni tagħha, pereżempju:

  1. Din il-biċċa tipprovdi statistika dettaljata dwar … għall-karattru X. Il-biċċa tidħol fid-dokument sħiħ billi turi s-saħħa ta’ X fil-veloċità tal-attakk…

  2. Din il-biċċa tipprovdi statistika dettaljata dwar … għall-karattru Y. Il-biċċa tidħol fid-dokument sħiħ billi turi l-istatistika msaħħa ta’ Y bl-abbiltà speċjali tagħha…

  3. Din il-biċċa tipprovdi statistika dettaljata dwar … għall-karattru Z. Il-biċċa tidħol fid-dokument sħiħ billi turi l-istatistika ta’ Z, li tagħmlu adattat sew bħala tank fil-logħbiet tat-tim…

Dan il-metodu (li huwa parzjalment ispirat minn Anthropic) jista’ jidher esaġerat għall-eżempju ta’ hawn fuq. Madankollu, huwa effettiv ħafna għal biċċiet li jistgħu jiġu interpretati ħażin “barra mill-kuntest”, u jipprovdi approċċ wieħed li jaħdem għall-biċċiet kollha filwaqt li jżomm pipeline tal-inġinerija pulita.

Dijagramma li turi meta l-affarijiet isiru aktar ikkumplikati.

  1. Meta jkollok tkun ~~ossessjonat bil-kontroll~~ rigoruż

Normalment nirċievu d-data f’partijiet sħaħ u naqsmuha f’biċċiet għal sistema RAG. F’dan l-eżempju nuru xi ħaġa kemxejn differenti—data li nqasmet f’biċċiet ħżiena: taqsimiet każwali minn biċċa loġika li fil-fatt jeħtieġ li jerġgħu jinġabru flimkien. Biċċa loġika hija kontenut li naturalment għandu jibqa’ flimkien, bħal sottotaqsima ta’ dokument jew paragrafu koerenti.

Dijagramma li turi meta l-affarijiet isiru aktar ikkumplikati.

Fl-ewwel tentattiv tagħna b’din id-data, nagħtu kollox lil sejħa LLM u nitolbuha tiġbor il-biċċiet kif jidhrilha xieraq, imbagħad tirritorna l-kontenut miġbur. LLM għandu jkun kapaċi jagħmel dan sew, hux? Sewwa, iva u le.

Sibna, anki f’diversi okkażjonijiet oħra, li l-LLMs għandhom it-tendenza li jieħdu l-eħfef triq u ma jkunux affidabbli meta teħtieġ il-kontenut sħiħ u preċiż, speċjalment meta l-kuntest ikun twil. U dan jinftiehem perfettament. Iżda għal dan il-każ speċifiku din kienet problema deċiżiva, għax għandna bżonn il-kontenut eżatt kelma b’kelma—mingħajr sommarji u mingħajr ma tinqabeż ebda parti mill-kontenut oriġinali. Ma nistgħu nitilfu l-ebda dettall.

U naturalment il-parti tal-“iva” kienet li fehem tajjeb ħafna s-semantika u l-istrutturi tal-biċċiet maqsumin. Sakemm ma jirrifjutax li jirrepeti l-kontenut eżatt. X’dwejjaq:/

Allura kif nistgħu nużaw dak li LLM jagħmel tajjeb, filwaqt li nevitaw dak li fih mhuwiex affidabbli? Erġajna dorna lejn il-ħabib antik u fidil tagħna, il-kodiċi (jiġifieri funzjoni Python apposta). U mudell Pydantic “li ma jistax ikun aktar sempliċi”. Din hija s-soluzzjoni:

  • Għaddi mit-taqsimiet waħda waħda filwaqt li żżomm biċċa loġika kurrenti

  • Għal kull taqsima, staqsi lil LLM: din it-taqsima tagħmel parti mill-biċċa loġika kurrenti? Wieġeb iva jew le (skont il-mudell Pydantic).

  • Jekk iva, żid it-taqsima mal-biċċa; jekk le, oħroġ il-biċċa loġika kurrenti għax tkun kompluta, imbagħad ibda waħda ġdida bit-taqsima.

Dijagramma li turi meta l-affarijiet isiru aktar ikkumplikati.

Naturalment qed nużaw ftit aktar tokens minn pass wieħed fuq il-kontenut sħiħ, iżda għall-każ speċifiku fejn il-prijorità ewlenija hija li jinżamm il-kontenut eżatt, l-ispiża addizzjonali żgħira kienet tiswa ferm.

Din hija soluzzjoni sempliċi ħafna, iżda ssegwi prinċipju importanti: meta tkun meħtieġa r-rigorożità, ma rridux niddependu biss fuq l-LLMs, għax fl-aħħar mill-aħħar huma probabilistiċi.

Kodiċi u funzjonijiet apposta flimkien ma’ mudelli Pydantic jistgħu jintużaw biex jinkiseb riżultat prevedibbli u affidabbli, filwaqt li xorta nisfruttaw il-kapaċitajiet tal-LLMs.

Nagħlqu hawn

Il-bini ta’ soluzzjoni tal-IA ġenerattiva huwa sfida tal-inġinerija daqskemm huwa sfida tal-IA. Nittamaw li dawn l-eżempji ispirawk biex tindirizza l-isfidi uniċi tiegħek. Biex taqra aktar dwar soluzzjonijiet tal-IA ġenerattiva li jagħtu prijorità lill-inġinerija, ara l-artiklu tagħna dwar it-tfassil ta’ sistemi aġentiċi bbażati fuq router.

Awtur

Cynthia Yu