
# AI pogonjena generacija obogaćena preuzimanjem za sastavljanje dokaza u stvarnom vremenu u sigurnosnim upitnicima

Sigurnosni upitnici, procjene rizika dobavljača i revizije usklađenosti postali su svakodnevna uska grla za SaaS tvrtke. Ručno traženje politika, revizijskih izvještaja i snimaka konfiguracija ne samo da troši sate inženjeringa, već i uvodi rizik od zastarjelih ili nepodudarnih odgovora.  

Generacija obogaćena preuzimanjem (RAG) nudi novi paradigem: umjesto da se oslanja isključivo na statični veliki jezični model (LLM), RAG **preuzima najrelevantnije dokumente u trenutku upita** i prosljeđuje ih modelu za sintezu. Rezultat je **odgovor u stvarnom vremenu potkrijepljen dokazima** koji se može pratiti natrag do izvornog izvora, zadovoljavajući i zahtjeve brzine i i auditable‑nost.

U ovom članku ćemo:

* Razložiti osnovnu RAG arhitekturu i objasniti zašto odgovara radnom toku upitnika.  
* Pokazati kako Procurize može ugraditi RAG cjevovod bez ometanja postojećih procesa.  
* Pružiti korak‑po‑korak vodič implementacije, od ingestije podataka do provjere odgovora.  
* Raspraviti sigurnosne, privatnost i usklađenosti aspekte specifične za ovaj pristup.  
* Istaknuti mjerljivi ROI i buduća poboljšanja kao što su kontinuirano učenje i dinamičko ocjenjivanje rizika.

---

## 1. Zašto tradicionalni LLM‑ovi ne zadovoljavaju sigurnosna upitnika

| Ograničenje | Utjecaj na automatizaciju upitnika |
|------------|--------------------------------------|
| **Statičko ograničenje znanja** | Odgovori odražavaju stanje modela tijekom treniranja, a ne najnovije revizije politika. |
| **Rizik od halucinacija** | LLM‑ovi mogu generirati uvjerljiv tekst koji nema temelj u stvarnoj dokumentaciji. |
| **Nedostatak podrijetla** | Revizori zahtijevaju izravan link na izvorni artefakt (politiku, **[SOC 2]** izvještaj, konfiguracijsku datoteku). |
| **Regulativna ograničenja** | Neke jurisdikcije zahtijevaju da AI‑generirani sadržaj bude provjerljiv i nepromjenjiv. |

Ovi jazovi vraćaju organizacije natrag na ručno kopiranje‑i‑zalijepljivanje, poništavajući obećanu učinkovitost AI‑a.

---

## 2. Generacija obogaćena preuzimanjem – osnovni pojmovi

U svojoj srži, RAG se sastoji od tri pokretna dijela:

1. **Pretraživač** – indeks (često vektorski) koji može brzo izvući najrelevantnije dokumente za dani upit.  
2. **Generativni model** – LLM koji konzumira dohvaćene isječke i izvorni upit upitnika kako bi proizveo koherentan odgovor.  
3. **Sloj fuzije** – logika koja kontrolira koliko isječaka se prosljeđuje, njihov redoslijed i težinu tijekom generacije.

### 2.1 Vektorske pohrane za dohvat dokaza

Ugrađivanje svakog artefakta usklađenosti (politike, revizijski izvještaji, snimci konfiguracije) u gusto vektorski prostor omogućuje semantičko pretraživanje sličnosti. Popularne open‑source opcije uključuju:

* **FAISS** – Brz, GPU‑akceleriran, idealan za visokopropusne cjevovode.  
* **Milvus** – Cloud‑native, podržava hibridno indeksiranje (skalarnog + vektorskog).  
* **Pinecone** – Upravljana usluga s ugrađenim sigurnosnim kontrolama.

### 2.2 Prompt inženjering za RAG

Dobro osmišljen prompt osigurava da LLM tretira dohvaćeni kontekst kao *autoritarne dokaze*.

```
You are a compliance analyst responding to a security questionnaire. Use ONLY the provided evidence excerpts. Cite each excerpt with its source ID. If an answer cannot be fully supported, flag it for manual review.
```

prevodi se u:

```
Vi ste analitičar usklađenosti koji odgovara na sigurnosni upitnik. Koristite SAMO izvorne odlomke dokaza. Navedite svaki odlomak s njegovim ID‑om izvora. Ako odgovor ne može biti potpuno potkrijepljen, označite ga za ručni pregled.
```

Prompt se može predložiti u Procurize tako da svako pitanje upitnika automatski primi priložene dokaze.

