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.
Sadržaj
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 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.parsedOko 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
| Opcija | Prednosti | Najbolja za | Kompromisi |
|---|---|---|---|
| PostgreSQL + pgvector | Jedna baza za podatke i vektore, SQL filteri, transakcije | Većinu poslovnih aplikacija do nekoliko miliona dijelova | Hibridna pretraga traži dodatni rad; podešavanje na vrlo velikom obimu |
| Typesense | Pretraga po ključnim riječima, vektorima i hibridno u jednom alatu, tolerancija na greške u kucanju | Pretragu sajta i proizvoda sa semantičkim mogućnostima | Podaci se drže u RAM-u; manje pogodan za ogromne arhive |
| Qdrant | Brzo filtriranje, kvantizacija, jednostavan API, open-source | Namjenska vektorska opterećenja, RAG za više klijenata | Još jedan servis koji treba održavati i backupovati |
| Elasticsearch / OpenSearch | Zrela full-text pretraga uz vektore, agregacije | Timove koji ga već koriste za logove ili pretragu | Zahtjevniji 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.

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
| Alat | Jednostavnost postavke | Propusnost | Najbolji za |
|---|---|---|---|
| Ollama | Vrlo jednostavno | Umjerena | Interne alate, prototipove, nekoliko istovremenih korisnika |
| llama.cpp server | Jednostavno | Umjerena | CPU ili kombinovane CPU/GPU mašine, GGUF kvantizovane modele |
| vLLM | Srednje | Visoka (continuous batching, paged KV cache) | Produkcijske API-je sa mnogo paralelnih zahtjeva |
| Hugging Face TGI | Srednje | Visoka | Timove 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 8000Servere 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:
| Pristup | Prednosti | Mane | Tipična upotreba |
|---|---|---|---|
| Hostovani vodeći modeli (API) | Najbolje rezonovanje, bez hardvera, brz početak | Cijena po tokenu, podaci napuštaju vašu mrežu, zavisnost od provajdera | Složeno rezonovanje, mali ili promjenljiv obim |
| Open-weight modeli (self-hosted) | Podaci ostaju privatni, fiksan trošak pri velikom obimu, potpuna kontrola | Ulaganje u GPU, operativni rad, nešto slabiji kvalitet u samom vrhu | Veliki obim, osjetljivi podaci, okruženja bez interneta |
| Klasično ML (scikit-learn, XGBoost) | Jeftino, brzo, objašnjivo, minimalna infrastruktura | Traži označene podatke iz prošlosti, uski zadaci | Predviđ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.

Kako radimo
- Analiza: mapiramo proces, izvore podataka, obim, ograničenja privatnosti i kako dobar rezultat izgleda u brojkama koje već pratite.
- Prototip i testni skup: pravimo malu radnu verziju nad vašim stvarnim podacima, zajedno sa testnim skupom, pa se kvalitet mjeri od prvog dana.
- Arhitektura: biramo modele, hosting (cloud, lokalno ili hibridno), vektorsku bazu i tačke integracije sa vašim postojećim sistemima.
- Izrada: implementiramo pipeline, pretragu, upravljanje kontekstom, strukturirane izlaze, API-je i administratorske alate, uz testove oko svakog AI koraka.
- Puštanje u rad: uvodimo sistem postepeno, često prvo uz ljudsku provjeru, i pažljivo pratimo kvalitet, brzinu i troškove.
- 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.