
# AI podporná generácia s doplnením o vyhľadávanie pre tvorbu dôkazov v reálnom čase v bezpečnostných dotazníkoch

Bezpečnostné dotazníky, hodnotenia rizík dodávateľov a audity zhody sa stali každodenným úzkym hrdlom pre SaaS spoločnosti. Manuálne hľadanie politík, auditových správ a konfiguračných snímok nielenže plytvá inžinierskymi hodinami, ale tiež zavádza riziko zastaraných alebo nekonzistentných odpovedí.  

Generácia doplnená o vyhľadávanie (RAG) prináša nový paradigm: namiesto čistej reliance na statický veľký jazykový model (LLM) RAG **na dotaz vyhľadá najrelevantnejšie dokumenty** a odovzdá ich modelu na syntézu. Výsledkom je **odpoveď v reálnom čase, podložená dôkazmi**, ktorá sa dá spätne prepojiť na pôvodný zdroj, čím spĺňa požiadavky na rýchlosť aj auditovateľnosť.

V tomto článku sa pozrieme na:

* Rozbor základnej architektúry RAG a prečo sa hodí do pracovného postupu s dotazníkmi.  
* Ukážku, ako Procurize dokáže vložiť RAG pipeline bez narušenia existujúcich procesov.  
* Krok‑za‑krokovým sprievodcom implementáciou, od príjmu dát po overenie odpovede.  
* Bezpečnostné, súkromné a zhody‑súvisiace úvahy špecifické pre tento prístup.  
* Merateľný ROI a budúce vylepšenia, ako je kontinuálne učenie a dynamické skórovanie rizík.

---

## 1. Prečo klasické LLM zlyhávajú pri bezpečnostných dotazníkoch

| Obmedzenie | Vplyv na automatizáciu dotazníkov |
|------------|-----------------------------------|
| **Statický limit znalostí** | Odpovede odrážajú stav tréningových dát modelu, nie najnovšie revízie politík. |
| **Riziko halucinácií** | LLM môžu generovať dôveryhodne vyzerajúci text, ktorý nemá oporu v skutočnej dokumentácii. |
| **Chýbajúca pôvodnosť** | Audítori požadujú priame prepojenie na zdrojový artefakt (politika, **[SOC 2] report**, konfiguračný súbor). |
| **Regulačné obmedzenia** | Niektoré jurisdikcie vyžadujú, aby AI‑generovaný obsah bol overiteľný a nemenný. |

Tieto medzery nútia organizácie vracať sa k manuálnemu kopírovaniu‑a‑vkladaniu, čo ruší sľúbenú efektivitu AI.

---

## 2. Generácia doplnená o vyhľadávanie – Základné koncepty

V podstate RAG pozostáva z troch pohyblivých častí:

1. **Retriever** – Index (často vektorovo‑založený), ktorý dokáže rýchlo vyhľadať najrelevantnejšie dokumenty pre daný dotaz.  
2. **Generatívny model** – LLM, ktorý prijme vybraté úryvky a pôvodný prompt dotazníka a vytvorí koherentnú odpoveď.  
3. **Fusion Layer** – Logika, ktorá určuje, koľko úryvkov sa odovzdá, v akom poradí a akú váhu im priradí počas generácie.

### 2.1 Vektorové úložiská pre vyhľadávanie dôkazov

Vkladanie každého compliance artefaktu (politiky, auditové správy, konfiguračné snímky) do hustého vektorového priestoru umožňuje semantické vyhľadávanie podobností. Populárne open‑source možnosti zahŕňajú:

* **FAISS** – Rýchle, GPU‑akcelerované, ideálne pre vysokovýkonné pipeline.  
* **Milvus** – Cloud‑natívny, podporuje hybridné indexovanie (skalar + vektor).  
* **Pinecone** – Spravovaná služba s vstavanými bezpečnostnými kontrolami.

### 2.2 Prompt Engineering pre RAG

Dobre navrhnutý prompt zabezpečí, že LLM bude považovať vyhľadaný kontext za *autoritatívny dôkaz*.

