
„LangChain“ ar „LlamaIndex“: pasirinkimą lemia agentas arba dokumentų paieška

Jei didžiausias sistemos darbas yra įkelti dokumentus, juos indeksuoti ir rasti atsakymui reikalingas ištraukas, pradėkite nuo „LlamaIndex“: „LlamaIndex“ RAG dokumentacijoje aprašyti indeksavimo, paieškos ir kelių duomenų šaltinių jungimo būdai. Jei svarbiausia valdyti įrankius naudojančio agento veiksmus, pradėkite nuo „LangChain“ ir prireikus „LangGraph“: „LangChain“ mokomieji keliai apima agentą ir detaliau valdomą „LangGraph“ RAG procesą.
Ši pasirinkimo riba nėra funkcijų draudimas. „LangChain“ turi dokumentų paieškos kelią, o „LlamaIndex“ gali valdyti agentus. Sprendimą lemia tai, kurioje grandinės dalyje komanda turės priimti daugiau savų sprendimų: kaip paruošti ir surasti duomenis ar kaip parinkti kitą veiksmą, iškviesti įrankį ir tęsti nutrūkusią užduotį. Kai abi dalys sudėtingos, jų nereikia priverstinai sutalpinti į vieną karkasą.
Riba tarp paieškos ir agento
RAG sistemoje dokumentai paruošiami prieš gaunant naudotojo klausimą. Turinys įkeliamas, suskaidomas, susiejamas su šaltiniu ir indeksuojamas. Gavus klausimą, paieška atrenka tinkamas ištraukas, kurios perduodamos atsakymą kuriančiam modeliui. Šios grandinės kokybė priklauso nuo to, ar prireikus randama teisinga dokumento vieta, o ne vien nuo to, ar modelis sugeba sklandžiai parašyti atsakymą.
Agentas sprendžia, ką daryti toliau. Jis gali pasirinkti paiešką, kviesti kitą funkciją, panaudoti jos rezultatą ir tęsti užduotį. Jei paieška tėra vienas iš kelių įrankių, vien patogus dokumentų indeksavimas neapibrėžia visos architektūros. Tuomet svarbūs leistini veiksmai, jų vykdymo tvarka, klaidų apdorojimas ir vietos, kuriose reikia žmogaus sprendimo.
Šią ribą parodo sąlyginis pavyzdys. Techninės dokumentacijos klausimų sistema pirmiausia turi surasti tinkamą vadovo ištrauką. Sistema, kuri po paieškos dar kreipiasi į užsakymų duomenis ir tik tada pasiūlo veiksmą, papildomai turi valdyti įrankių seką. Abiem atvejais gali būti naudojamas RAG, tačiau svarbiausios priežiūros problemos skiriasi.
Kada svarbiausias dokumentų įkėlimas
„LlamaIndex“ yra pagrįstas atspirties taškas, kai sunkiausia dalis prasideda dar prieš užklausą. PDF failai, skirtingos dokumentų versijos ir keli šaltiniai reikalauja nuspręsti, ką laikyti paieškos vienetu. Per mažos ištraukos gali prarasti kontekstą; per didelės gali užgožti tikslų atsakymą. Karkaso komponentai padeda sudėti šią grandinę, bet šiuos sprendimus vis tiek turi priimti sistema kurianti komanda.
Naudinga atskirai apibrėžti, kas nutinka atnaujinus šaltinį. Nauja dokumento versija turi patekti į indeksą, o pasenęs turinys neturėtų būti grąžinamas kaip galiojantis atsakymo pagrindas. Ištrauka taip pat turi išsaugoti ryšį su pradiniu dokumentu: be jo sunku parodyti, kuo atsakymas remiasi. Jei naudojami prieigos apribojimai, filtrai turi veikti paieškos metu, prieš turinį perduodant modeliui.
Vertinant šį pasirinkimą verta matuoti paieškos rezultatą atskirai nuo sugeneruoto atsakymo. Tas pats modelis gali įtikinamai suformuluoti tekstą ir tada, kai jam perduota netinkama ištrauka. Naudingesni klausimai yra konkretūs: ar grąžinama reikalinga dokumento vieta, ar išlaikoma jos kilmė, ar pakeistas šaltinis laiku atsispindi rezultate. Taip galima nustatyti, ar daugiausia nuosavo kodo iš tikrųjų tenka duomenų paruošimui.
Hibridinė paieška ir jos ribos
Jei užklausose pasitaiko tikslių kodų, retų terminų ir klausimų, išreikštų kitais žodžiais nei dokumente, vieno paieškos būdo gali neužtekti. Raktažodžių ir semantinės paieškos rezultatus galima jungti bei perrikiuoti. „LlamaIndex“ paieškos modulių apraše pateikiami BM25 hibridinės paieškos, rezultatų jungimo ir perrikiavimo keliai.
Tačiau hibridinės paieškos palaikymas savaime nereiškia, kad ji duos geresnį atsakymą. Rezultatas priklauso ir nuo duomenų saugyklos, ištraukų dydžio, metaduomenų filtrų bei to, kaip sujungiami skirtingų metodų radiniai. Kai paiešką jau atlieka turima saugykla, papildomas karkaso sluoksnis gali suteikti mažiau naudos negu ten, kur komandai dar reikia sukurti visą užklausų grandinę.
Sąžiningam palyginimui abiem variantams reikia to paties dokumentų rinkinio, tų pačių klausimų ir vienodų prieigos taisyklių. Verta atskirai vertinti rastų ištraukų tinkamumą, šaltinio atsekamumą ir atsakymo delsą. Jei keičiasi ir karkasas, ir saugykla, ir teksto skaidymas, vien iš galutinio rezultato nebus aišku, kuris pakeitimas padėjo. Tai ypač svarbu, kai projektas turi jau veikiančią paieškos infrastruktūrą.
Kada agentui reikia daugiau kontrolės
„LangChain“ ir „LangGraph“ labiau tinka kaip pagrindas, kai užduoties vertę kuria ne viena paieška, o kelių veiksmų eiga. Agentui gali tekti nuspręsti, kurį įrankį kviesti, panaudoti atsakymą kitame žingsnyje ir sustoti, jei trūksta duomenų. Kuo daugiau tokių perėjimų, tuo svarbiau aiškiai apibrėžti, ką agentas gali daryti ir kur jo veiksmą turi patvirtinti žmogus.
Ilgiau trunkančiam procesui atskiras klausimas yra būsena. „LangGraph“ būsenos saugojimo aprašas skiria vienos gijos kontrolinius taškus nuo duomenų, naudojamų tarp gijų; kontroliniai taškai gali padėti tęsti nutrūkusią eigą. Produkcinėje aplinkoje būtina pasirinkti patvarų saugojimo būdą, nes vien operatyviojoje atmintyje laikomi kontroliniai taškai dingsta procesą paleidus iš naujo.
Vis dėlto agento poreikis savaime nereikalauja antro karkaso. „LlamaIndex“ agentų vadovas aprašo „FunctionAgent“, kelių agentų „AgentWorkflow“ ir individualius procesus; užklausų mechanizmas gali būti agento įrankis. Jei produktas jau remiasi „LlamaIndex“ paieška, o agentui užtenka paprasto įrankio pasirinkimo, papildoma orkestravimo priklausomybė gali tik padidinti priežiūros darbą.
Kada jungti abu karkasus
Jungimas pagrįstas tada, kai dokumentų paruošimas bei paieška ir agento veiksmų valdymas abu reikalauja savarankiškos architektūros. Tokiu atveju „LlamaIndex“ gali grąžinti paieškos rezultatą, o „LangChain“ ar „LangGraph“ naudoti jį kaip vieno įrankio atsakymą. Ribą tarp dalių verta nusakyti tiksliai: kokia ištrauka perduodama, kaip nurodomas jos šaltinis ir ką įrankis grąžina, jei tinkamo turinio neranda.
Komandos pasirengimas keičia šio sprendimo kainą. Jei jau veikia patikima dokumentų paieška, agento pridėjimas nebūtinai yra priežastis ją perrašyti. Jei agento eiga valdoma gerai, bet kiekvienam naujam dokumentų šaltiniui reikia daug specialaus kodo, verta atskirai keisti įkėlimo ir indeksavimo dalį. Dviejų karkasų derinys naudingas tuomet, kai aiški riba sumažina kiekvienos dalies sudėtingumą, o ne vien praplečia naudojamų bibliotekų sąrašą.
- Jei daugiausia darbo tenka dokumentų įkėlimui, atnaujinimui, indeksavimui ir ištraukų paieškai, pradėkite nuo „LlamaIndex“.
- Jei svarbiausia įrankių seka, žmogaus patvirtinimas ir atkuriama agento būsena, pradėkite nuo „LangChain“ bei „LangGraph“.
- Jei abi dalys sudėtingos, laikykite paiešką aiškiai apibrėžtu agento įrankiu ir vertinkite kiekvieną grandinę pagal jos pačios rezultatą.
Taip pat skaitykite:
Susiję straipsniai


RAG ar modelio derinimas: naujoms žinioms reikia ne to paties sprendimo

RAG skaidinių dydis: daugiau konteksto gali įnešti daugiau triukšmo

RAG bazės atnaujinimas: naujas laukas senų vektorių nepakeičia

„Notion“ ar „Airtable“: pigesnė vieta dokumentams, brangesnė – duomenims

RPA ar DI agentas: greitesnis sukūrimas dar nereiškia patikimesnio proceso
Prenumeruokite mūsų naujienlaiškį
Gaukite naujausias Web3, DI ir kriptovaliutų naujienas tiesiai į savo el. pašto dėžutę.