AI/ML integracija: RAG, AI workflowi i lokalni modeli

AI/ML integracija znači ugradnju vještačke inteligencije u sisteme koje već koristite – web stranicu, CRM, arhivu dokumenata, inbox podrške ili interne alate – tako da obavlja koristan i mjerljiv posao, umjesto da živi u zasebnom chat prozoru. Jezički model koji razvrstava pristigle mailove, pretraga koja odgovara na pitanja iz vaših priručnika, model koji nabavci predviđa šta treba naručiti: sve su to prvo problemi integracije, a tek onda problemi vještačke inteligencije.

U CodeWizu razvijamo dijelove koji AI čine pouzdanim u produkciji: pipeline za podatke, pretragu nad vašim dokumentima, pažljivo modelovan kontekst, strukturirane odgovore kojima ostatak koda može vjerovati, evaluaciju, nadzor i kontrolu troškova. Radimo sa hostovanim modelima kompanija OpenAI, Anthropic i Google, ali i sa open-weight modelima poput Llame, Qwena i Mistrala koji rade na vašim serverima.

Usluga je namijenjena firmama koje su već isprobale proof of concept i sada trebaju da on radi svaki dan, timovima koji imaju godine dokumenata koje niko ne može pošteno pretražiti, te kompanijama iz regulisanih oblasti ili onima kojima je privatnost ključna, pa podatke ne smiju slati eksternom API-ju. Ako želite da AI služi vašim poslovnim ciljevima, a ne samo demonstraciji, ovdje počinjemo.

AI: Programer kuca kod na laptopu za svijetlim drvenim stolom

AI workflowi koji obavljaju stvaran posao

AI workflow je tok obrade u kojem jedan ili više koraka obavlja model: čitanje fakture, razvrstavanje tiketa, izdvajanje podataka iz ugovora, sažimanje transkripta poziva, prevod opisa proizvoda ili priprema odgovora koji čovjek odobrava. Koraci oko toga – preuzimanje podataka, validacija, upis u bazu, obavještavanje ljudi – su običan kod koji se može testirati.

Zašto je to važno za vaše poslovanje

  • Ponavljajuće čitanje i razvrstavanje koje je trajalo satima dnevno završava se za nekoliko minuta, i to danonoćno.
  • Nestrukturirani ulaz (mailovi, PDF-ovi, skenovi, chat logovi) postaje strukturiran podatak nad kojim vaši sistemi mogu praviti izvještaje.
  • Ljudi umjesto kucanja provjeravaju rezultate, što je brže i otkriva više grešaka.

Strukturirani izlaz, a ne slobodan tekst

Najvažnija tehnika je natjerati model da vrati podatke u unaprijed definisanoj šemi. Savremeni API-ji i većina alata za serviranje open-weight modela podržavaju izlaz ograničen JSON šemom, pa se rezultat validira prije nego što uopšte dođe do vaše baze:

from typing import Literal from pydantic import BaseModel from openai import OpenAI class Ticket(BaseModel): category: Literal["billing", "technical", "sales", "other"] urgency: int # 1 (low) to 5 (critical) language: str summary: str # Any OpenAI-compatible endpoint: OpenAI, vLLM or Ollama client = OpenAI(base_url="http://localhost:8000/v1", api_key="local") resp = client.chat.completions.parse( model="Qwen/Qwen2.5-14B-Instruct", messages=[{"role": "system", "content": "Classify the support email."}, {"role": "user", "content": email_text}], response_format=Ticket, ) ticket = resp.choices[0].message.parsed

Oko ove osnove dodajemo ono što produkcija zahtijeva: red čekanja (queue) kako velike serije ne bi udarile u rate limit, ponovne pokušaje sa backoffom, pragove pouzdanosti koji nesigurne slučajeve šalju čovjeku, idempotentne upise kako ponovno pokretanje nikada ne bi napravilo duplikate i logovanje svakog ulaza i izlaza radi revizije. Kada workflow uglavnom povezuje SaaS alate, često ga orkestriramo u n8n-u, a AI korak držimo kao mali, dobro testiran servis.

