
# شواهد متنی مبتنی بر هوش مصنوعی برای پرسش‌نامه‌های امنیتی

پرسش‌نامه‌های امنیتی درهای هر معامله B2B SaaS را می‌گشاید. خریداران شواهد ملموس—بخش‌های سیاست، گزارش‌های حسابرسی، اسکرین شات‌های پیکربندی—را می‌خواهند تا ثابت کنند وضعیت امنیتی فروشنده با ریسک‌پذیری آن‌ها مطابقت دارد. به‌طور سنتی، تیم‌های امنیت، حقوقی و مهندسی در میان انبوهی از PDFها، پوشه‌های SharePoint و سیستم‌های تیکت‌گذاری به‌دنبال دقیقاً همان سندی می‌گردند که هر پاسخ را پشتیبانی کند.

نتیجه **زمان پاسخگویی طولانی، شواهد ناهماهنگ و ریسک بالای خطای انسانی** است.

ورود **تولید افزوده بازیابی (RAG)**—یک معماری ترکیبی هوش مصنوعی که توانایی تولید مدل‌های زبان بزرگ (LLM) را با دقت بازیابی اسناد مبتنی بر بردار ترکیب می‌کند. با ترکیب RAG و پلتفرم Procurize، تیم‌ها می‌توانند به‌صورت خودکار مرتبط‌ترین شواهد انطباق را ***در حین نوشتن هر پاسخ*** ظاهر کنند و جستجوی دستی را به یک فرایند زمان‑واقعی، داده‑محور تبدیل کنند.

در ادامه، ساختار فنی RAG را باز می‌کنیم، یک خط لوله آماده‌به‌کار با Mermaid نشان می‌دهیم و راهنمایی‌های عملی برای سازمان‌های SaaS که قصد خودکارسازی شواهد متنی دارند، ارائه می‌دهیم.

---

## 1. چرا شواهد متنی هم‌اکنون اهمیت دارند

