
# Semanttinen haku voimauttama todisteiden haku AI‑turvallisuuskyselyihin

Turvallisuuskyselyt — olipa kyseessä **[SOC 2](https://secureframe.com/hub/soc-2/what-is-soc-2)** -auditointien tekijät, **[ISO 27001](https://www.iso.org/standard/27001)** -tarkastajat tai enterprise‑tasoiset hankintatiimit — ovat usein piilotettu pullonkaula SaaS‑myyntisykleissä. Perinteiset lähestymistavat perustuvat manuaaliseen etsimiseen jaettujen asemien, PDF‑tiedostojen ja politiikkavarastojen kautta, mikä on sekä ajallisesti kuluttavaa että virhealtista.

Tulee kuvaan **semanttinen haku** ja **vektoridatabasit**. Upottamalla jokaisen vaatimustenmukaisuustodisteen — politiikat, kontrollien toteutukset, auditointiraportit ja jopa Slack‑keskustelut — korkean‑ulottuvuuksisiin vektoreihin, mahdollistat AI‑ohjatun hakukerroksen, joka löytää relevantimmän katkelman millisekunneissa. Kun se yhdistetään **retrieval‑augmented generation (RAG)** -putkeen, järjestelmä voi koostaa täydellisiä, kontekstin huomioivia vastauksia, täydellisinä viitteineen, ilman että ihminen joutuu mukaan.

Neste artikkelissa käsittelemme:

1. Selitämme semanttisen todiste moottorin ydinrakenteet.  
2. Käymme läpi käytännön arkkitehtuurin modernien avoimen lähdekoodin komponenttien avulla.  
3. Näytämme, miten moottori integroidaan alustaan kuten Procurize end‑to‑end‑automaatiota varten.  
4. Keskustelemme hallinnon, turvallisuuden ja suorituskykyyn liittyvistä näkökohdista.  

## 1. Miksi semanttinen haku voittaa avainsanahaun

Avainsanahaku käsittelee asiakirjoja sanakirjoina. Jos tarkkaa lausetta "encryption‑at‑rest" ei koskaan esiinny politiikassa, mutta teksti sanoo "tiedot tallennetaan AES‑256:lla", avainsanahaku jää relevantista todistuksesta huomiotta. Semanttinen haku puolestaan tallentaa *merkityksen* muuntamalla teksti tiiviiksi upotuksiksi. Upotukset sijoittavat semanttisesti samankaltaiset lauseet lähelle toisiaan vektorialueella, jolloin moottori voi hakea lauseen "AES‑256 salaus" kun kysytään "encryption‑at‑rest".

### Hyödyt vaatimustenmukaisuustyönkulkuun

| Hyöty | Perinteinen avainsanahaku | Semanttinen haku |
|-------|----------------------------|------------------|
| Synonyymien palautus | Alhainen | Korkea |
| Lyhenteiden ja termien käsittely | Heikko | Vahva |
| Kielivariaatiot (esim. "data‑retention" vs "record‑keeping") | Jättää huomiotta | Tunnistaa |
| Monikielinen tuki (monikielisten mallien avulla) | Vaatii erillisiä indeksejä | Yhtenäinen vektorialue |

Korkeampi palautus suoraan kääntyy vähemmän unohdetuiksi todistuselementeiksi, mikä tarkoittaa, että tarkastajat saavat täydellisempiä vastauksia ja vaatimustenmukaisuustiimi käyttää vähemmän aikaa "puuttuvan asiakirjan" etsimiseen.

## 2. Ydinarkkitehtuurin yleiskatsaus

Alla on korkean tason kaavio todisteiden hakuputkesta. Virtaus on tarkoituksella modulaarinen, jotta jokaisen komponentin voi vaihtaa teknologian kehittyessä.

```mermaid
flowchart TD
    A["Document Sources"] --> B["Ingestion & Normalization"]
    B --> C["Chunking & Metadata Enrichment"]
    C --> D["Embedding Generation\n(LLM or SBERT)"]
    D --> E["Vector Store\n(Pinecone, Qdrant, Milvus)"]
    E --> F["Semantic Search API"]
    F --> G["RAG Prompt Builder"]
    G --> H["LLM Generator\n(Claude, GPT‑4)"]
    H --> I["Answer with Citations"]
    I --> J["Procurize UI / API"]
```

### 2.1 Asiakirjan lähteet
- **Politiikkavarasto** (Git, Confluence, SharePoint)  
- **Auditointiraportit** (PDF, CSV)  
- **Tukijärjestelmät** (Jira, ServiceNow)  
- **Viestintäkanavat** (Slack, Teams)  

### 2.2 Tietojen keruu ja normalisointi
Kevyt ETL‑tehtävä poimii raakatiedostot, muuntaa ne pelkäksi tekstiksi (käyttäen OCR:ää skannattuihin PDF‑tiedostoihin tarvittaessa) ja poistaa ylimääräisen boilerplate‑sisällön. Normalisointi sisältää:

- Henkilötietojen poistaminen (käyttäen DLP‑mallia)  
- Lähdemetadatan lisääminen (asiakirjatyypi, versio, omistaja)  
- Merkintä sääntelykehyillä (SOC 2, ISO 27001, GDPR)  

### 2.3 Pienemmiksi osioiksi pilkkominen ja metatietojen rikastus
Suuret asiakirjat jaetaan hallittaviin osioihin (tyypillisesti 200‑300 sanaa). Jokainen osa perii vanhemman asiakirjan metadatan ja saa myös **semanttisia tageja**, jotka generoidaan zero‑shot‑luokittelijalla. Esimerkkitagit: `"encryption"`, `"access‑control"`, `"incident‑response"`.

### 2.4 Upotusten generointi
Kaksi hallitsevaa lähestymistapaa:

| Malli | Kompromissi |
|-------|-------------|
| **Open‑source SBERT / MiniLM** | Alhaiset kustannukset, paikallisesti, nopea inferenssi |
| **Proprietary LLM embeddings (e.g., OpenAI text‑embedding‑ada‑002)** | Korkeampi laatu, API‑pohjainen, kustannus per token |

Upotusvektorit tallennetaan **vektoritietokantaan**, joka tukee likimääräistä lähimmän naapurin (ANN) hakua. Suosittuja vaihtoehtoja ovat **Pinecone**, **Qdrant** tai **Milvus**. Tietokanta tallentaa myös osien metadatan suodattamista varten.

### 2.5 Semanttisen haun API
Kun käyttäjä (tai automatisoitu työnkulku) esittää kysymyksen, kysely upotetaan samalla mallilla, ja ANN‑haku palauttaa k‑parhaan relevantin osan. Lisäsuodattimia voidaan käyttää, kuten "vain asiakirjat Q3‑2024:sta" tai "on kuuluttava SOC 2".

### 2.6 Retrieval‑Augmented Generation (RAG)
Haetut osat lisätään kehotuspohjaan, joka ohjeistaa LLM:n:

1. **Synteesi** tiivis vastaus.  
2. **Viittaa** jokaiseen todisteeseen markdown‑viitteellä (esim. `[1]`).  
3. **Vahvista**, että vastaus noudattaa pyydettyä sääntelyä.

Esimerkkikehote:

```
Olet vaatimustenmukaisuuden avustaja. Käytä seuraavia todistekatkelmia vastataksesi kysymykseen. Viittaa jokaiseen katkelmaan käyttäen muotoa [#].

Kysymys: Miten alusta salaa tiedot levossa?

Todisteet:
[1] "Kaikki S3:een tallennettu data on salattu AES‑256:lla palvelinpuolen salauksella."
[2] "PostgreSQL‑tietokannat käyttävät Transparent Data Encryption (TDE) -menetelmää 256‑bittisen avaimen kanssa."

Vastaus:
```

## 3. Integrointi Procurizeen

Procurize tarjoaa jo **kyselylomakehubin**, jossa jokainen kyselyn rivi voidaan linkittää asiakirja‑ID:hen. Semanttisen moottorin lisääminen luo uuden **"Automaattinen täyttö"** -painikkeen.

### 3.1 Työnkulun vaiheet
1. Käyttäjä valitsee kyselyn kohdan (esim. "Kuvaile varmuuskopiointipolitiikka").
2. Procurize lähettää kysymyksen tekstin Semanttisen haun API:lle.
3. Moottori palauttaa top‑3 todiste‑osat ja LLM‑luodun vastauksen.
4. Käyttöliittymä näyttää vastauksen muokattavissa sisäisesti viitelinkkien kanssa.
5. Hyväksynnän jälkeen vastaus ja sen lähde‑ID:t tallennetaan takaisin Procurize‑audit-lokiin, säilyttäen alkuperän.

### 3.2 Todellinen vaikutus
Äskettäinen tapaustutkimus (sisäinen) osoitti **72 % vähennys** kysymyksen keskimääräisessä vastausajassa — 12 minuutista manuaalista etsintää aleni alle 3 minuuttiin AI‑avusteista laatimista. Tarkkuus, mitattuna lähetysten jälkeisellä tarkastajan palautteella, parani **15 %**, pääosin koska puuttuvat todisteet poistettiin.

## 4. Hallinto, turvallisuus ja suorituskyky

### 4.1 Datan yksityisyys
- **Levossa oleva salaus** vektorivarastolle (käytä tietokannan sisäistä salausta).  
- **Zero‑trust‑verkko** API‑päätepisteille (keskinäinen TLS).  
- **Roolipohjainen pääsynvalvonta (RBAC)**: vain vaatimustenmukaisuuden insinöörit voivat käynnistää RAG‑generoinnin.

### 4.2 Mallipäivitykset
Upotusmallit tulisi versioida. Kun uusi malli otetaan käyttöön, korpuksen uudelleenindeksointi on suositeltavaa, jotta semanttinen avaruus pysyy yhtenäisenä. Inkrementaalista uudelleenindeksointia voidaan tehdä yöaikaan uusille lisätyille asiakirjoille.

### 4.3 Viiveen mittarit
| Komponentti | Tyypillinen viive |
|-------------|--------------------|
| Upotusten generointi (yksi kysely) | 30‑50 ms |
| ANN‑haku (top‑10) | 10‑20 ms |
| Kehotuksen kokoaminen + LLM‑vastaus (ChatGPT‑4) | 800‑1200 ms |
| Kokonais‑API‑kutsu | < 2 seconds |

Nämä luvut täyttävät helposti interaktiivisen käyttöliittymän odotukset. Eräprosessointia varten (esim. täydellisen kyselylomakkeen luominen kerralla) rinnakkaistetaan pyyntöputki.

### 4.4 Auditointi ja selitettävyys
Koska jokainen vastaus sisältää viitteet alkuperäisiin osiin, tarkastajat voivat **seurata alkuperän** heti. Lisäksi vektoritietokanta kirjaa kyselyvektorit, mikä mahdollistaa **"miksi tämä vastaus"** -näkymän, jonka voi visualisoida dimensiovähennyksellä (UMAP) -kaavioina vaatimustenmukaisuuden vastuuhenkilöille, jotka haluavat lisävakuutuksen.

## 5. Tulevaisuuden parannukset
1. **Monikielinen haku** – Käyttäen monikielisiä upotusmalleja (esim. LASER) tukemaan globaaleja tiimejä.  
2. **Palaute‑silmukka** – Tallenna tarkastajien muokkaukset koulutusdataksi LLM:n hienosäätöön, parantaen asteittain vastausten laatua.  
3. **Dynaaminen politiikan versiointi** – Automaattinen politiikan muutosten havaitseminen Git‑koukujen avulla ja vain vaikuttavien osien uudelleenindeksointi, pitää todistepohjan ajantasaisena.  
4. **Riskipohjainen priorisointi** – Yhdistämällä semanttinen moottori riskipisteytysmalliin, nostetaan ensisijaisesti tärkeimmät kyselykohdat esiin.

## 6. Aloitus: Nopea toteutusopas
1. **Aseta vektoritietokanta** (esim. Qdrant Dockerissa).  
2. **Valitse upotusmalli** (sentence‑transformers/paraphrase‑multilingual‑MPNET‑base‑v2).  
3. **Rakenna tietojen keruuputki** käyttäen Pythonin `langchain`‑ tai `Haystack`‑kirjastoja.  
4. **Ota käyttöön kevyt API** (FastAPI) joka palvelee `/search`‑ ja `/rag`‑päätettä.  
5. **Integroi Procurizeen** webhookien tai räätälöidyn UI‑lisäosan avulla.  
6. **Seuraa** Prometheus‑ ja Grafana‑koontinäyttöjä viiveiden ja virheiden osalta.

Noudattamalla näitä vaiheita SaaS‑organisaatio voi käynnistää tuotantotason semanttisen todiste‑moottorin alle viikossa, tuoden välittömän ROI:n kyselylomakkeiden läpimenoajasta.

## 7. Yhteenveto
Semanttinen haku ja vektoritietokannat avaavat uuden tason turvallisuuskyselyautomaatiolle. Siirtymällä avainsanahakua läheisemmäksi merkitysten hakuun ja yhdistämällä se retrieval‑augmented generationiin, yritykset voivat:

- **Kiihtyä** vastausaikojen alenemista minuuteista sekunteihin.  
- **Parantaa tarkkuutta** automaattisella viittauksella kaikkein relevantimpiin todisteisiin.  
- **Säilyttää vaatimustenmukaisuuden** jatkuvalla, auditointikelpoisella alkuperän seurannalla.

Kun nämä ominaisuudet on sisällytetty alustoihin kuten Procurize, vaatimustenmukaisuustiimi muuttuu pullonkaulasta strategiseksi kiihdytykseksi, jolloin nopeasti kasvavat SaaS‑yritykset voivat sulkea kauppoja nopeammin, täyttää auditoinnit täysin ja pysyä mukana alati kehittyvissä sääntelyvaatimuksissa.