Stup

Pitanje koje je svaki put propadalo, dok konačno nije

Ovaj proizvod testiramo oštrije nego što bi većina ljudi uopće testirala alat koji ne prodaje. Ne zato što uživamo pronalaziti vlastite bugove, nego zato što je tvrdnja da “AI stvarno poznaje vaš posao” bezvrijedna ako nitko nije provjerio vrijedi li to pod stvarnim pritiskom.

Jedno pitanje uporno je padalo. Ne skoro točno, ne mutno, nego suho “Nemam te podatke.”

Pitanje, i koliko je puta propalo

“Predloži hibridni paket usluga, utemeljen na onome što je stvarno funkcioniralo.”

Neku verziju ovoga postavili smo kroz tri zasebna simulacijska runa AlphaForgea, potpuni test vertikale za odvjetničke urede i test vertikale za uređenje okoliša. Svaki put, na staroj metodi dohvata: neka verzija “Nemam zapise u Riznici koji pokazuju koje su kombinacije funkcionirale.”

Frustrirajući dio nije bio to što je propalo. Nego to što informacija stvarno nije nedostajala. Riznica je imala opći zapis o cijenama. Imala je i konkretan zapis o ishodu. Samo ih nikad nije povezala, jer je metoda dohvata u pozadini radila pretraživanje po ključnim riječima uživo kod svake poruke, do četrdeset zasebnih pretraga baze podataka po pitanju, a pretraživanje po ključnim riječima ne zna da “palete busena” i “pokrivenost paletama” govore o istoj stvari.

Što smo zapravo promijenili

Ne ono što Riznica pohranjuje. Nego kako se pretražuje.

Svaki zapis u Riznici sada se pretvara u embedding, brojčani prikaz svog stvarnog značenja, u trenutku kad je napisan, a ne u trenutku kad netko o njemu postavi pitanje. Dohvat je postao jedno pretraživanje najbližeg susjeda nad tim prikazom, umjesto pretraživanja cijele Riznice od nule kod svake poruke. Riječ je o istoj bazi podataka, Postgresu, na istoj instanci koju smo već imali, uz ekstenziju napravljenu točno za ovo. Nema nove kategorije infrastrukture. Samo drukčiji način pronalaženja onoga što je već bilo tu.

Do toga se došlo stvarnim, nimalo glamuroznim inženjerskim radom o kojem se u ovakvim objavama obično ne piše: provjerom koji AI provideri uopće nude embedding endpoint (nemaju ga svi), dizajnom prilagođenim svakom klijentu (tenant-aware) tako da se koristi vlastiti konfigurirani provider svake tvrtke umjesto jednog ključa za cijelu platformu, i uistinu sitničavim bugom gdje su embeddinzi jednog providera trebali eksplicitnu normalizaciju prije nego što bi usporedbe udaljenosti uopće bile matematički valjane. Testirali smo i pet kandidata za model na stvarnom pitanju prije nego što smo odabrali jedan, i pritom otkrili nešto vrijedno samo po sebi: najbrža opcija bila je deset do petnaest puta brža od najsporije, uz nula razlike u kvaliteti odgovora na točno ono brojčano pitanje na kojem smo je testirali.

Ponovljeni test

Isti klijent. Isto pitanje. Stara metoda, pa nova, jedna za drugom.

Stari odgovor: “Nemam zapise u Riznici koji pokazuju koje su kombinacije funkcionirale.”

Novi odgovor, potvrđen kroz logove da je stvarno koristio novi put dohvata, ne slučajno: stvaran, konkretan prijedlog, imenovane usluge, stvaran klijent naveden imenom, izračunata ukupna vrijednost, obrazloženje vezano uz to kako stvarno teče rad te tvrtke. Ne blago poboljšana verzija starog ne-odgovora. Potpuno drukčiji ishod, na pitanju koje je identično propadalo, svaki put, kroz cijeli program testiranja do tog trenutka.

Ono što nećemo glumiti

Pošten trošak pokazao se odmah, pa ga izvještavamo, a ne uljepšavamo. Naknadna obrada embeddinga za već veliku Riznicu, preko tisuću zapisa, trajala je gotovo pet minuta, neugodno blizu tvrde granice timeouta zahtjeva. Kod uistinu zrele Riznice, dubine nekoliko tisuća zapisa, ista jednokratna naknadna obrada vjerojatno bi negdje usput pala. To sad znamo jer smo to izmjerili, ne zato što nagađamo. Riječ je o stvarnom, označenom sljedećem koraku, ne o nečemu što smo isporučili i tiho se nadali da nitko neće naletjeti na to.

Broj koji stoji iza svega ovoga

Ova jedna usporedba prije-poslije samo je jedan test unutar mnogo većeg programa: otprilike dvadeset pet simuliranih godina poslovne aktivnosti kroz nekoliko industrija, preko devet tisuća stvarnih zapisa u Riznici nastalih usput, jedanaest stvarnih bugova pronađenih i ispravljenih, među njima i ovaj propust u dohvatu. Ukupna stvarna potrošnja na API za cijeli višemjesečni program: 9,57 USD.

Radije ćemo vam pokazati pitanje koje je pet puta zaredom propalo, i točno što je trebalo da bi se popravilo, nego da krenemo s upečatljivim brojem i nadamo se da nitko neće pitati što zapravo stoji iza njega.

Pitanja koja ljudi stvarno postavljaju

Je li AI-u stvarno nedostajala informacija, ili je problem bio u pretraživanju?

Problem u pretraživanju, potvrđeno izravno. Svaka činjenica potrebna za odgovor na pitanje već je bila u Riznici. Stara metoda dohvata koristila je pretraživanje po ključnim riječima uživo, pa pitanje s riječju ‘palete’ ne bi pouzdano pronašlo zapis napisan s riječju ‘paleta’, a šire sintezno pitanje ne bi pouzdano povezalo dva srodna, ali drukčije formulirana zapisa. Znanje je bilo tu. Pretraga ga jednostavno nije pronalazila.

Što se zapravo promijenilo?

Zapisi u Riznici sada se pretvaraju u embedding, brojčani prikaz njihova značenja, u trenutku kad su napisani. Dohvat je postao jedno pretraživanje najbližeg susjeda nad tim prikazom, umjesto pretraživanja ključnih riječi uživo kroz cijelu Riznicu kod svake poruke. Isto temeljno znanje. Potpuno drukčiji način da ga se pronađe.

Kako znate da je poboljšanje stvarno, a ne jednokratna sreća?

Ponovili smo identično pitanje na identičnom klijentu, prvo pretraživanje po ključnim riječima, zatim vektorsko pretraživanje, i usporedili rezultate. Provjerili smo i pošten trošak: latenciju, vrijeme naknadne obrade pri velikom obujmu podataka i stvaran rizik koji smo pronašli (jednokratna naknadna obrada velike Riznice približava se granici timeouta zahtjeva), umjesto da izvještavamo samo o pobjedi.

Pridružite se Early Crew →← Natrag na sve tekstove

Recorded on a live database and a live screen, but run by automated scripts standing in for a human's clicks and typing, not performed live. When Stark answers faster than the script expects, the screen can hold still for a beat before the next step starts. That's left in on purpose. The goal was never a polished demo reel, it was proof the feature actually works. Dejan's own verdict, after watching the raw footage: rough, but the best demo video we've made.