# Penjanaan Augmented Retrieval Dikuasakan AI untuk Penyusunan Bukti Masa Nyata dalam Soalan Keselamatan

Questionnaires keselamatan, penilaian risiko vendor, dan audit pematuhan telah menjadi halangan harian bagi syarikat SaaS. Pencarian manual untuk polisi, laporan audit, dan snapshot konfigurasi bukan sahaja membazirkan jam kejuruteraan tetapi juga memperkenalkan risiko jawapan yang usang atau tidak konsisten.  

Retrieval‑Augmented Generation (RAG) menawarkan paradigma baru: bukannya bergantung sepenuhnya pada Model Bahasa Besar (LLM) statik, RAG **mengambil dokumen paling relevan pada masa pertanyaan** dan memberikannya kepada model untuk sintesis. Hasilnya adalah **jawapan masa nyata yang disokong bukti** yang boleh ditelusuri kembali kepada sumber asal, memenuhi keperluan kelajuan dan kebolehaudit.  

Dalam artikel ini kami akan:

* Menguraikan seni bina teras RAG dan mengapa ia sesuai dengan aliran kerja soal selidik.  
* Menunjukkan bagaimana Procurize dapat menyematkan aliran RAG tanpa mengganggu proses sedia ada.  
* Memberi panduan pelaksanaan langkah demi langkah, dari pengambilan data hingga pengesahan jawapan.  
* Membincangkan pertimbangan keselamatan, privasi, dan pematuhan yang unik kepada pendekatan ini.  
* Menonjolkan ROI yang dapat diukur dan peningkatan masa depan seperti pembelajaran berterusan dan penilaian risiko dinamik.  

---

## 1. Mengapa LLM Klasik Tidak Memadai untuk Soalan Keselamatan

| Kekangan | Kesan ke atas Automasi Soalan Selidik |
|------------|--------------------------------------|
| **Keterbatasan Pengetahuan Statik** | Jawapan mencerminkan tangkapan latihan model, bukan revisi polisi terkini. |
| **Risiko Halusinasi** | LLM mungkin menghasilkan teks yang kelihatan masuk akal tetapi tiada asas dalam dokumentasi sebenar. |
| **Kekurangan Asal Usul** | Pengaudit menuntut pautan langsung kepada artifak sumber (polisi, laporan **[SOC 2]**, fail konfigurasi). |
| **Kekangan Peraturan** | Beberapa bidang kuasa memerlukan kandungan yang dihasilkan AI dapat disahkan dan tidak dapat diubah. |

Jurang ini mendorong organisasi kembali kepada penyalinan manual, membatalkan janjian kecekapan AI.

---

## 2. Retrieval‑Augmented Generation – Konsep Teras

Pada dasarnya, RAG terdiri daripada tiga komponen bergerak:

1. **Retriever** – Indeks (sering berasaskan vektor) yang dapat dengan cepat menampilkan dokumen paling relevan bagi pertanyaan tertentu.  
2. **Model Generatif** – LLM yang memproses petikan yang diambil dan prompt soal selidik asal untuk menghasilkan jawapan yang koheren.  
3. **Lapisan Fusi** – Logik yang mengawal berapa banyak petikan yang dihantar, bagaimana susunannya, dan cara menimbangnya semasa penjanaan.  

### 2.1 Kedai Vektor untuk Penarikan Bukti

Embedding setiap aset pematuhan (polisi, laporan audit, snapshot konfigurasi) ke dalam ruang vektor padat memungkinkan pencarian kesamaan semantik. Pilihan sumber terbuka yang popular termasuk:

* **FAISS** – Cepat, dipercepat GPU, ideal untuk paip berkelajuan tinggi.  
* **Milvus** – Berasaskan awan, menyokong indeks hibrid (skalar + vektor).  
* **Pinecone** – Perkhidmatan terurus dengan kawalan keselamatan terbina dalam.  

### 2.2 Kejuruteraan Prompt untuk RAG

Prompt yang dirancang dengan baik memastikan LLM memperlakukan konteks yang diambil sebagai *bukti berotoriti*.

```text
Anda adalah penganalisis pematuhan yang menjawab soal selidik keselamatan. Gunakan HANYA petikan bukti yang disediakan. Rujuk setiap petikan dengan ID sumbernya. Jika jawapan tidak dapat disokong sepenuhnya, tandakan untuk semakan manual.
```

---

## 3. Mengintegrasikan RAG ke dalam Platform Procurize

Berikut ialah diagram aliran aras tinggi yang menunjukkan di mana RAG sesuai dalam aliran kerja Procurize sedia ada.

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

**Titik integrasi utama**

* **Pemicu** – Apabila pengguna membuka item soal selidik yang belum dijawab, Procurize menghantar teks soalan kepada mikroservis RAG.  
* **Pengayaan Konteks** – Retriever menarik sehingga *k* (biasanya 3‑5) bahagian bukti paling relevan, masing-masing ditandai dengan pengenal tetap (contoh, `policy:ISO27001:5.2`).  
* **Draf Jawapan** – LLM menghasilkan draf yang termasuk sitasi inline seperti `[policy:ISO27001:5.2]`.  
* **Manusia dalam Gelung** – UI Semakan menyorot sitasi, membenarkan penyemak mengedit, meluluskan, atau menolak. Jawapan yang diluluskan disimpan bersama metadata asal usul.

---

## 4. Panduan Pelaksanaan Langkah demi Langkah

### 4.1 Sediakan Korpus Bukti Anda