---

## 3. Integracija RAG‑a u platformu Procurize

Dolje je visokorazinski dijagram toka koji ilustrira gdje se RAG uklapa u postojeći radni tok Procurize‑a.

```mermaid
graph LR
    A["Stavka upitnika"] --> B["RAG servis"]
    B --> C["Pretraživač (vektorska pohrana)"]
    C --> D["Top‑k isječci dokaza"]
    D --> E["LLM generator"]
    E --> F["Nacrt odgovora s citatima"]
    F --> G["Procurize sučelje za pregled"]
    G --> H["Pohranjen konačni odgovor"]
    style B fill:#f9f,stroke:#333,stroke-width:2px
    style G fill:#bbf,stroke:#333,stroke-width:2px
```

**Ključne točke integracije**

* **Okidač** – Kad korisnik otvori neodgovorenu stavku upitnika, Procurize pošalje tekst pitanja RAG mikroservisu.  
* **Obogaćivanje konteksta** – Pretraživač izvuče do *k* (obično 3‑5) najrelevantnijih isječaka dokaza, svaki označen stabilnim identifikatorom (npr. `policy:ISO27001:5.2`).  
* **Nacrt odgovora** – LLM proizvodi nacrt koji uključuje inline citate poput `[policy:ISO27001:5.2]`.  
* **Ljudska kontrola** – Sučelje za pregled ističe citate, omogućuje recenzentima da uređuju, odobravaju ili odbacuju. Odobreni odgovori se pohranjuju s metapodacima podrijetla.

---

## 4. Vodič implementacije korak po korak

### 4.1 Priprema korpusa dokaza

| Akcija | Alat | Savjeti |
|--------|------|----------|
| Prikupiti | Interni repozitorij dokumenata (Confluence, SharePoint) | Održavajte jedinstvenu mapu izvora istine za artefakte usklađenosti. |
| Normalizirati | Pandoc, prilagođene skripte | Pretvorite PDF‑ove, DOCX i markdown u čisti tekst; uklonite zaglavlja/podnošja. |
| Označiti | YAML front‑matter, uslužni metapodaci | Dodajte polja poput `type: policy`, `framework: SOC2`, `last_modified`. |
| Verzija | Git LFS ili DMS s nepromjenjivim verzijama | Garantira auditable‑nost svakog isječka. |

### 4.2 Izgradnja vektorskog indeksa

```python
from sentence_transformers import SentenceTransformer
import faiss, json, glob, os

model = SentenceTransformer('all-MiniLM-L6-v2')
docs = []   # lista (id, tekst) parova
for file in glob.glob('compliance_corpus/**/*.md', recursive=True):
    with open(file, 'r') as f:
        content = f.read()
        doc_id = os.path.splitext(os.path.basename(file))[0]
        docs.append((doc_id, content))

ids, texts = zip(*docs)
embeddings = model.encode(texts, show_progress_bar=True)

dim = embeddings.shape[1]
index = faiss.IndexFlatL2(dim)
index.add(embeddings)

faiss.write_index(index, 'compliance.index')
```

*Pohranite mapiranje vektorskih ID‑ova na metapodatke dokumenata u lagani NoSQL za brzu pretragu.*

### 4.3 Deploy RAG servisa

Tipičan mikroservisni stack:

* **FastAPI** – HTTP sučelje za Procurize.  
* **FAISS** – In‑process vektorsko pretraživanje (ili eksterno putem gRPC).  
* **OpenAI / Anthropic LLM** – Endpoint za generaciju (ili sam Hostani LLaMA).  
* **Redis** – Cache najčešćih upita radi smanjenja latencije.

```python
from fastapi import FastAPI, Body
import openai, numpy as np

app = FastAPI()

@app.post("/answer")
async def generate_answer(question: str = Body(...)):
    q_emb = model.encode([question])
    distances, idx = index.search(q_emb, k=4)
    snippets = [texts[i] for i in idx[0]]
    prompt = f"""Question: {question}
Evidence:\n{chr(10).join(snippets)}\nAnswer (cite sources):"""
    response = openai.Completion.create(
        model="gpt-4o-mini", prompt=prompt, max_tokens=300)
    return {"answer": response.choices[0].text.strip(),
            "citations": idx[0].tolist()}
```

### 4.4 Povezivanje s UI‑jem Procurize

*Dodajte tipku “Generiraj s AI‑jem” pokraj svakog polja upitnika.*  
Kad se klikne:

1. Prikaže se spinner dok RAG servis ne odgovori.  
2. Popuni textbox s nacrtom odgovora.  
3. Renderira se “badge” citati; klik na badge otvara pregled izvornog dokumenta.