RAG sistemi koji odgovaraju iz vaših podataka

Retrieval-augmented generation (RAG) omogućava modelu da odgovara iz vaših dokumenata, a ne iz podataka na kojima je treniran: prvo se pronađu relevantni odlomci, a zatim se zajedno sa pitanjem proslijede modelu. Sam koncept i ulogu promptova već smo objasnili u članku o RAG-u, prompt engineeringu i automatizaciji poslovanja, pa se ovdje fokusiramo na inženjerski dio koji odlučuje da li će ljudi RAG sistemu vjerovati ili ga ignorisati.

Priprema podataka je pola posla

  • Pretvaranje PDF-ova, Word dokumenata, HTML-a, tabela i skeniranih dokumenata (uz OCR) u čist tekst koji čuva naslove, tabele i brojeve stranica.
  • Dijeljenje na dijelove (chunking) prema strukturi dokumenta, a ne po fiksnom broju znakova, uz metapodatke poput izvora, datuma, sektora i nivoa pristupa na svakom dijelu.
  • Inkrementalno ponovno indeksiranje, tako da izmijenjeni pravilnik zamijeni staru verziju umjesto da joj protivrječi.

Pretraga koja zaista pronalazi odgovor

Čista vektorska pretraga promašuje tačne pojmove poput šifri proizvoda, kataloških brojeva i imena. Zato kombinujemo embeddinge sa pretragom po ključnim riječima (BM25) u hibridnom upitu, a zatim najbolje kandidate ponovo rangiramo cross-encoder modelom prije nego što išta stigne do jezičkog modela. Filteri prava pristupa izvršavaju se unutar samog upita, pa korisnik uvijek dobija samo dokumente koje smije vidjeti. Odgovori navode izvore, a upravo to gradi povjerenje.

CREATE EXTENSION IF NOT EXISTS vector; CREATE TABLE chunks ( id bigserial PRIMARY KEY, doc_id bigint NOT NULL, tenant_id int NOT NULL, content text NOT NULL, embedding vector(1024) ); CREATE INDEX ON chunks USING hnsw (embedding vector_cosine_ops); -- nearest chunks, restricted to what this tenant may see SELECT id, doc_id, content FROM chunks WHERE tenant_id = $1 ORDER BY embedding <=> $2 LIMIT 20;

Izbor vektorske baze

OpcijaPrednostiNajbolja zaKompromisi
PostgreSQL + pgvectorJedna baza za podatke i vektore, SQL filteri, transakcijeVećinu poslovnih aplikacija do nekoliko miliona dijelovaHibridna pretraga traži dodatni rad; podešavanje na vrlo velikom obimu
TypesensePretraga po ključnim riječima, vektorima i hibridno u jednom alatu, tolerancija na greške u kucanjuPretragu sajta i proizvoda sa semantičkim mogućnostimaPodaci se drže u RAM-u; manje pogodan za ogromne arhive
QdrantBrzo filtriranje, kvantizacija, jednostavan API, open-sourceNamjenska vektorska opterećenja, RAG za više klijenataJoš jedan servis koji treba održavati i backupovati
Elasticsearch / OpenSearchZrela full-text pretraga uz vektore, agregacijeTimove koji ga već koriste za logove ili pretraguZahtjevniji za održavanje i podešavanje

Ako vaša pretraga služi i kupcima, često koristimo isti alat – u članku o Typesense pretrazi koja donosi veće konverzije objašnjavamo zašto je to ozbiljan kandidat. Dokumentacija za pgvector detaljno opisuje tipove indeksa i podešavanje.

Modelovanje konteksta: pravi podaci za pravi odgovor

Modelovanje konteksta (često se zove i context engineering) je disciplina u kojoj precizno određujete šta model vidi pri svakom pozivu: uputstva, pronađene dokumente, podatke o korisniku i nalogu, prethodne poruke iz razgovora, rezultate alata i primjere. Model je dobar onoliko koliko je dobar njegov kontekst. Ako ga je premalo, model nagađa; ako ga je previše, postaje sporiji, skuplji i mjerljivo lošije koristi informacije zakopane u sredini dugog prompta.

