Zaposleni u ByteDance-u: zavidi susednom timu na Doubao-u, sada sa Feishu-om, AI kancelarijski scenario moze ponovo da se bori protiv DingTalk+Qwen i WorkBuddy+WeCom-a, performanse nece biti niske (uz pitanja sa intervjua za Agent)
Zanemarimo restrukturiranja velikih kompanija.
Bez sumnje, reci cu vam na najslicniji i najmanje zaobilazan nacin.
Licno sam tezak korisnik Feishu-a, koristim ga od januara ove godine. Zato sto mnogi blogeri preporucuju Feishu-ove visedimenzionalne tabele, na primer moj dobar prijatelj Cang He. Zato sam kasnije, kada modifikujem biografiju, obrazovnu pozadinu, iskustvo iz prakse, iskustvo na projektima sve belezio, vec preko 1000 stavki.

Ali kao sto vidite, Feishu-ove AI sposobnosti su prilicno slabe, kada treba da prepozna 985, 211, inostrani master, cesto pogresno prepozna, zato mislim da bi ovim spajanjem Feishu-ove AI sposobnosti mogle da se popnu jos jedan nivo.
Uz to, moram prijateljski da podsetim, kada komentarisete pokusajte da budete suzdrzani, ja cu brisati. 😄
Ipak, pravne timove velikih kompanija ne mogu sebi da priuste da ih izazovem.
Za Agent-a, mislim da su ToB scenariji zaista bolji za zaradu od ToC.
Korisnici na B strani barem imaju volju da placaju; na C strani ljudi rade besplatno, zar to nije bolje za njih? Za naplatu i monetizaciju, osim ako vas Agent nije nezamenljiv, napravljen kao Codex i Claude Code.
Zato ste i videli, Agent-i velikih kompanija se snabdevaju u dva pravca, jedan je Coding, drugi je Work.
Spajanje Doubao-a i Feishu-a sigurno je jer zele da idu jos jedan korak dalje na Work nivou.
I vi pokusajte da se priblizite ova dva pravca, samo priblizavanjem najpopularnijim pravcima vasa vrednost moze biti maksimizovana, pa mozete da zauzmete mesto u AI eri.
Ako ste neko ko veruje u napore, veruje u proces, veruje u korak po korak, veruje da moze da zauzme mesto u AI eri, onda sledeca teska ispovest intervjua, nadam se da cete je ozbiljno procitati.

(Ceo tekst je prilicno intenzivan, garantujem da cete nauciti mnogo, vezite sigurnosne pojaseve, idemooo.)
content
01. Objasni arhitekturu Claude Code-a?
Stari Wang je odgurnuo naocare, bacio pogled na biografiju, a kada je podigao glavu imao je onu radoznalost karakteristicnu za mlade intervjuere. „Da prvo pricamo o necem laksim, kako obicno otklanjas greske u kodu?”
„Terminal Agent se uglavnom oslanja na logove i trace zapise. Za svaki cvor ulaz i izlaz, rezultat poziva alatke, vreme trajanja imaju snapshot, kada se pojavi problem iz trace-a se korak po korak vraca unazad.”
„U redu.” Stari Wang podize solju caja i otpi gutljaj. „Da li si u skoro vreme pratio neki novi AI sadrzaj?”
„U AI krugovima je zivo, DeepSeek V4 zvanična verzija je objavljena, GLM-5.2 se moze pretplatiti, Seedance 2.5 je opet evoluirao, GPT-5.6 je takode snizio cenu, uglavnom vrlo zivo. Ja licno takode stalno radim na terminal Agent-u, stalno nadogradujem i iteriram, slicno Claude Code-u, prilicno je zanimljivo.”

https://github.com/itwanger/PaiCLI-Python
Stari Wang-u je bljesnulo u ocima. „Mozes li da pricepas o arhitekturi Claude Code-a?”

