
# Dinamičko obogaćivanje grafova znanja za kontekstualizaciju upitnika u stvarnom vremenu

## Uvod

Sigurnosni upitnici i revizije usklađenosti postali su usko grlo u svakoj brzo rastućoj SaaS organizaciji. Timovi provode bezbroj sati tražeći pravi odjeljak politike, izvlačeći dokaze iz repozitorija dokumenata i ponovno pišući isti odgovor za svaki novi zahtjev dobavljača. Iako veliki jezični modeli (LLM‑i) mogu generirati skice odgovora, često im nedostaje **regulatorna nijansa** koja se mijenja iz dana u dan – novi smjernice Europskog odbora za zaštitu podataka (EDPB), ažurirani [NIST CSF](https://www.nist.gov/cyberframework) (npr. NIST SP 800‑53) skup kontrola ili svježe objavljena [ISO 27001](https://www.iso.org/standard/27001) izmjena.

**Procurize** rješava ovaj problem pomoću **Dinamičkog motora za obogaćivanje grafova znanja (DKGEE)**. Motor kontinuirano konzumira regulatorne izvore u stvarnom vremenu, mapira ih na jedinstveni graf znanja i pruža kontekstualne dokaze koji su odmah dostupni u UI‑ju za izradu upitnika. Rezultat je *jedinstveni izvor istine* koji se automatski razvija, smanjuje vrijeme odgovora s dana na minute i jamči da svaki odgovor odražava najnoviji status usklađenosti.

U ovom članku ćemo:

1. Objasniti zašto je dinamički graf znanja nedostajući most između AI‑generiranih skica i odgovora spremnih za reviziju.  
2. Proći kroz arhitekturu, tok podataka i ključne komponente DKGEE‑a.  
3. Pokazati kako integrirati motor s postojećim slojevima zadataka i komentara u Procurize‑u.  
4. Predstaviti studiju slučaja iz stvarnog svijeta s mjerljivim ROI‑om.  
5. Dati praktične smjernice timovima koji žele danas usvojiti ovaj motor.

---

## 1. Zašto statička baza znanja ne zadovoljava potrebe

| Problem | Statička baza znanja | Dinamički graf znanja |
|---------|----------------------|--------------------------|
| **Regulacijske nadopune** | Potrebna je ručna uvoz; ažuriranja zaostaju tjednima. | Automatizirano preuzimanje feed‑ova; ažuriranja u minuti. |
| **Preslikavanje među okvirima** | Ručno izrađene tablice preslikavanja postaju nesinkronizirane. | Odnosi temeljeni na grafu ostaju dosljedni kako se pojavljuju novi čvorovi. |
| **Preuzimanje kontekstualnih dokaza** | Pretraga po ključnim riječima daje bučne rezultate. | Semantičko prelaženje grafa isporučuje precizne dokaze uz praćenje podrijetla. |
| **Auditornost** | Nema automatskog zapisa promjena. | Ugrađeno versioniranje i linija podrijetla za svaki čvor. |

Statičko spremište može pohraniti politike, ali ne može *shvatiti* kako nova regulativa – npr. član GDPR‑a – mijenja interpretaciju postojeće ISO kontrole. DKGEE to rješava **modeliranjem regulatornog ekosustava kao grafa**, gdje svaki čvor predstavlja odredbu, smjernicu ili dokazni artefakt, a veze kodiraju odnose poput *“zahtijeva”*, *“nadjačava”* ili *“preslikava‑na”*. Kada stigne nova regulativa, graf se **inkrementalno obogaćuje**, čuvajući povijest i čineći utjecaj na postojeće odgovore odmah vidljivim.

---

## 2. Pregled arhitekture

Dolje je visokopropusni Mermaid dijagram koji vizualizira DKGEE cjevovod.

```mermaid
graph TD
    A["Regulatorni kolektori feed‑ova"] --> B["Usluga za unos"]
    B --> C["Normalizacija & Ekstrakcija entiteta"]
    C --> D["Ažuriranje grafa"]
    D --> E["Dinamički graf znanja"]
    E --> F["Mehanizam za preuzimanje konteksta"]
    F --> G["Procurize UI (Izrada upitnika)"]
    G --> H["LLM generator skice"]
    H --> I["Ljudski pregled (Human‑in‑the‑Loop)"]
    I --> J["Spremište finalnog odgovora"]
    J --> K["Zapis revizije & versioniranje"]
```

### 2.1 Ključne komponente

1. **Regulatorni kolektori feed‑ova** – konektori za službene izvore (EU Official Journal, NIST RSS, ISO vijesti), zajedničke feedove (GitHub‑održavana pravila usklađenosti) i promjene politika dobavljača.  
2. **Usluga za unos** – lagani mikro‑servis napisan u **Go**‑u koji validira payload‑e, detektira duplikate i šalje sirove podatke na Kafka temu.  
3. **Normalizacija & Ekstrakcija entiteta** – koristi **spaCy** i modele iz **Hugging Face** fino podešene na pravni tekst za izdvajanje odredbi, definicija i referenci.  
4. **Ažuriranje grafa** – izvršava **Cypher** naredbe nad **Neo4j** instancom, stvarajući ili ažurirajući čvorove i veze uz očuvanje povijesti verzija.  
5. **Dinamički graf znanja** – pohranjuje cijeli regulatorni ekosustav. Svaki čvor ima svojstva: `id`, `source`, `text`, `effectiveDate`, `version`, `confidenceScore`.  
6. **Mehanizam za preuzimanje konteksta** – RAG‑stil usluga koja prima upit upitnika, provodi **semantičko prelaženje grafa**, rangira kandidatske dokaze i vraća JSON payload.  
7. **Integracija s Procurize UI‑jem** – front‑end konzumira payload i izravno ispod svakog pitanja prikazuje sugestije, uz inline komentare i tipke “Primijeni na odgovor”.  
8. **LLM generator skice** – **GPT‑4‑Turbo** model koji koristi preuzete dokaze kao oslonac za stvaranje prve skice odgovora.  
9. **Ljudski pregled (Human‑in‑the‑Loop)** – recenzenti mogu prihvatiti, urediti ili odbaciti skicu. Sve akcije se zapisuju radi auditornosti.  
10. **Spremište finalnog odgovora & zapis revizije** – odgovori se pohranjuju u nepromjenjivoj knjizi (npr. **AWS QLDB**) s kriptografskim hash‑om koji povezuje točnu graf‑snapsotu korištenu pri generiranju.

---

## 3. Tok podataka – od feed‑a do odgovora

1. **Dolazak feed‑a** – objavljena je nova revizija NIST SP 800‑53. Kolektor feed‑ova preuzima XML, normalizira ga u JSON i šalje na Kafka.  
2. **Ekstrakcija** – NER servis označava svaku kontrolu (`AC‑2`, `AU‑6`) i prateće smjernice.  
3. **Mutacija grafa** – Cypher `MERGE` naredbe dodaju nove čvorove ili ažuriraju `effectiveDate` postojećih. Veza `OVERWRITES` povezuje novu kontrolu s prethodnom verzijom.  
4. **Stvaranje snap‑shot-a** – Neo4j‑ov ugrađeni **temporal plugin** bilježi ID snap‑shot-a (`graphVersion=2025.11.12.01`).  
5. **Upit pitanja** – sigurnosni analitičar otvara upitnik i postavlja pitanje „Kako upravljate otvaranjem računa?“  
6. **Preuzimanje konteksta** – mehanizam za preuzimanje upita graf traži čvorove povezane s `AC‑2` **i** filtrirane prema domeni tvrtke (`SaaS`, `IAM`). Vraća dva odlomka politike i jedan odlomak iz nedavnog revizijskog izvještaja.  
7. **LLM skica** – LLM prima prompt uz preuzete dokaze i generira sažet odgovor, citirajući ID‑ove dokaza.  
8. **Ljudski pregled** – analitičar provjerava citate, dodaje komentar o nedavnoj internetskoj promjeni procesa i odobrava.  
9. **Zapis revizije** – sistem bilježi ID snap‑shota grafa, ID‑ove dokaza, verziju LLM‑a i korisnički ID recenzenta.  

Za tipičan upitnik sve ove korake obavi **u manje od 30 sekundi**.

---

## 4. Vodič za implementaciju

### 4.1 Preduvjeti

| Stavka | Preporučena verzija |
|--------|----------------------|
| Neo4j | 5.x (Enterprise) |
| Kafka | 3.3.x |
| Go | 1.22 |
| Python | 3.11 (za spaCy & RAG) |
| LLM API | OpenAI GPT‑4‑Turbo (ili Azure OpenAI) |
| Cloud | AWS (EKS za servise, QLDB za audit) |

### 4.2 Korak po korak postavljanje

1. **Postavite Neo4j klaster** – omogućite plug‑ine **Temporal** i **APOC**. Kreirajte bazu `regulatory`.  
2. **Kreirajte Kafka teme** – `regulatory_raw`, `graph_updates`, `audit_events`.  
3. **Konfigurirajte kolektore feed‑ova** – koristite službeni EU Gazette RSS, NIST JSON feed i GitHub webhook za zajednička SCC pravila. Pohranite vjerodajnice u **AWS Secrets Manager**.  
4. **Pokrenite uslugu za unos** – Dockerizirajte Go servis, postavite varijablu okruženja `KAFKA_BROKERS`. Monitorirajte s **Prometheus**‑om.  
5. **Deployirajte ekstrakciju entiteta** – izgradite Python Docker sliku s `spaCy>=3.7` i prilagođenim legalnim NER modelom. Pretplatite se na `regulatory_raw` i objavite normalizirane entitete na `graph_updates`.  
6. **Ažuriranje grafa** – napišite stream‑processor (npr. **Kafka Streams** u Javi) koji konzumira `graph_updates`, gradi Cypher upite i izvršava ih nad Neo4j‑om. Svaku mutaciju označite korelacijskim ID‑om.  
7. **RAG usluga za preuzimanje** – izložite FastAPI endpoint `/retrieve`. Implementirajte semantičku sličnost koristeći **Sentence‑Transformers** (`all-MiniLM-L6-v2`). Usluga provodi dvo‑korak prelaženje: **Pitanje → Relevantna kontrola → Dokaz**.  
8. **Integrirajte s Procurize UI‑jem** – dodajte React komponentu `EvidenceSuggestionPanel` koja poziva `/retrieve` kad polje pitanja dobije fokus. Prikazujte rezultate s checkbox‑om za “Umetni”.  
9. **Orkestracija LLM‑a** – koristite OpenAI‑jev **Chat Completion** endpoint, proslijedite preuzete dokaze kao sistemske poruke. Zabilježite `model` i `temperature` za reprodukciju.  
10. **Zapis revizije** – napišite Lambda funkciju koja hvata svaki `answer_submitted` događaj, zapisuje zapis u QLDB s SHA‑256 hash‑om teksta odgovora i referencom na snap‑shot grafa (`graphVersion`).  

### 4.3 Najbolje prakse

- **Fiksiranje verzija** – pohranite točnu verziju LLM‑a i ID snap‑shota grafa uz svaki odgovor.  
- **Čuvanje podataka** – čuvajte sve sirove regulatorne feed‑ove najmanje **7 godina** radi audita.  
- **Sigurnost** – šifrirajte Kafka streamove TLS‑om, omogućite Neo4j‑ovo kontroliranje pristupa temeljeno na ulogama i ograničite QLDB‑write dozvole samo na audit Lambda.  
- **Praćenje performansi** – postavite alarme na latenciju mehanizma za preuzimanje; cilj < 200 ms po upitu.  

---

## 5. Utjecaj iz stvarnog svijeta: Studija slučaja

**Tvrtka:** SecureSoft, srednje velika SaaS platforma koja obrađuje zdravstvene podatke.

| Metrička | Prije DKGEE‑a | Nakon DKGEE‑a (3‑mjesecni period) |
|----------|----------------|-----------------------------------|
| Prosječno vrijeme odgovora po pitanju | 2,8 sata | 7 minuta |
| Ručno pretraživanje dokaza (osoba‑sati) | 120 h/mjesečno | 18 h/mjesečno |
| Broj regulatornih neslaganja u revizijama | 5 godišnje | 0 (neslaganja nepostoje) |
| Zadovoljstvo tima za usklađenost (NPS) | 28 | 72 |
| ROI (na temelju ušteda radne snage) | – | ~ 210 tis. USD |

**Ključni faktori uspjeha**

1. **Trenutni regulatorni kontekst** – kad je NIST ažurirao SC‑7, graf je odmah poslao obavijest u UI, potičući tim da pregleda povezane odgovore.  
2. **Poreklo dokaza** – svaki odgovor prikazivao je klikabilnu poveznicu do točne odredbe i verzije, što je auditorima odmah zadovoljavalo zahtjeve.  
3. **Uklanjanje dupliciranja** – graf je eliminirao duple pohrane dokaza među različitim proizvodnim linijama, smanjujući troškove pohrane za **30 %**.  

SecureSoft planira proširiti motor na **procjene utjecaja na privatnost (PIA)** i integrirati ga u svoj **CI/CD pipeline** kako bi automatski validirao usklađenost politika pri svakom izdanju.

---

## 6. Često postavljena pitanja

**P1: Radi li motor s regulativama koje nisu na engleskom?**  
Da. Pipelin‑e za ekstrakciju entiteta uključuju višejezične modele; moguće je dodati kolektore feed‑ova za japanski APPI, brazilski LGPD i druge jezike, a graf čuva oznaku jezika na svakom čvoru.

**P2: Kako se rukuju proturječne regulative?**  
Stvaraju se veze `CONFLICTS_WITH` kada dva čvora imaju preklapajući opseg, ali različite zahtjeve. Mehanizam za preuzimanje rangira dokaze prema `confidenceScore` koji uzima u obzir hijerarhiju regulative (npr. GDPR > nacionalni zakon).

**P3: Je li sustav ovisan o specifičnom vendoru?**  
Sve ključne komponente temelje se na otvorenom softveru (Neo4j, Kafka, FastAPI). Jedina vanjska ovisnost je LLM API, ali se može zamijeniti bilo kojim modelom koji poštuje OpenAI‑kompatibilni endpoint.

**P4: Koja je politika čuvanja podataka za graf?**  
Preporučuje se **time‑travel** pristup: čuvati svaku verziju čvora nepromjenjivo, ali arhivirati starije snap‑shote u hladnu pohranu nakon 3 godine, dok se aktivni pogled grafa koristi za svakodnevna pitanja.

---

## 7. Kako započeti danas

1. **Pilotirajte sloj unosa** – odaberite jedan regulatorni izvor (npr. [ISO 27001](https://www.iso.org/standard/27001)) i preusmjerite ga u testnu Neo4j instancu.  
2. **Pokrenite uzorak preuzimanja** – upotrijebite priloženu Python skriptu `sample_retrieve.py` za upit „Koja je politika zadržavanja podataka za EU klijente?”. Provjerite vraćene čvorove dokaza.  
3. **Integrirajte u sandbox upitnik** – distribuirajte UI komponentu u staging okruženju Procurize‑a. Neka nekoliko analitičara isprobaju radnju “Primijeni dokaz”.  
4. **Mjerenje** – zabilježite početne metrike (vrijeme po odgovoru, broj ručnih pretraga) i usporedite nakon dva tjedna korištenja.  

Za praktičnu radionicu kontaktirajte Procurize Professional Services tim i zatražite **30‑dnevni paket ubrzane implementacije**.

---

## 8. Smjerovi za budućnost

- **Federirani grafovi znanja** – omogućiti dijeljenje anonimiziranih regulatornih preslikavanja među organizacijama uz očuvanje suvereniteta podataka.  
- **Auditori s dokazom nultog znanja (Zero‑Knowledge Proof)** – omogućiti revizorima da provjere usklađenost odgovora s regulativom bez otkrivanja samog dokaza.  
- **Prediktivno predviđanje regulative** – kombinirati graf s vremenskim modelima kako bi se anticipirale nadolazeće regulatorne promjene i proaktivno predložile revizije politika.  

Dinamički graf znanja nije statičko spremište; to je **živi motor usklađenosti** koji raste zajedno s regulatornim pejzažom i pokreće AI‑potaknuto automatiziranje u velikoj razmjeri.  

---

## <span class='highlight-content'>Pogledaj</span> Also

- [Dinamičko obogaćivanje grafova znanja za kontekstualizaciju upitnika u stvarnom vremenu (Video pregled)](https://www.youtube.com/watch?v=example)