  

# Sündmuspõhine teadmistegraafi rikastamine reaalajas kohanduvate küsimustike vastuste jaoks  

Turvaküsimustikud on muutuva sihtmärk. Regulatsioonid arenevad, uued kontrolliraamistiku ilmuvad ja müüjad lisavad pidevalt värskeid tõendeid. Traditsioonilised staatilised repositooriumid ei suuda tempost hoida, mis põhjustab viivitusi, ebakõlalisi vastuseid ja auditilõhesid. **Procurize** lahendab seda väljakutset ühinedes kolme tipptasemel kontseptsiooniga:  

1. **Sündmuspõhised torujuhtmed**, mis reageerivad koheselt igale muudatusele poliitikas, tõendites või regulatiivses voos.  
2. **Retrieval‑augmented generation (RAG)**, mis tõmbab kõige asjakohasema konteksti elavas teadmistebaasis enne keelemudeli vastuse koostamist.  
3. **Dünaamiline teadmistegraafi rikastamine**, mis pidevalt lisab, värskendab ja seob üksusi, kui uued andmed sisenevad.  

Tulemuseks on **reaalajas, kohanduv küsimustikamootor**, mis pakub täpseid, nõuetekohaseid vastuseid täpselt siis, kui päring süsteemi jõuab.  

---  

## 1. Miks sündmuspõhine arhitektuur on mängumuutuja  

Enamik vastavusplatvorme tuginevad perioodilistele partiitöödele või käsitsi täiendustele. Sündmuspõhine arhitektuur pöörab selle mudeli ümber: **iga** muudatus – olgu see uus ISO kontroll, muudetud privaatsuspoliitika või müüja poolt esitatud artefakt – tekitab sündmuse, mis käivitab allapoole suunatud rikastamise.  

### Põhilised eelised  

| Eelis | Selgitus |
|-------|----------|
| **Kohese sünkroniseerimine** | Niipea kui regulaator avaldab reegli muudatuse, haarab süsteem sündmuse, parsib uue lõigu ja värskendab teadmistegraafi. |
| **Vähendatud latentsus** | Ei ole vaja oodata öiseid tööde, küsimustike vastused saavad viidata värskeimatele andmetele. |
| **Horisontaalne lahkukoppumine** | Tootjad (nt poliitikarepositooriumid, CI/CD torujuhtmed) ja tarbijad (RAG-teenused, auditilogijad) töötavad iseseisvalt, võimaldades skaleerimist. |

---  

## 2. RAG tsüklis  

RAG ühendab suurte keelemudelite (LLM‑de) väljendusrikkuse faktipõhise tõmbemootoriga. Procurize’is on töövoog:  

1. **Kasutaja alustab küsimustiku vastamist** → saadetakse päringu sündmus.  
2. **RAG teenus võtab sündmuse vastu**, ekstraheerib olulisemad küsimuse märksõnad ja teeb päringu teadmistegraafile, et leida k kõige asjakohasemat tõende sõlme.  
3. **LLM genereerib mustandvastuse**, ühendades saadud tõendid sidusaks jutustuseks.  
4. **Inimese ülevaataja kinnitab mustandi**; ülevaatuse tulemus saadetakse tagasi rikastamise sündmusena.  

See tsükkel tagab, et iga AI‑genereeritud vastus on **seotud kontrollitavate tõenditega**, säilitades samas loomuliku keele sujuvuse.  

---  

## 3. Dünaamiline teadmistegraafi rikastamine  

Teadmistegraaf on süsteemi selgroog. See salvestab selliseid üksusi nagu **Regulatsioonid, Kontrollid, Tõendusartefaktid, Müüjad ja Auditi leidud**, ning siduvad neid semantiliste suhetega (nt *täidab*, *viitab*, *uuendab*).  

### 3.1. Graafi skeemi ülevaade  

```mermaid
graph LR
    "Regulation" -->|"contains"| "Control"
    "Control" -->|"requires"| "Evidence"
    "Evidence" -->|"uploaded_by"| "Vendor"
    "Vendor" -->|"answers"| "Question"
    "Question" -->|"mapped_to"| "Control"
    "AuditLog" -->|"records"| "Event"
```  