„Najgore je Harness, kontrolni sloj. On upravlja onim sto Agent sme i ne sme da radi — kontrola dozvola, upravljanje kontekstom, pristup sistemu datoteka, MCP protokol konekcija, sve spada pod Harness. Dizajn Harness-a odreduje granice bezbednosti i granice sposobnosti celog Agent-a.”
„U sredini je Agent Loop, odnosno ReAct petlja. LLM prima kontekst, odlucuje da li je sledeci korak poziv alatke ili direktan odgovor korisniku. Svaki krug petlje je jedan razmisljaj, delaj, posmatraj.”
„Najnizi sloj su Tools, konkretne izvrsne sposobnosti. Citanje datoteka, pisanje datoteka, pokretanje komandi, pretraga koda, svaka alatka ima nezavisnu definiciju ulaza i izlaza.”
„Podela rada izmedu tri sloja je jasna. Harness upravlja pristupom, Agent Loop upravlja odlukama, Tools upravlja izvrsenjem.”
Prsten na prstenjaku Stari Wang-a bljesnuo je pod svetlom, okrenuo je nekoliko stranica biografije. „Inzenjerskih stvari na sloju Harness-a ima veoma mnogo, predlazem da kasnije to detaljnije dopunis. U biografiji si napisao dva Agent projekta, izaberi jedan da pricepas?”
02. Ukratko o tvom Agent projektu?
„Tri projekta, jedan je PaiCLI, jedan je PaiAgent, jedan je Pai Congming.”
„PaiAgent je platforma za orkestraciju AI Agent radnih tokova, zasnovana na LangGraph4j i Spring AI. Jezgro su dva izvrsna engine-a — DAG engine ide sekvencijalno izvrsavanje cvorova, pogodan za procese sa fiksnim koracima; LangGraph engine ide graf stanja, podrzava uslovne grane i petlje, pogodan za scenarije koji zahtevaju dinamicko odlucivanje.”

„Agent cvor podrzava ReAct petlju, mogu se montirati alatke, prikljuciti baze znanja, citati i pisati memoriju. Izmedu više cvorova se podaci prenose tokom stanja.”
„Pai Congming je RAG baza znanja, zasnovana na Elasticsearch hibridnoj pretrazi, podrzava kombinovano bodovanje vektorske pretrage i pretrage po kljucnim recima, koristi se da Agent-u obezbedi eksterno znanje.”
03. Kakva je konkretna implementacija kratkorocne memorije?
Stari Wang se nagnuo napred. „Upravo si rekao da Agent podrzava memoriju, kako je konkretno implementirana kratkorocna memorija?”
„Jezgro kratkorocne memorije je lista istorije razgovora. Svaki krug razgovora proizvodi tri dela sadrzaja — korisnicki unos, odgovor modela, rezultat poziva alatke. Ova tri dela se po hronoloskom redu cuvaju u listi, pri svakom pozivu LLM-a ta lista se ubacuje u oblast istorije razgovora u prompt-u.”

„U ReAct Agent-u postoji jos jedan sloj, to je trace lista. Razmisljanje u svakom koraku, izabrana alatka, ulazni parametri alatke, rezultat izvrsenja, sve se dodaje kao jedan trace zapis. Prilikom sledeceg rezonovanja, model moze da vidi kompletnu trajektoriju svih prethodnih koraka, zna sta je uradio i sta mu jos preostaje.”
Sta znaci „blizu ogranicenja”? Kako se razgovor postepeno nadograduje?
„Svaki krug razgovora dodaje sadrzaj u prozor konteksta. Model odgovori pasus, mozda nekoliko stotina do hiljadu tokena. Ako je u medjuvremenu pozvao alatku, rezultat te alatke se takode dodaje, jedno citanje datoteke moze biti nekoliko hiljada tokena.”