### 1.1 فشارهای قانونی
قوانین مانند **[SOC 2](https://secureframe.com/hub/soc-2/what-is-soc-2)**، **[ISO 27001](https://www.iso.org/standard/27001)**، **[GDPR](https://gdpr.eu/)** و چارچوب‌های نوظهور **ریسک هوش مصنوعی** به‌صراحت شواهد قابل استنادی برای هر ادعای کنترلی می‌طلبند. حسابرسان دیگر با «سیاست وجود دارد» راضی نیستند؛ آن‌ها یک **لینک قابل ردیابی** به نسخه دقیق بررسی‑شده می‌خواهند.

### 1 2 3 4 5 6 7 8 9 10  
**آمار**: بر اساس نظرسنجی گارتنر 2024، 68 ٪ خریداران B2B «شواهد ناقص یا منسوخ» را به‌عنوان دلیل اصلی برای به‌تاخیر انداختن قرارداد ذکر کردند.

### 1.2 انتظارات خریداران
خریداران مدرن فروشندگان را بر اساس **امتیاز اعتماد** ارزیابی می‌کنند که کامل بودن پرسش‌نامه، تازگی شواهد و زمان پاسخ را جمع‑آوری می‌کند. یک موتور شواهد خودکار مستقیماً این امتیاز را بالا می‌برد.

### 1.3 کارایی داخلی
هر دقیقه‌ای که یک مهندس امنیت برای جستجوی PDF صرف می‌کند، دقیقه‌ای است که بهتر است برای مدل‌سازی تهدید یا بررسی معماری صرف شود. خودکارسازی بازیابی شواهد ظرفیت را برای کارهای امنیتی با ارزش‌تر آزاد می‌کند.

---

## 2. تولید افزوده بازیابی – مفهوم اصلی

RAG در دو مرحله عمل می‌کند:

1. **بازیابی** – سیستم یک پرسش به زبان طبیعی (مثلاً «گزارش جدیدترین SOC 2 Type II را نشان بده») را به یک بردار جاسازی تبدیل می‌کند و در **پایگاه داده برداری** نزدیک‌ترین اسناد را جستجو می‌کند.
2. **تولید** – یک LLM اسناد بازیابی‑شده را به عنوان **متن‑زمینه** دریافت می‌کند و پاسخی مختصر و غنی از ارجاع تولید می‌کند.

زیبایی RAG این است که خروجی تولیدی را در **مواد منبع قابل تأیید** ریشه‌دار می‌کند و توهمات (hallucinations) را حذف می‌کند—در محتوای انطباق یک نیاز بحرانی.

### 2.1 جاسازی‌ها و مخازن برداری
- **مدل‌های جاسازی** (مانند `text-embedding-ada-002` اوپن‌ای‌آی) متن را به بردارهای با‑بعدی با ابعاد بالا تبدیل می‌کنند.
- **مخازن برداری** (مانند Pinecone, Milvus, Weaviate) این بردارها را ایندکس می‌کنند و امکان جستجوهای شباهت زیر‑ثانیه‌ای در میان میلیون‌ها صفحه را فراهم می‌سازند.

### 2.2 مهندسی پرامپت برای شواهد
یک پرامپت خوب به LLM می‌گوید:
- هر منبع را با یک لینک مارک‌داون یا شناسه مرجع استناد کند.
- هنگام نقل قول از بخش‌های سیاست، عین کلام اصلی را حفظ کند.
- هر محتوای مبهم یا منسوخ را برای بازبینی انسانی علامت بزند.

نمونهٔ بخشی از پرامپت:

```
You are an AI compliance assistant. Answer the following questionnaire item using ONLY the supplied documents. Cite each source using the format [DocID#Section].
If a required document is missing, respond with "Document not found – please upload."
```

---

## 3. گردش کار انتها‑به‑انتها در Procurize

در زیر نمایی بصری از جریان پرسش‌نامه مجهز به RAG در اکوسیستم Procurize آورده شده است.

```mermaid
graph LR
    A["کاربر پرسش‌نامه را ثبت می‌کند"] --> B["تولید‌کننده پرامپت AI"]
    B --> C["بازیاب (پایگاه داده برداری)"]
    C --> D["اسناد مرتبط"]
    D --> E["تولید‌کننده (LLM)"]
    E --> F["پاسخ با شواهد"]
    F --> G["بازبینی و انتشار"]
    G --> H["لاگ حسابرسی و نسخه‌بندی"]
```

**گام‌های کلیدی توضیح داده شد**

| گام | توضیح |
|------|-------------|
| **A – کاربر پرسش‌نامه را ثبت می‌کند** | تیم امنیت یک پرسش‌نامه جدید در Procurize ایجاد می‌کند و چارچوب‌های هدف (SOC 2، ISO 27001 و ...) را انتخاب می‌کند. |
| **B – تولید‌کننده پرامپت AI** | برای هر سؤال، Procurize پرامپتی می‌سازد که شامل متن سؤال و هر بخش موجودی از پاسخ است. |
| **C – بازیاب** | پرامپت جاسازی می‌شود و در مخزن برداری که تمام آثار انطباق بارگذاری‌شده (سیاست‌ها، گزارش‌های حسابرسی، لاگ‌های بررسی کد) را دارد جستجو می‌شود. |
| **D – اسناد مرتبط** | 3‑5 سند برتر (معمولاً) فراخوانی می‌شود، متادیتا اضافه می‌شود و به LLM ارسال می‌شود. |
| **E – تولید‌کننده** | LLM یک پاسخ مختصر تولید می‌کند و به‌صورت خودکار استنادات (مثلاً `[SOC2-2024#A.5.2]`) را وارد می‌کند. |
| **F – پاسخ با شواهد** | پاسخ تولید شده در رابط کاربری پرسش‌نامه ظاهر می‌شود و آمادهٔ ویرایش یا تأیید است. |
| **G – بازبینی و انتشار** | بازبینان اختصاصی صحت را تأیید، یادداشت‌های تکمیلی اضافه و پاسخ را قفل می‌کنند. |
| **H – لاگ حسابرسی و نسخه‌بندی** | هر پاسخ تولید شده توسط AI همراه با یک snapshot از منبع ذخیره می‌شود تا یک ردپای غیرقابل دستکاری داشته باشد. |

---

## 4. پیاده‌سازی RAG در محیط شما

### 4.1 آماده‌سازی مجموعه اسناد
1. **جمع‌آوری** تمام آثار انطباق: سیاست‌ها، گزارش‌های اسکن آسیب‌پذیری، پایه‌های پیکربندی، نظرات بررسی کد، لاگ‌های خطوط CI/CD.  
2. **استانداردسازی** فرمت فایل‌ها (PDF → متن، Markdown، JSON). برای PDFهای اسکن‌شده OCR اجرا کنید.  
3. **تقسیم** اسناد به بخش‌های 500‑800 کلمه‌ای برای بهبود مرتبط‌سازی بازیابی.  
4. **اضافه‌کردن متادیتا**: نوع سند، نسخه، تاریخ ایجاد، چارچوب انطباق، و یک `DocID` منحصر‑به‑فرد.

### 4.2 ساخت ایندکس برداری
```python
from openai import OpenAI
from pinecone import PineconeClient

client = PineconeClient(api_key="YOUR_API_KEY")
index = client.Index("compliance-evidence")

def embed_and_upsert(chunk, metadata):
    embedding = OpenAI.embeddings.create(
        model="text-embedding-ada-002",
        input=chunk
    ).data[0].embedding
    index.upsert(vectors=[(metadata["DocID"], embedding, metadata)])

# Loop through all chunks
for chunk, meta in corpus:
    embed_and_upsert(chunk, meta)
```
*این اسکریپت یک بار به‌ازای هر به‌روزرسانی فصلی سیاست اجرا می‌شود؛ بارگذاری‌های افزایشی ایندکس را به‌روز نگه می‌دارند.*

### 4.3 ادغام با Procurize
- **Webhook**: Procurize یک رویداد `question_created` صادر می‌کند.  
- **تابع Lambda**: رویداد را دریافت می‌کند، پرامپت را می‌سازد، بازیاب را فراخوانی می‌کند، سپس پاسخ را از طریق `ChatCompletion` اوپن‌ای‌آی می‌گیرد.  
- **Hook پاسخ**: پاسخ تولید شده را از طریق API REST Procurize به پرسش‌نامه باز می‌گرداند.

```python
def handle_question(event):
    question = event["question_text"]
    prompt = build_prompt(question)
    relevant = retrieve_documents(prompt, top_k=4)
    answer = generate_answer(prompt, relevant)
    post_answer(event["question_id"], answer)
```

### 4.4 اقدامات «انسان‑در‑حلقه» (HITL)
- **امتیاز اطمینان**: LLM امتیاز احتمالی برمی‌گرداند؛ اگر زیر 0.85 باشد بازبینی اجباری می‌شود.  
- **قفل نسخه**: پس از تأیید پاسخ، snapshotهای منبع منجمد می‌شود؛ هر تغییر بعدی سیاست نسخه جدیدی می‌سازد نه بازنویسی.  
- **ردپای حسابرسی**: هر تعامل AI با زمان‑مهر، شناسه کاربر و جزئیات درخواست لاگ می‌شود.

---

## 5. سنجش اثرات

| معیار | قبل (دستی) | پس از پیاده‌سازی RAG | درصد بهبود |
|--------|------------|----------------------|------------|
| زمان متوسط تکمیل پرسش‌نامه | ۱۴ روز | ۳ روز | ۷۸ % |
| تکمیل استنادات شواهد | ۶۸ % | ۹۶ % | ۴۱ % |
| نرخ کار دوباره بازبین | ۲۲ % | ۷ % | ۶۸ % |
| نرخ قبول حسابرسی در اولین بار | ۸۴ % | ۹۷ % | ۱۵ % |

*مطالعه موردی*: **AcmeCloud** در Q2 2025 RAG را در Procurize به‌کار گرفت. آن‌ها کاهش **۷۰ %** در زمان پاسخ متوسط و افزایش **۳۰ %** در امتیاز اعتماد مشتریان بزرگ خود گزارش کردند.

---

## 6. بهترین روش‌ها و اشتباهات رایج

### 6.1 مجموعه اسناد را تمیز نگه دارید
- **اسناد منسوخ را حذف کنید** (مثلاً گواهینامه‌های منقضی). آن‌ها را به عنوان `archived` برچسب بزنید تا بازیاب اولویت کمتری داشته باشند.  
- **اصطلاحات را همسان کنید** تا تطبیق شباهت بهبود یابد.

### 6.2 دیسیپلین پرامپت
- از پرامپت‌های بیش‌ازحد عمومی که ممکن است بخش‌های نامرتبطی را بازیابی کنند، خودداری کنید.  
- از **نمونه‌های چند‑Shot** در پرامپت استفاده کنید تا فرمت استنادات مورد نظر را به LLM نشان دهید.

### 6.3 امنیت و حریم‌خصوصی
- جاسازی‌ها را در مخازن برداری **ایزوله در VPC** ذخیره کنید.  
- کلیدهای API را رمزنگاری کنید و از دسترسی مبتنی بر نقش برای تابع Lambda استفاده کنید.  
- مطمئن شوید که پردازش هر اطلاعات شخصی قابل شناسایی (PII) در اسناد مطابق GDPR باشد.

### 6.4 یادگیری مستمر
- ویرایش‌های بازبین‌ها را به‌عنوان **جفت‌های بازخورد** (سؤال، پاسخ اصلاح‌شده) ضبط کنید و به‌طور دوره‌ای یک LLM مخصوص دامنه را فاین‑تیون کنید.  
- پس از هر به‌روزرسانی سیاست مخزن برداری را به‌روز کنید تا دانش گراف همواره جاری بماند.

---

## 7. مسیرهای آینده

1. **ادغام گراف دانش داینامیک** – هر بخش شواهد را به یک گره در گراف دانش سازمان متصل کنید تا مسیریابی سلسله‌مراتبی (سیاست → کنترل → زیر‑کنترل) ممکن شود.  
2. **بازیابی چندرسانه‌ای** – فراتر از متن به تصاویر (مانند نمودارهای معماری) با استفاده از جاسازی‌های CLIP بپردازید تا AI بتواند اسکرین شات‌ها را نیز استناد کند.  
3. **هشدارهای تغییر سیاست زمان واقعی** – وقتی یک نسخه سیاست به‌روزرسانی شد، به‌صورت خودکار تمام پاسخ‌های باز پرسش‌نامه را برای بازنگری پرچم بزنید.  
4. **امتیازدهی ریسک فروشنده بدون‌نمونه (Zero‑Shot)** – شواهد استخراج‑شده را همراه با داده‌های تهدید خارجی ترکیب کنید تا به‌صورت خودکار امتیاز ریسک برای هر پاسخ فروشنده تولید شود.

---

## 8. امروز شروع کنید

1. **حسابرسی** مخزن انطباق فعلی خود را انجام داده و نقاط فاصله را شناسایی کنید.  
2. **پایلوت** یک خط لوله RAG روی یک پرسش‌نامه با ارزش بالا (مثلاً SOC 2 Type II) اجرا کنید.  
3. **ادغام** با Procurize با استفاده از قالب وب‌هوک ارائه‌شده انجام دهید.  
4. **اندازه‌گیری** بهبود KPIهای جدول بالا کنید و بر پایه نتایج به‌روزرسانی کنید.

با به‌کارگیری تولید افزوده بازیابی، شرکت‌های SaaS یک فرآیند سنتی دستی، پرخطا و زمان‌بر را به **یک موتور مقیاس‌پذیر، قابل حسابرسی و اعتمادساز** تبدیل می‌کنند—یک حصن رقابتی در بازاری که به‌تدریج به انطباق می‌گراید.