Winnow ir šaltinių rinkimas be jokio chaoso

„Dirbtinio intelekto sistemos netampa pagrįstos vien todėl, kad kažkas nukopijavo krūvą puslapių. „Winnow“ kolekciją traktuoja kaip kontroliuojamą tiekimo...

Winnow ir šaltinių rinkimas be jokio chaoso

Popieriaus krūva nėra produktas

Yra tam tikra dirbtinio intelekto projektų rūšis, kuri prasideda entuziastingai ir baigiasi aplanku, pavadintu scrape-final-2-real-final. Komandai reikia pagrindo. Kažkas pasako, kad reikia surinkti šaltinius. Kažkas kitas suranda tikrinimo programą. Po savaitės yra tūkstančiai failų, trys CSV failai, užrašų knygelė, kuri veikia tik viename nešiojamajame kompiuteryje, ir nedidelė moralinė krizė dėl to, ar iš viso buvo leista surinkti pusę šaltinių.

Tragedija ta, kad visi norėjo gerai. Komanda nesiruošė sukurti duomenų pelkės. Jie norėjo geresnių atsakymų. Jie norėjo, kad modelis remtųsi tikrais šaltiniais. Jie norėjo, kad sistema nustotų skambėti kaip konsultantas po ketvirtojo skrydžio vėlavimo. Taigi jie rinko. Tada jie rinko daugiau. Tada jie atrado, kad rinkimas nėra tas pats, kas turėti šaltinius.

Šaltinių rinkimo sistema turi atsakyti į nuobodžius klausimus, kol prasideda protingas darbas. Iš kur tai atsirado? Ar tai buvo leista? Kada tai buvo gauta? Kokią būseną grąžino užklausa? Kas buvo išgauta? Kokia buvo turinio maišos suma? Kuris rinktuvas, paieškos maršrutas ar API tai sukūrė? Ar galime vėliau atkurti rinkimo politiką? Ar galime parodyti, kad privatūs tinklo diapazonai buvo užblokuoti ir dažnio apribojimai buvo gerbiami? Jei šių klausimų trūksta, šaltinių krūva yra tik krūva su pasitikėjimo problemomis.

Winnow egzistuoja tam mažiau patraukliam, bet naudingesniam sluoksniui. Tai „Rust“ duomenų rinkimo platforma ir CLI/biblioteka, skirta paieškai, nuskaitymui, tikrinimui, API rinkimui ir struktūrizuotai išvestims. Įdiegimas aprašo tekstą, JSON, JSONL, CSV ir HTML išvestis, robots politiką, dažnio apribojimus kiekvienam domenui, SSRF apsaugą ir struktūrizuotus rinkimo įrašus. Tai teisingas nuobodumas. Tikrintuvas nėra alkani burna. Tai kontroliuojamas įvedimas.

Rinkimas turėtų prasidėti politika, o ne apetitu. Šaltinio maršrutas nėra įvedimas, kol neperžengia vartų.

Šis skirtumas svarbus, nes AI pagrindimas yra tik toks geras, koks yra šaltinio kelias. Modelis gali cituoti pastraipą ir vis tiek būti operatyviai nenaudingas, jei niekas nežino, iš kur pastraipa atsirado, ar ji buvo aktuali, ar ją buvo leista naudoti, ar vėlesnis paleidimas gautų tą pačią medžiagą. Pagrindimas be kilmės įrodymų yra tik gražiau atrodantis gandas.

Rinkimas yra tiekimo grandinė

Žmonės supranta tiekimo grandines, kai kalbama apie dėžes. Tiekėjas siunčia dalis. Dalys turi partijų numerius. Yra sąskaitos faktūros, pristatymo datos, kokybės patikros, atšaukimai, auditai. Niekas rimtai nesako, kad sandėlis pilnas, todėl esame baigę. Kalbant apie informaciją, komandos staiga tampa mistiškos. Aplankas turi failus. Duomenų ežeras turi lenteles. Vektorinė saugykla turi dalis. Kažkaip tai turėtų reikšti tiesą.