„Jedan krug razgovora, priblizno doda dve do tri hiljade tokena. Posle 8 do 10 krugova, kontekst lako premasuje dvadeset do trideset hiljada tokena, cak i vise.”
„„Blizu ogranicenja” je relativno, zavisi od toga koliko sistemski prompt zauzima i koliki je prozor konteksta modela, na primer DeepSeek V4 ima 1M kontekst, jedan prozor moze da zavrsi mnogo zadataka.”
04. Ako ima previse krugova razgovora, kako vrsis optimizaciju?
Stari Wang skinuo naocare, ocistio ih, ponovo ih stavio. „Pretpostavimo da je vec razgovarano vise od dvadeset krugova, kontekst je skoro pun, kako postupas?”
„Tri strategije u kombinaciji.”
„Prva je klizni prozor. Zadrzava se samo poslednjih N krugova razgovora, raniji razgovori se direktno izbacuju iz konteksta. Ovo je najjednostavniji nacin, prednost je niska cena implementacije, mana je sto se rane informacije direktno gube.”
„Druga je kompresija sazetkom. Umesto da se rani razgovori direktno odbace, LLM sazima rane razgovore u jedan sazetak. Deset krugova razgovora mozda dvadeset hiljada tokena, posle kompresije u sazetak mozda jedna do dve hiljade tokena. Gustina informacija se povecala, zauzece prostora se smanjilo.”
„Treca je hijerarhijsko upravljanje. Kontekst se podeli u tri oblasti — poslednja dva do tri kruga zadrzavaju original, srednji razgovori se kompresuju u sazetak, jos stariji sadrzaj ako ima vrednosti upisuje se u dugorocnu memoriju. Tri sloja, svaki upravlja svojim, cuva detalj nedavnih razgovora i ne gubi kljucne rane informacije.”

Kada se okida akcija sazimanja?
„Dva uslova okidanja. Jedan je prema broju tokena, kada broj tokena u trenutnom kontekstu dostigne odredjeni udeo prozora konteksta, na primer 80%, okida se krug sazimanja. Drugi je prema broju krugova, na nekoliko krugova se uradi jednom.”

„U stvarnom inzenjerstvu se obicno kombinuju. Broj krugova je strategija za zastitu, brojanje tokena je precizna strategija. Ponekad jedan krug razgovora nosi veliku kolicinu rezultata alatki, mozda dva do tri kruga dostignu prag.”
Da li se svaki krug razgovora sazima?
„Ne. Sazimanje samo trosi jedan LLM poziv, ima cenu. Sazimanje u svakom krugu povecava latenciju, a cesto sazimanje naprotiv moze izgubiti informacije — svako sazimanje je kompresija informacija, previse cesta kompresija sve vise gubi detalje.”

„Zato se okida prema pragu, tek kada je dovoljno.”
05. Posle sazimanja, kako se tretira novi krug? Da li se preracunavaju svi prethodni krugovi ili akumulira?
„Akumulira, ne preracunava.”
„Postupak je sledeci. Krug 10 okine sazimanje, prvih 10 krugova razgovora se kompresuju u jedan sazetak. Od kruga 11, u kontekstu su taj sazetak i original kruga 11. Krug 12 ude, kontekst je sazetak i originali krugova 11 i 12.”

„Kada dode do kruga 18, sazetak i originali narednih 8 krugova su opet blizu praga, ponovo se okida krug sazimanja. Ovog puta ulaz za sazimanje je sazetak prethodnog kruga plus originali krugova 11 do 18, kompresovano u novi sazetak.”
„Zato se radi o kotrljajucoj akumulaciji, svaki put se sazima samo inkrementalni deo, ne vraca se unazad da preracuna celu istoriju. Kompresija konteksta u Claude Code-u je ta ideja.”
Originalni kontekst vise nije potreban?
„Ne moze potpuno da se odbaci.”
„Najbolje je zadrzati tri stvari. Opis pocetnog zadatka, to jest sta je korisnik na samom pocetku zeleo da uradi. Originali poslednja dva do tri kruga, da se obezbedi koherentnost konteksta. Plus kompresovani sazetak.”

„Opis pocetnog zadatka se zadrzava zato sto dugacki razgovori lako skrenu. Model dok razgovara, zaboravi pocetni cilj, sa opisom pocetnog zadatka model u svakom krugu moze da uporedi, da ne skrene previse.”
„Rizik potpunog odbacivanja originalnog konteksta je gubitak informacija. Sazimanje je na kraju kompresija, kompresija uvek gubi.”
06. Kada dugorocna memorija treba da se pretrazuje?
Stari Wang otpi caj, promenio pravac. „Kratkorocna memorija je razjasnjena, sta je sa dugorocnom? Kada je potrebno pretrazivati sadrzaj iz dugorocne memorije?”
„Dva nacina okidanja.”
„Prvi je eksplicitno okidanje. Korisnik aktivno kaze „zapamti ovu preferencu” ili „ona schema o kojoj sam ti ranije pricao”, u ovom slucaju Agent jasno zna da treba da pretrazi dugorocnu memoriju.”

