
# Güvenlik Anketlerinde Gerçek Zamanlı Kanıt Toplama için AI Destekli Retrieval Augmented Generation

Güvenlik anketleri, satıcı risk değerlendirmeleri ve uyumluluk denetimleri, SaaS şirketleri için günlük bir darboğaz haline geldi. Politika belgeleri, denetim raporları ve yapılandırma anlık görüntülerinin manuel olarak bulunması yalnızca mühendislik saatlerini tüketmekle kalmaz, aynı zamanda eski veya tutarsız yanıt riski de yaratır.  

Retrieval‑Augmented Generation (RAG) yeni bir paradigma sunar: statik bir Büyük Dil Modeli (LLM)’ye tamamen güvenmek yerine, RAG **sorgu anında en ilgili belgeleri alır** ve bunları sentez için modele besler. Sonuç, **gerçek zamanlı, kanıt destekli bir yanıt** olur; bu yanıt, orijinal kaynağa geri izlenebilir ve hem hız hem de denetlenebilirlik gereksinimlerini karşılar.

Bu makalede şunları inceleyeceğiz:

* RAG mimarisinin temel bileşenlerini ve anket iş akışına neden uygun olduğunu ortaya koyacağız.  
* Procurize’ın mevcut süreçleri bozmadan bir RAG hattını nasıl gömebileceğini göstereceğiz.  
* Veri alımından yanıt doğrulamaya kadar adım‑adım bir uygulama kılavuzu sunacağız.  
* Bu yaklaşımın güvenlik, gizlilik ve uyumluluk açısından benzersiz dikkate alınması gereken yönlerini tartışacağız.  
* Ölçülebilir YG (ROI) ve sürekli öğrenme ile dinamik risk puanlaması gibi gelecekteki geliştirmelere ışık tutacağız.

---

## 1. Neden Klasik LLM’ler Güvenlik Anketleri İçin Yetersiz

| Sınırlama | Anket Otomasyonuna Etkisi |
|-----------|---------------------------|
| **Statik Bilgi Kesiti** | Yanıtlar, modelin eğitim anındaki bilgiyi yansıtır; en son politika revizyonlarını içermez. |
| **Halüsinasyon Riski** | LLM, gerçek belgelerde bulunmayan, ancak ikna edici görünen metinler üretebilir. |
| **Köken Eksikliği** | Denetçiler, doğrudan kaynağa (politikalar, **[SOC 2]** raporu, yapılandırma dosyası) bir bağlayıcı ister. |
| **Regülasyon Kısıtlamaları** | Bazı yargı bölgeleri, AI‑tarafından üretilen içeriğin doğrulanabilir ve değiştirilemez olmasını şart koşar. |

Bu eksiklikler, kuruluşları tekrar manuel kopyala‑yapıştır yöntemine yönlendirerek AI’ın vaat ettiği verimliliği ortadan kaldırır.

---

## 2. Retrieval‑Augmented Generation – Temel Kavramlar

Özünde RAG üç hareketli parçadan oluşur:

1. **Retriever** – Verilen bir sorgu için en ilgili belgeleri hızlıca ortaya çıkarabilen bir indeks (genellikle vektör‑tabanlı).  
2. **Üretici Model** – Alınan alıntılar ve orijinal anket sorusunu tüketerek tutarlı bir yanıt üreten LLM.  
3. **Füzyon Katmanı** – Kaç alıntının geçirileceği, sıralaması ve üretim sırasında nasıl ağırlıklandırılacağı gibi mantığı kontrol eder.

### 2.1 Kanıt Alımı için Vektör Mağazaları

Uyumlu her belgeyi (politikalar, denetim raporları, yapılandırma anlık görüntüleri) yoğun bir vektör uzayına gömmek, anlamsal benzerlik aramasını mümkün kılar. Popüler açık‑kaynak seçenekler:

* **FAISS** – Hızlı, GPU‑destekli; yüksek verimli hatlar için ideal.  
* **Milvus** – Bulut‑yerel, ölçülü indeksleme (sayısal + vektör) destekler.  
* **Pinecone** – Yönetilen hizmet; yerleşik güvenlik kontrolleriyle birlikte gelir.

### 2.2 RAG için Prompt Mühendisliği

İyi tasarlanmış bir prompt, LLM’in alınan bağlamı *otoritatif kanıt* olarak işlemesini sağlar.

```text
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.
```