Tai nereiškia. Šaltinių rinkimas taip pat yra tiekimo grandinė. Žaliava yra išorinė informacija. Ji atkeliauja maršrutais su skirtingu patikimumu, leidimais, vėlavimu, formatais ir gedimų režimais. Paieškos rezultatai nėra tas pats, kas API įrašai. Nuskaitytas puslapis nėra tas pats, kas archyvo momentinė kopija. Lentelės eksportas nėra tas pats, kas pateiktas HTML dokumentas. Traktuoti visa tai kaip tik turinį išlygina būtent tuos faktus, kurie vėliau daro turinį naudingą.

Naudinga Winnow pozicija yra ta, kad rinkimo metaduomenys keliauja kartu su ištrauka. Šaltinio URL svarbus. Laiko žyma svarbi. Būsena svarbi. Turinio maišos suma svarbi. Rinktuvo klasė svarbi. Išvesties formatas svarbus. Įrašas yra ne tik tekstas, kuris išėjo. Tai vokas aplink tekstą.

Ištrauka yra tik pusė istorijos. Vokas yra tai, kas leidžia komandai patikrinti, iš kur ištrauka atsirado.

Tas vokas vėliau leidžia vertintojui atskirti šaltinio kokybę nuo modelio kokybės. Jei atsakymas neteisingas, nes modelis ignoravo įrodymus, tai viena nesėkmė. Jei neteisingas, nes rinkimas ištraukė pasenusius puslapius, tai kita. Jei neteisingas, nes šaltinis buvo užblokuotas, bet tyliai praleistas, tai dar kita. Jei neteisingas, nes tikrinimo programa atsisiuntė prisijungimo puslapį ir laikė jį turiniu, sveikinu, jūs išradote labai brangų būdą cituoti slapukų juostą.

Geras šaltinių rinkimas nepalengvina viso vėlesnio darbo. Jis padaro nesėkmes diagnozuojamas. Tai jau didelis patobulinimas. Gamyboje diagnozuojamumas kiekvieną kartą nugali magiją. Magiškos demonstracijos sensta kaip pienas.

Atviras žiniatinklis nėra jūsų sandėlis

Daug scraper kultūros vis dar elgiasi taip, lyg žiniatinklis būtų nemokamas sandėlis su prastu apšvietimu. Siųsk užklausas, imk puslapius, išmesk HTML, judėk toliau. Toks požiūris jau buvo trapus. Dirbtinio intelekto sistemoms jis tampa beatodairiškas. Duomenys nėra tik peržiūrimi. Jie gali būti indeksuojami, apibendrinami, cituojami, naudojami sprendimams priimti arba tiekiami į darbo eigas, kurios gyvuoja ilgiau nei pats rinkimo momentas.

Taigi rinkimui reikia stabdžių. Robots politika nėra dekoratyvus tekstinis failas mandagiems žmonėms. Užklausų dažnio ribos nėra neprivalomos vien todėl, kad dujotiekis turi terminą. Privatūs tinklo diapazonai nėra įdomi atradimų proga. SSRF apsauga nėra paranoja. Tai skirtumas tarp rinkimo įrankio ir saugumo incidento su talismanu.

Winnow šaltinių pastabos dera prie šių apsaugų: robots numatytoji atsisakymo laikysena, užklausų dažnio ribos pagal domeną, SSRF apsauga, struktūrizuota išvestis. Tai nėra šalutinės funkcijos. Tai produkto riba. Įrankis, galintis gauti duomenis iš interneto be politikos sluoksnio, nėra galingas naudinga prasme. Tai įsipareigojimas su pralaidumu.

Tikrinimo programai reikia stabdžių, nes techninė aprėptis nėra tas pats, kas leidimas.

Čia Europos valdysena tampa labai konkreti. Ne šūkio prasme. Tikrąja veiklos prasme. Jei organizacija nori įrodymais pagrįsto dirbtinio intelekto, ji turi žinoti, kaip įrodymai pateko į sistemą. Ar rinkimas buvo leistas? Ar šaltiniai buvo traktuojami skirtingai pagal klasę? Ar įrašai buvo gauti iš vietų, kurias organizacijai leista apdoroti? Ar privatūs adresai buvo užblokuoti? Ar operatorius galėtų paaiškinti politiką neatlikdamas interpretacinio šokio prieš pirkimų skyrių?