```text
Ste analytik pre compliance, ktorý odpovedá na bezpečnostný dotazník. Používajte IBA poskytnuté úryvky dôkazov. Citujte každý úryvok s jeho ID zdroja. Ak odpoveď nemôže byť plne podložená, označte ju na manuálnu kontrolu.
```

Prompt môže byť templátovaný v Procurize tak, aby každá položka dotazníka automaticky dostala pripojené dôkazy.

---

## 3. Integrácia RAG do platformy Procurize

Nižšie je vysoká úroveň diagramu, ktorý zobrazujе, kde RAG zapadá do existujúceho pracovného postupu Procurize.

```mermaid
graph LR
    A["Položka dotazníka"] --> B["RAG služba"]
    B --> C["Retriever (vektorový obchod)"]
    C --> D["Top‑k úryvky dôkazov"]
    D --> E["LLM generátor"]
    E --> F["Návrh odpovede s citáciami"]
    F --> G["Procurize UI pre revíziu"]
    G --> H["Uložená finálna odpoveď"]
    style B fill:#f9f,stroke:#333,stroke-width:2px
    style G fill:#bbf,stroke:#333,stroke-width:2px
```

**Kľúčové integračné body**

* **Spustenie** – Keď používateľ otvorí neodpovedanú položku dotazníka, Procurize pošle text otázky do RAG microservice.  
* **Obohatenie kontextu** – Retriever načíta až *k* (zvyčajne 3‑5) najrelevantnejších úryvkov, každý označený stabilným identifikátorom (napr. `policy:ISO27001:5.2`).  
* **Návrh odpovede** – LLM vytvorí návrh, ktorý obsahuje inline citácie ako `[policy:ISO27001:5.2]`.  
* **Ľudský zásah** – UI pre revíziu zvýrazní citácie, umožní editorom upraviť, schváliť alebo odmietnuť. Schválené odpovede sa uložia spolu s metadátami pôvodu.

---

## 4. Krok‑za‑krokový sprievodca implementáciou

### 4.1 Príprava korpusu dôkazov

| Akcia | Nástroj | Tipy |
|------|--------|------|
| Zbierať | Interný repozitár dokumentov (Confluence, SharePoint) | Udržiavať jedinečný priečinok s pravdou pre compliance artefakty. |
| Normalizovať | Pandoc, vlastné skripty | Previesť PDF, DOCX a markdown na čistý text; odstrániť hlavičky/pätičky. |
| Oznámiť | YAML front‑matter, vlastná metadátová služba | Pridať polia ako `type: policy`, `framework: SOC2`, `last_modified`. |
| Verzia | Git LFS alebo DMS s nemennými verziami | Zaručuje auditovateľnosť každého úryvku. |

### 4.2 Vytvorenie vektorového indexu

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

model = SentenceTransformer('all-MiniLM-L6-v2')
docs = []   # zoznam (id, text) dvojíc
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')
```

*Uložte mapovanie od vektorových ID k metadátam dokumentu v ľahkej NoSQL tabuľke pre rýchle vyhľadávanie.*

### 4.3 Nasadenie RAG služby

Typický microservice stack:

* **FastAPI** – Spracováva HTTP požiadavky od Procurize.  
* **FAISS** – In‑process vyhľadávanie vektorov (alebo externé cez gRPC).  
* **OpenAI / Anthropic LLM** – End‑point pre generáciu (alebo samostatne hostovaný LLaMA).  
* **Redis** – Cache pre nedávne dotazy na zníženie latencie.

```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 Prepojenie do UI Procurize

*Pridajte tlačidlo „Generovať pomocou AI“ vedľa každého poľa dotazníka.*  
Keď používateľ klikne:

1. Zobrazí sa spinner počas čakania na odpoveď RAG služby.  
2. Návrh odpovede sa automaticky naplní do textového poľa.  
3. Citácie sa zobrazia ako badge; kliknutím na badge sa otvorí náhľad zdrojového dokumentu.  

### 4.5 Overovanie a kontinuálne učenie