Šta dizajniramo

  • Budžet konteksta: fiksan broj tokena po dijelu (uputstva, činjenice, prethodne poruke, pronađeni odlomci), kako bi troškovi i vrijeme odziva ostali predvidivi.
  • Strukturirane činjenice: nivo korisnika, otvorene narudžbe ili uslovi ugovora ubacuju se iz vaše baze kao sažeti, označeni podaci, a ne kao zalijepljen tekst.
  • Memorija: dugi razgovori sažimaju se u bilješke koje se ažuriraju, a ključne odluke čuvaju kao strukturirani zapisi umjesto transkripta koji stalno raste.
  • Stabilni prefiksi: sistemska uputstva i referentni podaci poredani tako da prompt caching kod provajdera smanji cijenu i vrijeme odziva ponovljenih poziva.
  • Modeli domena: za složene oblasti (proizvodi sa varijantama, pravne klauzule, tehnička oprema) lagani graf entiteta kojim pretraga može da se kreće, a ne samo gomila odlomaka teksta.

Dugi kontekst ili pretraga?

Kontekstni prozori od više stotina hiljada tokena navode timove da svaki put šalju sve. Za jednokratnu analizu jednog velikog dokumenta to je u redu. Za sistem koji dnevno odgovara na hiljade pitanja, ciljana pretraga sa sažetim kontekstom je jeftinija, brža i lakša za otklanjanje grešaka, jer tačno vidite koji odlomci su doveli do kojeg odgovora.

Krupni plan računarskog procesora sa zlatnim pinovima na bijeloj podlozi

Lokalni AI modeli na vašem hardveru

Lokalni deployment AI modela znači da open-weight modeli rade na serverima koje vi kontrolišete – u vašim prostorijama, u privatnom cloudu ili na namjenskom GPU serveru – pa promptovi i dokumenti nikada ne napuštaju vašu infrastrukturu. Poslovnu opravdanost, sigurnost i planiranje hardvera detaljno smo obradili u vodiču o lokalnom hostingu AI modela. U projektima integracije praktična pitanja su koji alat za serviranje izabrati i kako ga dimenzionisati.

Poređenje alata za serviranje modela

AlatJednostavnost postavkePropusnostNajbolji za
OllamaVrlo jednostavnoUmjerenaInterne alate, prototipove, nekoliko istovremenih korisnika
llama.cpp serverJednostavnoUmjerenaCPU ili kombinovane CPU/GPU mašine, GGUF kvantizovane modele
vLLMSrednjeVisoka (continuous batching, paged KV cache)Produkcijske API-je sa mnogo paralelnih zahtjeva
Hugging Face TGISrednjeVisokaTimove koji već standardno koriste Hugging Face ekosistem

Dimenzionisanje i kvantizacija

Okvirno, model od 7–8 milijardi parametara kvantizovan na 4 bita staje u oko 5–6 GB VRAM-a, dok model od 70 milijardi parametara na 4 bita traži oko 40 GB, i to prije nego što uračunate KV cache za duge kontekste i paralelne korisnike. Formati kvantizacije poput GGUF, AWQ i GPTQ žrtvuju malo kvaliteta za veliku uštedu memorije, a mi ih testiramo na vašim stvarnim zadacima umjesto da vjerujemo rang-listama. Svi ovi alati nude API kompatibilan sa OpenAI-jem, pa vaša aplikacija može preći sa lokalnog na hostovani model izmjenom konfiguracije:

vllm serve Qwen/Qwen2.5-14B-Instruct-AWQ \ --max-model-len 16384 \ --gpu-memory-utilization 0.90 \ --host 127.0.0.1 --port 8000

Servere za inferenciju pokrećemo u kontejnerima iza reverse proxyja sa autentifikacijom, nikada direktno izložene internetu, a GPU metrike i logovi zahtjeva idu u vaš sistem za nadzor. vLLM dokumentacija navodi podržane modele i opcije kvantizacije.