„Drugi je implicitno okidanje. Korisnik ne kaze eksplicitno, ali tema trenutnog razgovora je u vezi sa uskladistenom memorijom. Tada se iz sadrzaja trenutnog razgovora generise embedding vektor, u bazi memorije radi pretraga slicnosti, memorija cija kosinusna slicnost premasuje prag se vraca i ubacuje u kontekst.”
„PaiAgent koristi drugi nacin, topK je podesen na 5, to jest svaki put se vraca najvise 5 najrelevantnijih memorija.”
Da li se u svakom krugu razgovora ubacuje memorija? Da li se dugorocna i kratkorocna ubacuju istovremeno?
„Dugorocna memorija se ne ubacuje u svakom krugu. Ubacuje se samo kada se otkrije relevantnost, inace se tokeni trose uzalud.”
„Kratkorocna memorija je stalno prisutna, u svakom krugu. Jer istorija razgovora jeste sama kratkorocna memorija, ako se ne ubaci model ne zna ni sta je rekao u prethodnoj recenici.”

„Mesto ubacivanja je takode razlicito. Kratkorocna memorija ide u oblast istorije razgovora, to jest messages lista. Dugorocna memorija ide u oblast dopune konteksta sistemskog prompt-a, format je slican „relevantne memorije: sledece su informacije sacuvane iz prethodnih razgovora...”. Mesta su odvojena, model moze da razlikuje sta je sadrzaj trenutnog razgovora od onog sto je pozvano iz medjsesijske pozadine.”
07. Kako smanjiti potrosnju tokena zbog previse alatki?
„Progresivno otkrivanje, slojevito ucitavanje.”
„Prvi sloj je indeks. Samo ime alatke i opis u jednoj recenici idu u sistemski prompt, bez kompletne definicije parametara. Indeks od dvadeset alatki, otprilike dve do tri hiljade tokena.”
„Drugi sloj je telo. Nakon sto LLM vidi indeks, oceni koja alatka je potrebna za trenutni zadatak, zatim ucita kompletnu JSON Schema definiciju. Alatke koje se ne koriste, kompletna definicija ne ulazi u kontekst.”

„PaiAgent-ov pristup je selektivno ucitavanje — u konfiguraciji cvora se navodi koje su alatke potrebne, samo navedene alatke se pojavljuju u sistemskom prompt-u. Na primer, cvor za pitanja i odgovore uz bazu znanja, trebaju mu samo alatka za pretragu i alatka za pretrazivanje, definicije ostalih sest do sedam alatki se ne pojavljuju.”
„Osim toga, opis alatke i definicija parametara treba da budu sto koncizniji. Opis jedne alatke dovoljno je objasniti u jednoj recenici, ne treba pisati dugacko objasnjenje. Parametri definisu samo obavezni, opcionalni se mogu izostaviti. Deluje kao sitnica, ali kada se nakupi vise alatki, svaka ustedi nekoliko stotina tokena, zajedno to iznosi razliku od nekoliko hiljada tokena.”
Stari Wang okrenuo biografiju, bacio pogled. „Tvoj drugi projekat je RAG baza znanja, zar ne? Pricajmo o tome.”
08. Koju tehnologiju koristi tvoj RAG?
„ES hibridna pretraga. Ceo RAG proces se deli u tri koraka — vektorizacija, pretraga, generacija.”
„Za vektorizaciju se koristi Qwen Text Embedding V4, generise 2048-dimenzionalni vektor, cuva se u Elasticsearch dense_vector polje, mera slicnosti je kosinusna slicnost.”