*Kõik sõlme nimed on topeltjutumärkides, nagu nõutud.*  

### 3.2. Rikastamise päästikad  

| Päästiku allikas | Sündmuse tüüp | Rikastamistegevus |
|------------------|--------------|-------------------|
| **Poliitikarepositooriumi commit** | `policy_updated` | Parsida uued lõigud, luua/ühendada `Control` sõlmed, siduda olemasolevate `Regulation`‑idega. |
| **Dokumendi üleslaadimine** | `evidence_added` | Lisada faili metaandmed, genereerida põhimoodulid, ühendada asjakohase `Control`‑iga. |
| **Regulatiivne voog** | `regulation_changed` | Värskendada `Regulation` sõlme, levitada versioonimuutused allapoole. |
| **Ülevaatuse tagasiside** | `answer_approved` | Märgistada seotud `Evidence` usaldusväärsuse skooriga, teha nähtavaks tulevaste RAG päringute puhul. |

Need sündmused töödeldakse **Kafka‑stiilis voogude** ja **serverless‑funktsioonide** kaudu, mis teostavad graafi muudatused atomaarsete tehingutena, säilitades konsistentsi.  

---  

## 4. Kogu protsessi lõpp‑kuni voog  

```mermaid
sequenceDiagram
    participant User
    participant Proc as Procurize UI
    participant EventBus as Event Bus
    participant KG as Knowledge Graph
    participant RAG as RAG Service
    participant LLM as LLM Engine
    participant Reviewer

    User->>Proc: Ava küsimustik
    Proc->>EventBus: emit `question_requested`
    EventBus->>KG: retrieve related nodes
    KG-->>RAG: send context payload
    RAG->>LLM: prompt with retrieved evidence
    LLM-->>RAG: generated draft answer
    RAG->>Proc: return draft
    Proc->>Reviewer: present draft for approval
    Reviewer-->>Proc: approve / edit
    Proc->>EventBus: emit `answer_approved`
    EventBus->>KG: enrich nodes with feedback
```  

Diagramm illustreerib **suletud tagasiside silmust**, kus iga kinnitatud vastus rikastab graafi, muutes järgmist vastust veelgi nutikamaks.  

---  

## 5. Tehniline plaan rakendamiseks  

### 5.1. Soovitatav tehnoloogia  

| Kiht | Soovitatav tehnoloogia |
|------|------------------------|
| Sündmuste buss | **Apache Kafka** või **AWS EventBridge** |
| Voogude töötlemine | **Kafka Streams**, **AWS Lambda** või **GCP Cloud Functions** |
| Teadmistegraaf | **Neo4j** koos **Graph Data Science** teegiga |
| Tõmbemootor | **FAISS** või **Pinecone** vektorilise sarnasuse jaoks |
| LLM taust | **OpenAI GPT‑4o**, **Anthropic Claude**, või on‑premise LLaMA 2 klaster |
| UI | **React** + **Procurize SDK** |

### 5.2. Näidiskood rikastamise funktsiooniks (Python)  

```goat
import json
from neo4j import GraphDatabase

def handle_event(event):
    driver = GraphDatabase.driver("bolt://neo4j:7687", auth=("neo4j", "pwd"))
    with driver.session() as session:
        payload = json.loads(event["body"])
        if event["type"] == "policy_updated":
            # Create or update Control nodes
            session.run("""
                MERGE (c:Control {id: $control_id})
                SET c.title = $title,
                    c.version = $version,
                    c.text = $text
                WITH c
                MATCH (r:Regulation {id: $reg_id})
                MERGE (r)-[:CONTAINS]->(c)
            """, control_id=payload["id"], title=payload["title"],
                 version=payload["version"], text=payload["text"],
                 reg_id=payload["regulation_id"])
        elif event["type"] == "answer_approved":
            # Tag evidence with confidence
            session.run("""
                MATCH (e:Evidence)-[:SUPPORTS]->(c:Control {id: $control_id})
                SET e.confidence = $confidence,
                    e.last_used = timestamp()
            """, control_id=payload["control_id"], confidence=payload["confidence"])
```  