Cloud API, open-weight modeli ili klasično mašinsko učenje?

Nije svakom problemu potreban veliki jezički model. Izbor prave vrste modela često je najveća odluka o troškovima u projektu AI/ML integracije:

PristupPrednostiManeTipična upotreba
Hostovani vodeći modeli (API)Najbolje rezonovanje, bez hardvera, brz početakCijena po tokenu, podaci napuštaju vašu mrežu, zavisnost od provajderaSloženo rezonovanje, mali ili promjenljiv obim
Open-weight modeli (self-hosted)Podaci ostaju privatni, fiksan trošak pri velikom obimu, potpuna kontrolaUlaganje u GPU, operativni rad, nešto slabiji kvalitet u samom vrhuVeliki obim, osjetljivi podaci, okruženja bez interneta
Klasično ML (scikit-learn, XGBoost)Jeftino, brzo, objašnjivo, minimalna infrastrukturaTraži označene podatke iz prošlosti, uski zadaciPredviđanje, scoring, odliv kupaca i otkrivanje anomalija nad tabelarnim podacima

Mnogi dobri sistemi kombinuju sva tri: gradient boosting model predviđa potražnju, mali lokalni model izdvaja podatke iz dokumenata, a hostovani model rješava rijetke složene slučajeve.

Evaluacija, nadzor i kontrola troškova

  • Zlatni testni skupovi: stvarna pitanja i dokumenti sa poznatim tačnim odgovorima, koji se automatski pokreću pri svakoj izmjeni prompta, modela ili podešavanja pretrage.
  • RAG metrike: uspješnost pronalaženja, vjernost odgovora izvorima i tačnost citata, mjereni alatima poput Ragasa ili vlastitim LLM-as-judge provjerama koje pregledaju ljudi.
  • Tracing: svaki poziv se loguje sa ulazom, pronađenim kontekstom, izlazom, vremenom odziva i potrošnjom tokena, uz Langfuse ili alate zasnovane na OpenTelemetryju.
  • Kontrola troškova: budžeti po funkcionalnosti, keširanje ponovljenih upita, manji modeli za jednostavne korake i upozorenja kada potrošnja krene da raste.

Privatnost podataka, GDPR i odgovoran AI

Lični podaci u promptu i dalje su lični podaci u smislu GDPR-a. Šaljemo modelima samo ono što je neophodno, maskiramo ili pseudonimizujemo identifikatore gdje je moguće, biramo provajdere koji potpisuju ugovor o obradi podataka i ne treniraju modele na vašim podacima, a osjetljive zadatke ostavljamo lokalnim modelima. Dokumentujemo i šta svaka AI komponenta radi, koje podatke koristi i kako čovjek može da preuzme odluku – upravo onu vrstu transparentnosti koju očekuje EU AI Act, a koja je ujedno i dobra inženjerska praksa.

Najčešće greške u AI integraciji koje ispravljamo

  • Parsiranje slobodnog teksta iz modela regularnim izrazima umjesto korištenja odgovora ograničenih šemom.
  • Indeksiranje cijelih dokumenata kao jednog dijela ili slijepo sječenje na svakih 500 znakova, pravo kroz sredinu tabela.
  • Nepostojanje testnog skupa, pa niko ne može reći da li je novi prompt ili model bolji ili lošiji.
  • Ignorisanje prava pristupa dokumentima, zbog čega RAG asistent svima otkriva fajlove iz kadrovske službe ili finansija.
  • Slanje cijelog dotadašnjeg razgovora pri svakom pozivu, dok troškovi ne eksplodiraju, a odgovori ne postanu lošiji.
  • Lokalni server za inferenciju izložen na javnom portu bez autentifikacije.
Redovi crnih serverskih ormara sa plavim mrežnim kablovima u serverskoj sobi