„Pretraga je dvofazna. Prva faza je KNN (K najblizih suseda) vracanje, sa upitnim vektorom u ES radi se priblizna pretraga najblizih suseda, prozor vracanja je topK puta 30, to jest ako treba 5 rezultata, prvo se povuce 150 kandidata. Druga faza je BM25 prebodovanje, na skupu kandidata se radi poklapanje kljucnih reci, tezina KNN skora je 0.2, tezina BM25 skora je 1.0.”
„Konacni redosled vodi BM25, KNN je dopuna. Razlog ovog dizajna je sto cisto vektorsko pretrazivanje dobro radi na semantici, ali ponekad vraca dokumente koji su semanticki povezani ali tematski promaseni. Sa BM25 poklapanjem kljucnih reci, dokumenti koji zaista sadrze kljucne reci iz korisnickog pitanja mogu biti izvuceni na vrh.”
„Strategija deljenja u blokove je 512 znakova po bloku, 100 znakova preklapanja. Preklapanje sluzi da se izbegne presek semantickih informacija na granici bloka.”
09. Kako se ocenjuje slicnost vektora?
„Kosinusnom slicnoscu.”
„Kosinusna vrednost izmedu dva vektora meri blizinu u pravcu. Opseg vrednosti je od -1 do 1, 1 znaci potpuno isti pravac, 0 znaci ortogonalnost bez korelacije, -1 znaci potpuno suprotan pravac.”

„Nacin izracunavanja je skalarni proizvod dva vektora podeljen sa proizvodom njihovih duzina. U embedding pretrazi, vektori su obicno normalizovani, duzina je 1, tada je kosinusna slicnost jednaka skalarnom proizvodu, izracunavanje je breze.”
Osim kosinusne slicnosti, da li poznajete druge algoritme slicnosti?
„Poznajem nekoliko.”
„Euklidska udaljenost (Euclidean Distance), racuna pravolinijksu udaljenost dva vektora u prostoru. Sto je manja udaljenost to su slicniji, suprotan pravac od kosinusne slicnosti.”
„Menhetnska udaljenost (Manhattan Distance), takode nazvana L1 udaljenost, zbir apsolutnih vrednosti razlika po dimenzijama. Racunska cena je niza od euklidske, jer ne zahteva korenovanje.”

„Skalarni proizvod (Dot Product), kada su vektori vec normalizovani, skalarni proizvod je ekvivalentan kosinusnoj slicnosti. ES takode podrzava konfiguraciju kao dot_product.”
„Postoji i Jaccard slicnost, uglavnom se koristi za poredjenje skupova, na primer koliko se kljucnih reci dva dokumenta preklapaju.”
Koja je konkretna razlika izmedu kosinusne slicnosti i euklidske udaljenosti u inzenjerskoj primeni?
„Sustinska razlika je sto kosinusna gleda pravac, euklidska gleda poziciju.”
„Kosinusna slicnost je neosetljiva na duzinu vektora. Dva teksta izraze istu ideju, ali jedan je dugacak a drugi kratak, pravci embedding vektora su slicni ali im se duzine razlikuju. Sa kosinusnom slicnoscu, ako su pravci bliski ocenjuje se kao slicno. Sa euklidskom udaljenoscu, razlika u duzini povecava udaljenost, sto moze dovesti do ocene da nisu slicni.”

„U tekstualnoj embedding pretrazi, vektori su obicno normalizovani, duzina jedinstveno 1. U tom slucaju kosinusna i euklidska su ekvivalentne u sortiranju. Ali ako vektori nisu normalizovani, kosinusna je prikladnija, jer je briga o semantickom pravcu, a ne o apsolutnoj velicini.”
„Euklidska udaljenost je pogodnija za scenarije u kojima vrednosti osobina imaju stvarno fizicko znacenje, na primer vektori korisnickih profila u preporucnim sistemima, gde svaka dimenzija predstavlja konkretan indikator ponasanja, tada razlika u apsolutnim vrednostima ima znacaj.”
10. Koliko je modela korisceno u projektu? Koji su?
Stari Wang zapiljio se i pogledao sat. „Idemo brzo preko modela, koliko si ukupno modela koristio?”
„Dva.”
„Prvi je Qwen Text Embedding V4, zaduzen za vektorizaciju teksta. Tekst iz blokova dokumenta pretvara u 2048-dimenzionalni vektor, smesta u ES. Prilikom pretrage, korisnicki query se takode pretvara u vektor istim modelom, radi se izracunavanje slicnosti sa vektorima u bazi.”
„Drugi je DeepSeek, zaduzen za konacnu generaciju odgovora. Pozvani blokovi dokumenata iz pretrage se ubace u prompt, model na osnovu tih sadrzaja odgovara na pitanja korisnika.”