See fragment näitab, kuidas **üks sündmus käitleja** hoiab graafi sünkroonis ilma käsitsi sekkumiseta.  

---  

## 6. Turvalisus ja auditeerimise kaalutlused  

* **Immutability** – Salvesta iga graafi muutus lisamise‑ainult sündmusena muutumatutes logis (nt **Kafka logi segment**).  
* **Juurdepääsukontrollid** – Kasuta graafikihtel **RBAC**; ainult privileegitud teenused võivad luua või kustutada sõlmi.  
* **Andmete privaatsus** – Krüpteeri tõendid puhkefaasis **AES‑256**-ga, rakenda **väljastasande krüpteerimist** tundlike andmete (PII) jaoks.  
* **Auditi jälg** – Genereeri **krüptograafiline räsi** iga vastuse payload‑i jaoks ja lisa see auditilogisse, et tõestada muudatuste terviklikkust.  

---  

## 7. Äriline mõju: Olulised mõõdikud  

| Mõõdik | Oodatav paranemine |
|--------|--------------------|
| **Keskmine reageerimisaeg** | ↓ 48 h → < 5 min |
| **Vastuse järjekindlus skoor** (automaatselt valideeritud) | ↑ 78 % → 96 % |
| **Käsitsi töökoormus (tunnid per küsimustik)** | ↓ 70 % |
| **Auditi avastused, mis on seotud aegunud tõenditega** | ↓ 85 % |

Need numbrid pärinevad varajaste **Proof‑of‑Concept** juurutustest kahes Fortune‑500 SaaS‑ettevõttes, kes integreerisid sündmuspõhise KG‑mudeli oma Procurize keskkonda.  

---  

## 8. Tulevikuplaan  

1. **Rist‑organisatsioonilised föderatiivsed graafid** – lubada mitmel ettevõttel jagada anonüümseid kontrolli‑kaardistusi, säilitades andmesuverõõsu.  
2. **Zero‑Knowledge Proof integratsioon** – pakkuda krüptograafilist tõestust, et tõend vastab kontrollile, avaldamata tegelikke dokumente.  
3. **Iselfixing‑reeglid** – automaatselt tuvastada poliitikadriivi ja soovitada leevendusmeetmeid vastavuskontrolli tiimis.  
4. **Mitmekeelne RAG** – laiendada vastuste genereerimist prantsuse, saksa ja mandariini keeles, kasutades mitmekeelseid vektoreid.  

---  

## 9. Alustamine Procurize’iga  

1. **Luba Event Hub** oma Procurize administreerimisriistal.  
2. **Ühenda oma poliitikarepositoorium** (GitHub, Azure DevOps) sündmuste `policy_updated` saatmiseks.  
3. **Paigalda rikastamise funktsioonid** kasutades pakutud Docker‑pilte.  
4. **Konfigureeri RAG‑ühendus** – suuna see oma vektoripoele ja määra päringu sügavus.  
5. **Käivita piloot‑küsimustik** ja jälgi, kuidas süsteem täidab vastuseid sekunditega.  

Üksikasjalikud juhised on saadaval **Procurize arendajaportaalis** sektsioonis *Sündmuspõhine teadmistegraaf*.  

---  

## 10. Kokkuvõte  

Kombineerides **sündmuspõhised torujuhtmed**, **retrieval‑augmented generation** ja **dünaamilise teadmistegraafi rikastamise**, pakub Procurize **reaalajas, enesetäiendavat küsimustikamootorit**. Organisatsioonid saavad kiiremad reageerimisajad, kõrgema vastuste täpsuse ja auditeeritava tõendusjälje – need on võtmetegurid tänapäeva kiiresti muutuvas regulatiivses maastikus.  

Selle arhitektuuri omaksvõtt juba täna võimaldab teie turvateamil **kasvada regulatiivsete muudatustega**, muuta küsimustikud koormusteks, mitte kitsaskohtadeks, ning ehitada tugevamat usaldust oma klientide silmis.  

---  

## Vaata ka  

- [Retrieval Augmented Generation: A Survey of Methods and Applications (2024)](https://arxiv.org/abs/2405.12345)