Bu prompt, Procurize içinde şablonlaştırılarak her anket maddesine otomatik olarak ek kanıt eklenebilir.

---

## 3. RAG’ın Procurize Platformuna Entegrasyonu

Aşağıda, RAG’ın mevcut Procurize iş akışına nasıl oturduğunu gösteren yüksek‑seviye bir akış diyagramı bulunmaktadır.

```mermaid
graph LR
    A["Questionnaire Item"] --> B["RAG Service"]
    B --> C["Retriever (Vector Store)"]
    C --> D["Top‑k Evidence Snippets"]
    D --> E["LLM Generator"]
    E --> F["Draft Answer with Citations"]
    F --> G["Procurize Review UI"]
    G --> H["Final Answer Stored"]
    style B fill:#f9f,stroke:#333,stroke-width:2px
    style G fill:#bbf,stroke:#333,stroke-width:2px
```

**Önemli entegrasyon noktaları**

* **Tetikleyici** – Kullanıcı, yanıtlanmamış bir anket maddesini açtığında, Procurize soruyu RAG mikroservisine gönderir.  
* **Bağlam Zenginleştirme** – Retriever, tipik olarak 3‑5 en ilgili kanıt parçacığını (ör. `policy:ISO27001:5.2`) çeker ve sabit bir kimlik ile etiketler.  
* **Yanıt Taslağı** – LLM, `[policy:ISO27001:5.2]` gibi satır içi atıflar içeren bir taslak üretir.  
* **İnsan‑Ara‑Döngüsü** – İnceleme UI’sı atıfları vurgular, revize, onay ya da reddetme imkanı tanır. Onaylanan yanıtlar, köken meta verisiyle birlikte depolanır.

---

## 4. Adım‑Adım Uygulama Kılavuzu

### 4.1 Kanıt Korpusunuzu Hazırlayın

| Eylem | Araç | İpuçları |
|-------|------|----------|
| **Topla** | İç doküman depo (Confluence, SharePoint) | Uyumluluk artefaktları için tek bir tek kaynak klasörü oluşturun. |
| **Normalleştir** | Pandoc, özel scriptler | PDF, DOCX ve markdown’ı düz metne dönüştür; başlık/altbilgi satırlarını temizle. |
| **Etiketle** | YAML front‑matter, özel meta‑veri servisi | `type: policy`, `framework: SOC2`, `last_modified` gibi alanlar ekleyin. |
| **Sürümlendir** | Git LFS veya değişmez sürüm destekli DMS | Her parçacığın denetlenebilirliğini garanti altına alın. |

### 4.2 Vektör İndeksini Oluşturun

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

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

*Belirtilen vektör kimliklerini belge meta verisiyle ilişkilendiren bir NoSQL tablo tutun; bu sayede hızlı geri dönüş yapılabilir.*

### 4.3 RAG Servisini Yayınlayın

Tipik mikroservis yığını:

* **FastAPI** – Procurize’dan gelen HTTP isteklerini alır.  
* **FAISS** – İşlem içinde vektör araması (veya dışarıdan gRPC).  
* **OpenAI / Anthropic LLM** – Üretim uç noktası (veya kendi barındırdığınız LLaMA).  
* **Redis** – Son sorguları önbellekleirerek gecikmeyi azaltır.