„Nema zasebnog modela za preuredjivanje. Mnogi RAG sistemi nakon vektorskog vracanja dodaju model za precizno rangiranje radi drugog sortiranja, mi koristimo ES BM25 prebodovanje kao zamenu. Prednost je sto ne zahteva dodatno postavljanje modela, koristi se nativna sposobnost ES-a, latencija je niza.”
11. Kako se kontrolise problem halucinacija modela?
„Cetiri sloja kontrole.”
„Prvi sloj, sistemski prompt obavezno zahteva poziv alatke za pretragu. U sistemskoj instrukciji je eksplicitno napisano, za bilo koje pitanje koje nije casanje, prvo se mora pozvati alatka za pretragu baze znanja, bez pretrage nije dozvoljeno odgovarati. Samo nekoliko situacija moze preskociti pretragu — cisto pozdravljanje, cist prevod, opste programske i matematicke zadatke.”
„Drugi sloj, uzorkovanje sa niskom temperaturom. Temperature parametar generacije je podesen na 0.3, pri sazimanju se spusta cak i na 0.2. Sto je niza temperatura, model je sve vise sklon da bira token sa najvecom verovatnocom, smanjuje se nasumicnost, time i mogucnost izmisljanja sadrzaja.”

„Treci sloj, oznacavanje izvora. Sistemska instrukcija zahteva od modela da pri odgovaranju oznaci izvor informacija prema broju reference. Na primer „prema sadrzaju baze znanja [1], vreme isteka ovog interfejsa je podrazumevano 30 sekundi”. Sa brojem reference, korisnik moze da klikne i pogleda original, da proveri da li je model tacan.”
„Cetvrti sloj, eksplicitni fallback izraz. Ako pretraga ne vrati relevantan sadrzaj, sistem zahteva od modela da jasno kaze „u bazi znanja nisu pronadjene relevantne informacije”, ne dozvoljava mu da sam smisli odgovor.”
12. Kako posmatrati koje je blokove model vratio?
„Napravio sam sistem za pracenje referenci.”
„Svaki put kada alatka za pretragu vrati rezultat, svaki rezultat se mapira u broj reference — [1], [2], [3]. Iza svakog broja je zapisana grupa metapodataka, ukljucujuci ime datoteke izvora, broj stranice PDF-a, poklopljeni originalni tekst, skor slicnosti, query pretrage koriscen tada.”

„Ove mape se cuvaju u jednom Map strukturom, kljuc je broj reference, vrednost je kompletan objekat metapodataka. Nakon generacije, ovaj odnos mapiranja se zajedno sa sadrzajem odgovora persistira.”
„Nakon sto frontend dobije odgovor, kada u tekstu pronadje oznake poput [1], [2], renderuje ih kao klikabilne linkove referenci. Nakon korisnickog klika, poziva se interfejs da dobije kompletne metapodatke te reference, mogu se videti ime originalnog dokumenta, tacno koja stranica, poklopljeni originalni sadrzaj, skor slicnosti.”
„Prednost ovog dizajna je mogucnost pracenja. Korisnik uociti problem u modelovom odgovoru, moze kliknuti na referencu da vidi da li je sadrzaj vracen iz pretrage problematican, ili je model napravio odstupanje u fazi generacije. Prilikom razvoja je zgodno za otklanjanje gresaka, pregledom informacija o referencama odmah se zna kakav je kvalitet vracanja.”
Kako upisati PaiAgent u biografiju?
Ime projekta: PaiAgent — platforma za orkestraciju AI Agent radnih tokova
Kratak opis projekta: Platforma za orkestraciju radnih tokova zasnovana na LangGraph4j + Spring AI, podrzava dva rezima engine-a — DAG sekvencijalno izvrsenje i graf stanja sa uslovnim granama, integrise ReAct petlju, kolaboraciju vise uloga, upravljanje memorijom i pretragu baze znanja.
Tehnoloski stek: Java 21 + Spring AI + LangGraph4j + MySQL + Redis + Elasticsearch