Čia yra sausos ironijos. Nuobodūs tikrinimo programos nustatymai pasitikėjimui dažnai svarbesni nei modelio architektūra. Tai atrodo nesąžininga žmonėms, kurie mėgsta architektūros diagramas. Tai vis tiek tiesa. Jei įrodymai patenka prastai, modelis gali tapti tik elegantišku prasto įvedimo stiprintuvu.

Ištraukimas nėra kopijavimas

Dar viena dažna nesėkmė yra kopijavimo supainiojimas su ištraukimu. HTML atsisiuntimas nėra tas pats, kas naudingo turinio ištraukimas. Neapdorotame puslapyje yra naršymo elementai, slapukų juostos, reklama, susijusios nuorodos, poraštės šlamštas, scenarijai, išdėstymo fragmentai, o kartais ir tikrasis dalykas, dėl kurio atėjote, slepiasi taip, lyg būtų skolingas pinigų.

„Winnow“ išvestys svarbios, nes skirtingoms vėlesnėms užduotims reikia skirtingų formų. Tekstas skirtas skaitymui. JSON arba JSONL struktūrizuotoms eilutėms. CSV patogiems darbui su lentelėmis. HTML, kai svarbi pirminė struktūra. Esmė ne pasirinkti vieną šventą išvestį. Esmė padaryti išvestį aiškią ir tinkamą darbui.

Neapdoroti puslapiai yra įvestis. Naudingas rezultatas yra ištrauka kartu su forma, kurios reikia kitam etapui.

Tai tampa kritiška, kai šaltiniai maitina paiešką, gavimą ar žinių valdymą. Modelis neturėtų turėti nuspręsti, ar nuoroda poraštėje yra įrodymas. Gavimo sistema neturėtų indeksuoti kiekvieno slapukų reklamjuosčio taip, lyg tai būtų politikos pareiškimas. Duomenų vamzdynas neturėtų optimistiškai paversti puslapio maketo faktų lentele. Ištraukimas yra vieta, kur šaltinis tampa artefaktu, kurį gali naudoti kitos sistemos, nenešdamos visų tinklalapio šiukšlių kartu.

Tačiau ištraukimas taip pat turi būti sąžiningas. Valymas nėra perrašymas. Normalizavimas nėra išradinėjimas. Šablono teksto pašalinimas nėra teiginio keitimas. Jei ištraukėjas nemato skirtumo, į jį reikėtų žiūrėti su tokiu pat įtarimu kaip į pardavėją, vartojantį žodį be pastangų. Mažomis dozėmis gerai, pavojinga prie biudžeto.

Kodėl tai turi būti prieš gavimą

Gavimo sistemos kaltinamos dėl daugelio problemų, kurios prasidėjo anksčiau. Indeksas grąžina prastus kandidatus, todėl komanda derina reitingavimą. Citatos silpnos, todėl kažkas keičia skaidymą. Modelis skamba neaiškiai, todėl kažkas prideda raginimo instrukciją, turinčią šaldytuvo magneto emocinę galią. Kartais gavimo sluoksnis iš tikrųjų yra problema. Dažnai rinkimo sluoksnis tyliai apnuodijo patiekalą dar prieš prasidedant reitingavimui.

Jei šaltiniai ateina be vokų, gavimas negali jų paaiškinti vėliau. Jei trūksta laiko žymų, šviežumas tampa spėjimu. Jei būsenos kodai ignoruojami, gedimas atrodo kaip nebuvimas. Jei trūksta turinio maišų, pokyčių aptikimas tampa folkloru. Jei ištraukimo kokybė labai svyruoja, reitingavimas tampa signalo ir šablono teksto varžybomis.