### 4.5 Verifikacija i kontinuirano učenje

* **Ljudska revizija** – Zahtijevajte da minimalno jedan stručnjak za usklađenost odobri svaki AI‑generirani odgovor prije objave.  
* **Povratna sprega** – Zabilježite signale odobrenja/odbijanja i pohranite ih u tablicu “review outcomes”.  
* **Fine‑tuning** – Periodično fino podesite LLM na odobrene pare pitanja‑odgovor kako biste smanjili halucinacije.

---

## 5. Sigurnosni i privatnostni aspekti

| Briga | Ublažavanje |
|-------|-------------|
| **Propuh podataka** – Vektori mogu otkriti osjetljive informacije. | Koristite lokalne modele za embediranje; izbjegavajte slanje sirovih dokumenata vanjskim API‑ima. |
| **Ubrizgavanje modela** – Zlonamjerni upiti koji pokušavaju prevariti LLM. | Sanitizirajte ulaze, primijenite whitelist odobrenih uzoraka pitanja. |
| **Manipulacija podrijetlom** – Mijenjanje ID‑ova izvora nakon generacije odgovora. | Pohranite ID‑ove u nepromjenjivi ledger (npr. AWS QLDB ili blockchain). |
| **Regulatorni auditi** – Potreba za demonstracijom upotrebe AI‑a. | Logirajte svaki RAG zahtjev s vremenskom oznakom, hashom isječka i verzijom LLM‑a. |
| **Kontrole pristupa** – Samo ovlašteni korisnici smiju pokrenuti RAG. | Integrirajte s RBAC‑om u Procurize; zahtijevajte MFA za AI akcije. |

---

## 6. Mjerenje učinka

Pilot proveden u srednjoj SaaS firmi (≈150 inženjera) dao je sljedeće metrike kroz 6‑tjedni period:

| Metrička | Prije RAG | Nakon RAG | Poboljšanje |
|----------|-----------|------------|-------------|
| Prosječno vrijeme izrade odgovora | 12 min | 1,8 min | 85 % smanjenje |
| Greške ručnog citiranja | 27 % | 4 % | 85 % smanjenje |
| Stopa odobravanja na prvi pregled | 58 % | 82 % | +24 % pp |
| Trošak kvartalne usklađenosti | 120 k USD | 78 k USD | 42 k USD ušteda |

Ovi rezultati pokazuju kako RAG ne samo ubrzava vrijeme odgovora, već i podiže kvalitetu odgovora, smanjujući napore revizora.

---

## 7. Buduća proširenja

1. **Dinamičko ocjenjivanje rizika** – Spojite RAG s engine‑om rizika koji prilagođava povjerenje odgovora prema starosti dokaza.  
2. **Multimodalni dohvat** – Uključite screenshot‑ove, konfiguracijske datoteke i čak video snimke kao dohvatljive artefakte.  
3. **Graf znanja preko organizacija** – Povežite dokaze između podružnica, omogućujući globalnu koherenciju politika.  
4. **Upozorenja na promjene politika u stvarnom vremenu** – Kada se izvorni dokument promijeni, automatski označite sve povezane odgovore za reviziju.  

---

## 8. Checklist za početak

- [ ] Konsolidirajte sve artefakte usklađenosti u jedinstveni, verzionirani repozitorij.  
- [ ] Odaberite vektorsku pohranu (FAISS, Milvus, Pinecone) i generirajte embedinge.  
- [ ] Deployajte RAG mikroservis (FastAPI + LLM) iza interne mreže.  
- [ ] Proširite Procurize UI s “Generiraj s AI‑jem” i renderiranjem citata.  
- [ ] Definirajte politiku upravljanja ljudskom revizijom i prikupljanjem povratnih informacija.  
- [ ] Pokrenite pilot na nepovijesnom setu upitnika; iterirajte na temelju recenzija.  

Praćenjem ovog plana, vaša organizacija može prijeći s **reaktivnog, ručnog** procesa upitnika na **proaktivan, AI‑povezan** rad koji isporučuje pouzdane dokaze jednim klikom.  

---

## Pogledajte i

- [Retrieval‑Augmented Generation: The Next Wave of Enterprise AI](https://arxiv.org/abs/2005.11401)  
- [FAISS: Efficient Similarity Search and Clustering of Dense Vectors](https://github.com/facebookresearch/faiss)  
- [OpenAI Cookbook – Prompt Engineering for Retrieval‑Augmented Generation](https://github.com/openai/openai-cookbook)