Kljucne odgovornosti:
- Dizajnirana arhitektura sa dva engine-a, DAG engine podrzava sekvencijalno izvrsenje cvorova sa topoloskim sortiranjem, LangGraph engine podrzava uslovne grane grafa stanja i odluke u petlji, automatski bira rezim engine-a prema karakteristikama zadatka
- Implementirano upravljanje memorijom Agent-a, kratkorocna memorija preko liste istorije razgovora i ReAct trace-a prati trenutno stanje zadatka, dugorocna memorija preko embedding vektorizacije se trajno skladisti i prema kosinusnoj slicnosti vracaja, podrazumevani topK 5
- Izgradjen mehanizam progresivnog ucitavanja alatki, konfiguracija cvora navodi skup potrebnih alatki, ucitava se samo JSON Schema definicija navedenih alatki u sistemski prompt, izbegava se da sve alatke zauzmu ceo prozor konteksta
- Integrisana sposobnost pretrage baze znanja, LLM cvor moze da veze ID baze znanja, za vreme rada prema konfigurabilnom topK i pragu slicnosti pretrazuje eksterno znanje i ubacuje u kontekst
- Dizajniran mehanizam snapshot-a cvorova i oporavak od prekida, nakon izvrsenja svakog cvora se persistira snapshot stanja, podrzava nastavak izvrsenja od bilo kog cvora, obezbedjuje toleranciju na greske za dugotrajne zadatke
Kako upisati Pai Congming u biografiju?
Ime projekta: Pai Congming — RAG baza znanja zasnovana na ES hibridnoj pretrazi
Kratak opis projekta: Enterprise RAG sistem baze znanja, usvaja Elasticsearch hibridnu pretragu (KNN + BM25) za vracanje dokumenata visoke preciznosti, podrzava parsiranje datoteka u vise formata, asinhronu vektorizaciju i izolaciju dozvola za vise zakupaca.
Tehnoloski stek: Java + Spring Boot + Elasticsearch 8.x + Kafka + MinIO + Qwen Embedding V4 + DeepSeek Chat

Kljucne odgovornosti:
- Implementiran proces hibridne pretrage, KNN vektorsko pretrazivanje vraca topK×30 skup kandidata, BM25 prebodovanje kljucnih reci (KNN tezina 0.2 / BM25 tezina 1.0) precizno rangira, zamenjuje zasebni model za preuredjivanje i smanjuje troskove postavljanja
- Dizajniran proces kontrole halucinacija, integrise cetiri sloja mehanizma kontrole — sistemski prompt koji obavezno pretrazuje, uzorkovanje sa niskom temperaturom (0.2-0.3), oznacavanje broja reference izvora, eksplicitni fallback izraz, smanjuje izmisljanje sadrzaja od strane modela
- Izgradjen sistem za pracenje referenci, svaki rezultat pretrage se mapira u broj reference i belezi metapodatke kao sto su ime datoteke, broj stranice, poklopljeni tekst, skor slicnosti, korisnik moze da klikne na referencu da verifikuje izvor
- Implementirana visezakupska filtracija dozvola, u fazi pretrage u ES upit se ubacuju korisnicki uslovi dozvola (licni dokumenti / javni dokumenti / oznake organizacije), obezbedjuje izolaciju podataka
- Dizajniran asinhroni proces obrade datoteka, preko Kafka-e asinhrono parsira ucitane datoteke, deli u blokove (512 znakova / 100 znakova preklapanja), poziva Qwen Embedding za generisanje 2048-dimenzionalnog vektora i upisuje u ES indeks
ending
Upravljanje memorijom, kompresija konteksta, hibridna pretraga, kontrola halucinacija — ove reci se u intervjuima pre dve godine uglavnom nisu pojavljivale.
Nove tehnologije donose nove probleme, ali pristup resavanju je isti kao i ranije: razumeti principe, rucno ih napraviti, detalji izdrze dalje ispitivanje.
Drzite se, braco i sestre.
Vidimo se sledeci put.