| Tindakan | Alat | Tip |
|----------|------|-----|
| Kumpulkan | Repositori dokumen dalaman (Confluence, SharePoint) | Kekalkan folder sumber‑kebenaran tunggal untuk aset pematuhan. |
| Normalisasi | Pandoc, skrip khusus | Tukar PDF, DOCX, dan markdown ke teks biasa; buang tajuk/kaki. |
| Tag | YAML front‑matter, perkhidmatan metadata khusus | Tambah medan seperti `type: policy`, `framework: SOC2`, `last_modified`. |
| Versi | Git LFS atau DMS dengan versi tidak boleh diubah | Menjamin kebolehaudit setiap petikan. |

### 4.2 Bangun Indeks Vektor

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

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

### 4.3 Sebarkan Mikroservis RAG

Susunan mikroservis tipikal:

* **FastAPI** – Mengendalikan panggilan HTTP daripada Procurize.  
* **FAISS** – Carian vektor dalam proses (atau luaran dengan gRPC).  
* **OpenAI / Anthropic LLM** – Titik akhir penjanaan (atau LLaMA yang dihos sendiri).  
* **Redis** – Menyimpan cache pertanyaan terkini untuk mengurangkan kelewatan.  

```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 Sambungkan ke UI Procurize

*Tambah butang “Jana dengan AI” di sebelah setiap medan soal selidik.*

1. Tunjukkan ikon pemualan semasa perkhidmatan RAG memberi respons.  
2. Isikan kotak teks jawapan dengan draf.  
3. Paparkan lencana sitasi; mengklik lencana membuka pratonton dokumen sumber.  

### 4.5 Pengesahan & Pembelajaran Berterusan

* **Semakan Manusia** – Memerlukan sekurang‑kurangnya satu jurutera pematuhan meluluskan setiap jawapan yang dihasilkan AI sebelum diterbitkan.  
* **Gelung Maklum Balas** – Tangkap isyarat kelulusan/penolakan dan simpan dalam jadual “hasil semakan”.  
* **Penalaan Halus** – Secara berkala menala LLM pada pasangan soal‑jawab yang diluluskan untuk mengurangkan halusinasi dari masa ke masa.  

---

## 5. Pertimbangan Keselamatan & Privasi

| Kebimbangan | Mitigasi |
|-------------|----------|
| **Kebocoran Data** – Embedding boleh mendedahkan teks sensitif. | Gunakan model embedding *tempatan*; elakkan menghantar dokumen mentah kepada API pihak ketiga. |
| **Serangan Suntikan Model** – Pertanyaan jahat yang cuba memperdaya LLM. | Membersihkan input, menguatkuasakan senarai putih bagi pola soalan yang dibenarkan. |
| **Penipuan Asal Usul** – Mengubah ID sumber selepas penjanaan jawapan. | Simpan ID sumber dalam lejar tidak boleh ubah (contoh, AWS QLDB atau blockchain). |
| **Audit Peraturan** – Perlu membuktikan penggunaan AI. | Log setiap permintaan RAG dengan cap masa, hash petikan yang diambil, dan versi LLM. |
| **Kawalan Akses** – Hanya peranan yang dibenarkan seharusnya memicu RAG. | Integrasikan dengan RBAC Procurize; memerlukan MFA untuk tindakan penjanaan AI. |

---

## 6. Mengukur Impak

Percubaan yang dijalankan dengan firma SaaS bersaiz sederhana (≈150 jurutera) menghasilkan metrik berikut selama tempoh 6 minggu:

| Metrik | Sebelum RAG | Selepas RAG | Peningkatan |
|--------|--------------|--------------|--------------|
| Masa draf jawapan purata | 12 min | 1.8 min | Pengurangan 85 % |
| Ralat sitasi manual | 27 % | 4 % | Pengurangan 85 % |
| Kadar kelulusan penyemak (lulus pertama) | 58 % | 82 % | +24 pp |
| Kos pematuhan suku tahunan | $120k | $78k | Penjimatan $42k |

Angka-angka ini menunjukkan bagaimana RAG bukan sahaja mempercepatkan masa respons tetapi juga meningkatkan kualiti jawapan, mengurangkan gesaan audit.

---

## 7. Penambahan Masa Depan

* **Penilaian Risiko Dinamik** – Menggabungkan RAG dengan enjin risiko yang menyesuaikan keyakinan jawapan berdasarkan usia bukti.  
* **Penarikan Multi‑Modul** – Sertakan tangkapan skrin, fail konfigurasi, dan bahkan keadaan Terraform sebagai aset yang boleh diambil.  
* **Graf Pengetahuan Lintas Organisasi** – Menghubungkan bukti merentasi anak syarikat, membolehkan konsistensi polisi global.  
* **Amaran Perbezaan Polisi Masa Nyata** – Apabila dokumen sumber berubah, secara automatik menandakan jawapan soal selidik yang terkesan untuk disemak.  

---

## 8. Senarai Semak Memulakan

- [ ] Kumpulkan semua aset pematuhan ke dalam repositori tunggal yang dikawal versi.  
- [ ] Pilih kedai vektor (FAISS, Milvus, Pinecone) dan hasilkan embedding.  
- [ ] Sebarkan mikroservis RAG (FastAPI + LLM) di belakang rangkaian dalaman anda.  
- [ ] Perluas UI Procurize dengan “Jana dengan AI” dan paparan sitasi.  
- [ ] Takrifkan polisi tadbir urus untuk semakan manusia dan penangkapan maklum balas.  
- [ ] Lakukan percubaan pada set soal selidik risiko rendah; ulangi berdasarkan maklum balas penyemak.  

Dengan mengikuti peta jalan ini, organisasi anda dapat beralih daripada proses soal selidik **reaktif, manual** kepada operasi **proaktif, diperkaya AI** yang menyediakan bukti boleh dipercayai dengan satu klik.

## Lihat Juga
- [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)