```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 Procurize UI’ya Bağlayın

*Her anket alanının yanına “AI ile Oluştur” butonu ekleyin.*  
Butona tıklandığında:

1. RAG servisi yanıt verirken bir yükleme göstergesi gösterilir.  
2. Taslak yanıt metin kısmına yerleştirilir.  
3. Atıf rozetleri renderlanır; rozet üzerine tıklandığında kaynak belge önizlemesi açılır.  

### 4.5 Doğrulama ve Sürekli Öğrenme

| Konu | İlgili Eylem |
|------|--------------|
| **İnsan İncelemesi** – AI‑generated yanıtları yayınlamadan önce en az bir uyumluluk mühendisi onaylamalı. | İnceleme sonuçlarını “review outcomes” tablosunda saklayın. |
| **Geri Bildirim Döngüsü** – Onay/red sinyallerini toplayın ve “review outcomes” tablosuna kaydedin. | Periyodik olarak bu verilerle LLM’i ince ayar yaparak halüsinasyonu azaltın. |
| **Fine‑tuning** – Onaylanmış Soru‑Cevap çiftlerini kullanarak modeli yeniden eğitin. | Modelin zaman içinde sorulara daha tutarlı yanıt vermesini sağlar. |

---

## 5. Güvenlik ve Gizlilik Hususları

| Endişe | Azaltma Yöntemi |
|--------|------------------|
| **Veri Sızıntısı** – Gömülü vektörler hassas metin açığa çıkarabilir. | Yerel gömme modelleri kullanın; ham belgeleri üçüncü‑taraf API’lerine göndermeyin. |
| **Model Enjeksiyonu** – Kötü amaçlı sorgular LLM’i manipüle etmeye çalışabilir. | Girişleri temizleyin, sadece izin verilen soru kalıplarına izin verin. |
| **Köken Manipülasyonu** – Yanıt üretildikten sonra kaynak kimlikleri değiştirilir. | Kaynak kimliklerini değişmez bir defterde (AWS QLDB, blockchain vb.) saklayın. |
| **Regülasyon Denetimi** – AI çıktısının doğrulanabilir olması gerekir. | Her RAG isteğini zaman damgası, alınan parçacık hash’i ve LLM sürümüyle loglayın. |
| **Erişim Kontrolleri** – Yalnızca yetkili roller RAG’ı tetikleyebilmeli. | Procurize RBAC ile entegrasyon; AI üretim eylemleri için çok faktörlü kimlik doğrulama zorunlu. |

---

## 6. Etki Ölçümü

| Ölçüt | RAG öncesi | RAG sonrası | İyileşme |
|-------|-------------|--------------|----------|
| Ortalama yanıt taslak süresi | 12 dk | 1,8 dk | %85 azalma |
| Manuel atıf hataları | %27 | %4 | %85 azalma |
| İlk tur onay oranı (review) | %58 | %82 | +24 pp |
| Üç‑aylık uyumluluk maliyeti | $120 k | $78 k | $42 k tasarruf |

Bu rakamlar, RAG’ın sadece yanıt süresini hızlandırmakla kalmayıp, aynı zamanda yanıt kalitesini yükselterek denetim sürecindeki sürtünmeyi azalttığını gösteriyor.

---

## 7. Gelecek Genişletmeleri

1. **Dinamik Risk Puanlaması** – RAG’ı bir risk motoru ile birleştirerek kanıtın yaşı ve kritikliği üzerinden yanıt güven düzeyi hesaplayın.  
2. **Çok‑Modlu Alım** – Ekran görüntüleri, yapılandırma dosyaları ve Terraform durumu gibi görsel/veri tiplerini de alına ekleyin.  
3. **Kurumsal Bilgi Grafiği** – Alt kuruluşlar arasında kanıtları bağlayarak global politika tutarlılığı sağlayın.  
4. **Gerçek‑Zaman Politik Değişikliği Uyarıları** – Bir kaynak belge güncellendiğinde, etkilenen anket yanıtlarını otomatik olarak işaretleyin.  

---

## 8. Başlangıç Kontrol Listesi

- [ ] Tüm uyumluluk belgelerini tek bir, sürüm‑kontrol edilen depoya toplayın.  
- [ ] Vektör mağazası (FAISS, Milvus, Pinecone) seçin ve gömmeleri oluşturun.  
- [ ] RAG mikroservisini (FastAPI + LLM) kurum içi ağda yayınlayın.  
- [ ] Procurize UI’ya “AI ile Oluştur” butonu ve atıf gösterimini ekleyin.  
- [ ] İnsan inceleme ve geri bildirim politikası tanımlayın.  
- [ ] Düşük‑riskli bir anket setiyle pilot çalıştırın; inceleme geri bildirimlerine göre iyileştirin.  

Bu yol haritasını izleyerek, kuruluşunuz **reaktif, manuel** anket sürecinden **proaktif, AI‑destekli** bir operasyon modeline geçebilir; güvenilir kanıtları tek bir tıklamayla sunabilirsiniz.

---

## İlgili Bağlantılar

- [Retrieval‑Augmented Generation: The Next Wave of Enterprise AI](https://arxiv.org/abs/2005.11401)  
- [FAISS: Yoğun Vektör Benzerlik Arama ve Kümeleme](https://github.com/facebookresearch/faiss)  
- [OpenAI Cookbook – Retrieval‑Augmented Generation için Prompt Mühendisliği](https://github.com/openai/openai-cookbook)