Todėl „Winnow“ natūraliai yra prieš tokias sistemas kaip „BitWeave“, „Spindle“, „Fabric“ ar bet kurį šaltiniu pagrįstą dirbtinio intelekto produktą. Tai ne samprotavimo sluoksnis. Tai ne žinių grafas. Tai ne vartotojo sąsaja. Tai įvedimo disciplina, nusprendžianti, ar vėlesni sluoksniai gauna pagrįstą medžiagą, ar vaiduoklių palėpę, pilną žiniatinklio fragmentų.

Ši tvarka svarbi. Pirmiausia rinkite su politika. Apgaubkite kiekvieną šaltinį kontekstu. Ištraukite į aiškias formas. Tada indeksuokite, cituokite, analizuokite, sertifikuokite arba apibendrinkite. Jei tvarka apverčiama, komanda baigia poliruoti atsakymus ant nežinomos įvesties. Taip brangi nesąmonė gauna gražią sąsają.

Skaičiai mažiau svarbūs nei sutartis

„Winnow“ turi didelį rinktuvų, paieškos integracijų, API įrašų ir svetainei pritaikytų ištraukimo galimybių katalogą. Tikslūs skaičiai skiriasi tarp šaltinio momentinių kopijų, o tai normalu aktyviai besikeičiančiam rinkimo paviršiui ir neverta paversti vieša poezija. Svarbus ne didvyriškas skaičius. Svarbi sutartis.

Ar įrankis gali rinkti iš kelių maršrutų klasių? Ar gali išvesti struktūrizuotus formatus? Ar gali taikyti saugos ribas? Ar gali nešti šaltinio metaduomenis? Ar gali būti naudojamas kaip biblioteka ar CLI? Ar komanda gali patikrinti, kaip šaltinis pateko į sistemą? Tai klausimai, kurie išlieka po tikro diegimo.

Skaičiai vilioja, nes atrodo konkretūs. Tačiau kolekcijos infrastruktūrai netinkamas skaičius gali nukreipti dėmesį nuo tikrosios garantijos. Tūkstantis aplaidžių rinkėjų yra blogiau nei mažesnis rinkinys su tinkama politika, vokais ir išvesties sutartimis. Subrendęs klausimas yra ne kiek galite nuskaityti. Subrendęs klausimas yra ką galite apginti po to, kai nuskaitėte.

Pamoka

„Winnow“ pamoka yra ta, kad šaltinių rinkimas nėra tikrasis AI sistemos įžanga. Tai yra tikrosios AI sistemos dalis. Atsakymas, kurį mato vartotojas, priklauso nuo to, kas pateko, kaip pateko, kas buvo išgauta, koks kontekstas išliko ir kurie nesaugūs maršrutai buvo užblokuoti. Toks darbas nusipelno inžinerijos, o ne savaitgalio scenarijaus su herojišku kintamojo pavadinimu.

„Winnow“ yra naudingas, nes į rinkimą žiūri kaip į kontroliuojamą įvedimą: šaltinio maršrutai, politikos vartai, saugumo ribos, struktūruota išvestis ir šaltinio vokai. Jis nepadaro kiekvieno šaltinio patikimo. Jis padaro šaltinio kelią pakankamai matomą, kad likusi sistemos dalis galėtų elgtis kaip suaugęs žmogus.

Tai yra sausa tiesa, slypinti po didžiąja dalimi įžeminto AI darbo. Prieš modeliui cituojant šaltinį, prieš paieškai reitinguojant kandidatą, prieš „Spindle“ patvirtinant atomą, prieš „Fabric“ rodant puslapį už atsakymo, kažkas turi surinkti medžiagą nesukurdamas netvarkos. Neįspūdinga. Labai būtina. Šiek tiek kaip vandentiekis, išskyrus tai, kad kai jis prateka, visi tai vadina AI haliucinacija.

Taigi taip, rinkite šaltinius. Tačiau nepainiokite krūvos su rinkiniu arba tikrinimo su valdymu. Naudingas klausimas yra ne tai, kaip greitai įrankis gali suėsti žiniatinklį. Naudingas klausimas yra tai, ar organizacija vis dar gali paaiškinti, ką suėdė, kodėl tai buvo leista, kas išėjo ir ar kita sistema turėtų tuo pasitikėti.