* **Ľudská revízia** – Vyžadujte, aby aspoň jeden compliance analytik schválil každú AI‑generovanú odpoveď pred publikovaním.  
* **Spätná väzba** – Zachytávajte signály schválenia/odmietnutia a uložte ich do tabuľky „review outcomes“.  
* **Doladenie** – Periodicky doladte LLM na schválených pároch otázka‑odpoveď, aby ste znížili halucinácie.  

---

## 5. Bezpečnostné a súkromné úvahy

| Obava | Opatrenie |
|-------|-----------|
| Únik dát – Vektory môžu odhaliť citlivý text. | Používajte lokálne embedding modely; neodosielajte surové dokumenty na externé API. |
| Injekcia modelu – Škodlivý dotaz môže oklamať LLM. | Sanetizujte vstupy, vynucujte whitelist povolených vzorov otázok. |
| Manipulácia pôvodu – Zmena zdrojových ID po generovaní odpovede. | Uchovávajte ID zdrojov v nemennej evidencii (napr. AWS QLDB alebo blockchain). |
| Regulačné audity – Potreba preukázať využitie AI. | Logujte každý RAG požiadavok s časovým razítkom, hashom získaných úryvkov a verziou LLM. |
| Riadenie prístupu – Iba oprávnené role môžu spustiť RAG. | Integrovať s RBAC v Procurize; požadovať MFA pre akcie generovania AI. |

---

## 6. Meranie dopadu

Pilotný projekt vykonaný v stredne veľkej SaaS firme (≈150 inžinierov) priniesol nasledujúce metriky počas 6‑týždňového obdobia:

| Metrika | Pred RAG | Po RAG | Zlepšenie |
|---------|----------|--------|-----------|
| Priemerný čas tvorby odpovede | 12 min | 1,8 min | 85 % zníženie |
| Manuálne chyby citácií | 27 % | 4 % | 85 % zníženie |
| Miera schválenia pri prvom prezeraní | 58 % | 82 % | +24 pp |
| Štvrťročné náklady na zhodu | $120 k | $78 k | úspora $42 k |

Tieto čísla ukazujú, že RAG nielen zrýchľuje reakčný čas, ale aj zvyšuje kvalitu odpovedí a znižuje auditné prekážky.

---

## 7. Budúce rozšírenia

1. **Dynamické skórovanie rizík** – Spojenie RAG s risk engine, ktorý upravuje dôveru odpovede podľa veku dôkazu.  
2. **Multimodálne vyhľadávanie** – Zahrnutie screenshotov, konfiguračných súborov a dokonca Terraform state ako vyhľadateľné aktíva.  
3. **Graf znalostí naprieč organizáciou** – Prepojenie dôkazov medzi dcérskymi spoločnosťami, čím sa zabezpečí globálna konzistencia politík.  
4. **Upozornenia na zmeny politík v reálnom čase** – Keď sa zdrojový dokument aktualizuje, automaticky označte ovplyvnené odpovede na revíziu.  

---

## 8. Kontrolný zoznam pre spustenie

- [ ] Zbierať všetky compliance artefakty do jedného, verzovaného repozitára.  
- [ ] Vybrať vektorové úložisko (FAISS, Milvus, Pinecone) a vygenerovať embeddingy.  
- [ ] Nasadiť RAG microservice (FastAPI + LLM) za firewallom.  
- [ ] Rozšíriť UI Procurize o tlačidlo „Generovať pomocou AI“ a zobrazovanie citácií.  
- [ ] Definovať politiku pre ľudskú revíziu a zachytávanie spätnej väzby.  
- [ ] Spustiť pilot na nízko‑rizikovej sade dotazníkov; iterovať na základe spätnej väzby revízorov.  

Nasledujúc tento plán dokážete prejsť z **reaktívneho, manuálneho** procesu tvorby dotazníkov na **proaktívny, AI‑augmented** operáciu, ktorá poskytuje dôveryhodné dôkazy na jedno kliknutie.

---

## Pozri aj

- [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)