Kako radimo

  1. Analiza: mapiramo proces, izvore podataka, obim, ograničenja privatnosti i kako dobar rezultat izgleda u brojkama koje već pratite.
  2. Prototip i testni skup: pravimo malu radnu verziju nad vašim stvarnim podacima, zajedno sa testnim skupom, pa se kvalitet mjeri od prvog dana.
  3. Arhitektura: biramo modele, hosting (cloud, lokalno ili hibridno), vektorsku bazu i tačke integracije sa vašim postojećim sistemima.
  4. Izrada: implementiramo pipeline, pretragu, upravljanje kontekstom, strukturirane izlaze, API-je i administratorske alate, uz testove oko svakog AI koraka.
  5. Puštanje u rad: uvodimo sistem postepeno, često prvo uz ljudsku provjeru, i pažljivo pratimo kvalitet, brzinu i troškove.
  6. Unapređenje i podrška: podešavamo promptove i pretragu na osnovu stvarne upotrebe, prelazimo na bolje modele kada se pojave i redovno ažuriramo infrastrukturu.

Zašto CodeWiz

  • Full-stack AI, a ne samo promptovi: gradimo baze, API-je, redove poruka i servere oko modela, pa radi cijeli sistem – ne samo demo.
  • Cloud ili lokalno, vi birate: radimo i sa hostovanim API-jima i sa open-weight modelima na vašem hardveru, i preporučujemo ono što odgovara vašim podacima i budžetu.
  • Open-source na prvom mjestu: pgvector, Qdrant, Typesense, vLLM i Ollama vas oslobađaju zavisnosti od dobavljača i troškova licenci.
  • Rješenja po mjeri: ako problem rješava jednostavan klasifikator, nećemo vam prodavati LLM platformu.
  • Fer cijene: vrhunski razvoj bez vrhunskih cijena, od tima iz Banje Luke koji radi na daljinu sa klijentima iz regiona i svijeta – saznajte više o CodeWizu.

Često postavljana pitanja

Koliko košta AI/ML integracija?

Zavisi od broja izvora podataka, obima zahtjeva, toga da li modeli rade u cloudu ili lokalno i koliko duboko rezultat treba uvezati u postojeće sisteme. Fokusiran workflow ili interni RAG asistent je manji projekat, dok je platforma za više sektora sa lokalnim GPU serverima znatno veći posao. Jasnu procjenu dajemo nakon analize i prototipa.

Da li su naši podaci sigurni ako koristimo AI?

Mogu biti. Smanjujemo i maskiramo lične podatke, koristimo provajdere koji ne treniraju modele na vašim podacima, poštujemo prava pristupa dokumentima u pretrazi, a za osjetljive zadatke modele pokrećemo isključivo na vašoj infrastrukturi, tako da ništa ne napušta vašu mrežu.

Da li moramo trenirati vlastiti model?

Rijetko. Većina poslovnih slučajeva rješava se dobrim postojećim modelom, pretragom nad vašim podacima i dobro dizajniranim kontekstom. Fine-tuning ima smisla za uske zadatke velikog obima sa dosljednim formatom, i preporučujemo ga samo kada evaluacija pokaže jasan dobitak.

Koliko traje RAG projekat?

Prva radna verzija nad definisanim skupom dokumenata obično može biti spremna za nekoliko sedmica, uključujući testni skup. Veći projekti sa mnogo izvora, OCR-om, pravima pristupa i integracijama traju duže, najviše zbog pripreme podataka i testiranja.

Koje modele koristite?

One koji daju najbolje rezultate na vašem zadatku u okviru vaših ograničenja: hostovane modele kompanija OpenAI, Anthropic ili Google, ili open-weight modele poput Llame, Qwena i Mistrala koji rade lokalno. Pošto gradimo na interfejsima kompatibilnim sa OpenAI-jem, kasnija promjena modela je izmjena konfiguracije, a ne prepisivanje koda.

Spremni da AI zaposlite u svom poslovanju?

Recite nam koji proces, dokumente ili podatke želite prepustiti vještačkoj inteligenciji, a mi ćemo predložiti arhitekturu koja odgovara vašim zahtjevima za privatnost i budžetu. Kontaktirajte nas da razgovaramo o projektu ili pogledajte naše usluge AI/ML integracije.